summaryrefslogtreecommitdiffstats
path: root/perl-install/common.pm
diff options
context:
space:
mode:
authorThierry Vignaud <tvignaud@mandriva.org>2003-01-27 08:12:38 +0000
committerThierry Vignaud <tvignaud@mandriva.org>2003-01-27 08:12:38 +0000
commit45f18adacd2637793a07bbb60283eeb2a811fc52 (patch)
tree1baceb57d652deb8f0d33c369fb820c87bbd5f32 /perl-install/common.pm
parent3730934e00cf265b0d2fcd40f3b1d7d3fee7fdc8 (diff)
downloaddrakx-backup-do-not-use-45f18adacd2637793a07bbb60283eeb2a811fc52.tar
drakx-backup-do-not-use-45f18adacd2637793a07bbb60283eeb2a811fc52.tar.gz
drakx-backup-do-not-use-45f18adacd2637793a07bbb60283eeb2a811fc52.tar.bz2
drakx-backup-do-not-use-45f18adacd2637793a07bbb60283eeb2a811fc52.tar.xz
drakx-backup-do-not-use-45f18adacd2637793a07bbb60283eeb2a811fc52.zip
strip authentification out of interactive->vnew into common.pm
This enable apps that still use gtk+-1.2 via my_gtk to still work when they only need interactive->vnew('su') just to get root capabilities. Indeed, interactive load ugtk if it has access to the X server, which make my_gtk and ugtk fight for the cpu forever... which is bad imho... drakfloppy and net_monitor were converted to use it and are now usuable again ("i leave ... again" commit). it would also enable to complete spec 64 by enabling rpmdrake to use kdesu under kde and consolehelper under gnome. rpmdrake is indeed the last program to not behave like the running desktop to get root capability. unless someone is against this, i'll convert the mcc and all other gtk+ pure tools to do not use anymore interactive just to get root capability. btw, i fixed the infamous SECTOR_SIZE warning...
Diffstat (limited to 'perl-install/common.pm')
-rw-r--r--perl-install/common.pm21
1 files changed, 19 insertions, 2 deletions
diff --git a/perl-install/common.pm b/perl-install/common.pm
index 339e0aa00..d605676a6 100644
--- a/perl-install/common.pm
+++ b/perl-install/common.pm
@@ -9,7 +9,7 @@ use vars qw(@ISA @EXPORT $SECTORSIZE);
@ISA = qw(Exporter);
# no need to export ``_''
-@EXPORT = qw($SECTORSIZE N N_ translate untranslate formatXiB removeXiBSuffix formatTime setVirtual makedev unmakedev salt set_permissions files_exist set_alternative mandrake_release);
+@EXPORT = qw($SECTORSIZE N N_ translate untranslate formatXiB removeXiBSuffix formatTime setVirtual makedev unmakedev salt set_permissions files_exist set_alternative mandrake_release require_root_capability);
# perl_checker: RE-EXPORT-ALL
push @EXPORT, @MDK::Common::EXPORT;
@@ -18,7 +18,7 @@ push @EXPORT, @MDK::Common::EXPORT;
#-#####################################################################################
#- Globals
#-#####################################################################################
-$SECTORSIZE = 512;
+our $SECTORSIZE = 512;
#-#####################################################################################
#- Functions
@@ -243,4 +243,21 @@ sub mandrake_release {
chomp_(cat_("/etc/mandrake-release"))
}
+sub require_root_capability {
+ return unless $>; # we're already root
+ if ($ENV{DISPLAY} && system('/usr/X11R6/bin/xtest') == 0) {
+ if (fuzzy_pidofs(qr/\bkwin\b/) > 0) {
+ exec("kdesu", "-c", "$0 @ARGV") or die N("kdesu missing");
+ } else {
+ exec { 'consolehelper' } $0, @ARGV or die N("consolehelper missing");
+
+ }
+ } else {
+ exec { 'consolehelper' } $0, @ARGV or die N("consolehelper missing");
+ }
+
+ # still not root ?
+ die "you must be root to run this program" if $>;
+}
+
1;