[72149] trunk/base/src/package1.0/portunarchive.tcl

jmr at macports.org jmr at macports.org
Mon Oct 4 20:55:27 PDT 2010


Revision: 72149
          http://trac.macports.org/changeset/72149
Author:   jmr at macports.org
Date:     2010-10-04 20:55:25 -0700 (Mon, 04 Oct 2010)
Log Message:
-----------
reacquire root privileges for unarchive, and check euid directly instead of env(USER)

Modified Paths:
--------------
    trunk/base/src/package1.0/portunarchive.tcl

Modified: trunk/base/src/package1.0/portunarchive.tcl
===================================================================
--- trunk/base/src/package1.0/portunarchive.tcl	2010-10-05 03:55:22 UTC (rev 72148)
+++ trunk/base/src/package1.0/portunarchive.tcl	2010-10-05 03:55:25 UTC (rev 72149)
@@ -137,6 +137,11 @@
     global UI_PREFIX name version revision portvariants
     global unarchive.type
 
+    if {[getuid] == 0 && [geteuid] != 0} {
+        # run as root if possible so file ownership can be preserved
+        elevateToRoot "unarchive"
+    }
+
     ui_msg "$UI_PREFIX [format [msgcat::mc "Unpacking ${unarchive.type} archive for %s %s_%s%s"] $name $version $revision $portvariants]"
 
     return 0
@@ -162,7 +167,7 @@
             if {[catch {set pax [findBinary $pax ${portutil::autoconf::pax_path}]} errmsg] == 0} {
                 ui_debug "Using $pax"
                 set unarchive.cmd "$pax"
-                if {[info exists env(USER)] && $env(USER) == "root"} {
+                if {[geteuid] == 0} {
                     set unarchive.pre_args {-r -v -p e}
                 } else {
                     set unarchive.pre_args {-r -v -p p}
@@ -239,7 +244,7 @@
             if {[catch {set unzip [findBinary $unzip ${portutil::autoconf::unzip_path}]} errmsg] == 0} {
                 ui_debug "Using $unzip"
                 set unarchive.cmd "$unzip"
-                if {[info exists env(USER)] && $env(USER) == "root"} {
+                if {[geteuid] == 0} {
                     set unarchive.pre_args {-oX}
                 } else {
                     set unarchive.pre_args {-o}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macports-changes/attachments/20101004/aed2bc93/attachment.html>


More information about the macports-changes mailing list