[101981] trunk/base/src/pextlib1.0/uid.c

jeremyhu at macports.org jeremyhu at macports.org
Wed Jan 23 12:33:27 PST 2013


Revision: 101981
          https://trac.macports.org/changeset/101981
Author:   jeremyhu at macports.org
Date:     2013-01-23 12:33:27 -0800 (Wed, 23 Jan 2013)
Log Message:
-----------
Explain set{e,}{g,u}id failures

Modified Paths:
--------------
    trunk/base/src/pextlib1.0/uid.c

Modified: trunk/base/src/pextlib1.0/uid.c
===================================================================
--- trunk/base/src/pextlib1.0/uid.c	2013-01-23 19:06:10 UTC (rev 101980)
+++ trunk/base/src/pextlib1.0/uid.c	2013-01-23 20:33:27 UTC (rev 101981)
@@ -19,6 +19,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
+#include <errno.h>
 
 #include <tcl.h>
 
@@ -107,8 +108,9 @@
 		
 	/* set the uid */
 	if (0 != setuid(uid)) {
-        Tcl_Obj *result = Tcl_NewStringObj("could not set uid to ", -1);
-        Tcl_AppendObjToObj(result, objv[1]);
+        char buffer[128];
+        snprintf(buffer, sizeof(buffer), "could not set uid to %ld: %d %s", uid, errno, strerror(errno));
+        Tcl_Obj *result = Tcl_NewStringObj(buffer, -1);
         Tcl_SetObjResult(interp, result);
         return TCL_ERROR;
     }
@@ -137,8 +139,9 @@
 		
 	/* set the euid */
 	if (0 != seteuid(uid)) {
-        Tcl_Obj *result = Tcl_NewStringObj("could not set effective uid to ", -1);
-        Tcl_AppendObjToObj(result, objv[1]);
+        char buffer[128];
+        snprintf(buffer, sizeof(buffer), "could not set effective uid to %ld: %d %s", uid, errno, strerror(errno));
+        Tcl_Obj *result = Tcl_NewStringObj(buffer, -1);
         Tcl_SetObjResult(interp, result);
         return TCL_ERROR;
     }
@@ -163,8 +166,9 @@
     }
     
     if (0 != setgid(gid)) {
-        Tcl_Obj *result = Tcl_NewStringObj("could not set gid to ", -1);
-        Tcl_AppendObjToObj(result, objv[1]);
+        char buffer[128];
+        snprintf(buffer, sizeof(buffer), "could not set gid to %ld: %d %s", gid, errno, strerror(errno));
+        Tcl_Obj *result = Tcl_NewStringObj(buffer, -1);
         Tcl_SetObjResult(interp, result);
         return TCL_ERROR;
     }
@@ -189,8 +193,9 @@
     }
     
     if (0 != setegid(gid)) {
-        Tcl_Obj *result = Tcl_NewStringObj("could not set effective gid to ", -1);
-        Tcl_AppendObjToObj(result, objv[1]);
+        char buffer[128];
+        snprintf(buffer, sizeof(buffer), "could not set effective gid to %ld: %d %s", gid, errno, strerror(errno));
+        Tcl_Obj *result = Tcl_NewStringObj(buffer, -1);
         Tcl_SetObjResult(interp, result);
         return TCL_ERROR;
     }
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macports-changes/attachments/20130123/2e3933c4/attachment.html>


More information about the macports-changes mailing list