[25436] branches/dp2mp-move/base/src/pextlib1.0
source_changes at macosforge.org
source_changes at macosforge.org
Mon May 21 22:26:49 PDT 2007
Revision: 25436
http://trac.macosforge.org/projects/macports/changeset/25436
Author: jmpp at macports.org
Date: 2007-05-21 22:26:48 -0700 (Mon, 21 May 2007)
Log Message:
-----------
Merging eridius' r25140: Add setgid/getgid and related functions.
Modified Paths:
--------------
branches/dp2mp-move/base/src/pextlib1.0/Pextlib.c
branches/dp2mp-move/base/src/pextlib1.0/uid.c
branches/dp2mp-move/base/src/pextlib1.0/uid.h
Modified: branches/dp2mp-move/base/src/pextlib1.0/Pextlib.c
===================================================================
--- branches/dp2mp-move/base/src/pextlib1.0/Pextlib.c 2007-05-22 05:25:16 UTC (rev 25435)
+++ branches/dp2mp-move/base/src/pextlib1.0/Pextlib.c 2007-05-22 05:26:48 UTC (rev 25436)
@@ -1155,10 +1155,16 @@
Tcl_CreateObjCommand(interp, "getuid", getuidCmd, NULL, NULL);
Tcl_CreateObjCommand(interp, "geteuid", geteuidCmd, NULL, NULL);
+ Tcl_CreateObjCommand(interp, "getgid", getuidCmd, NULL, NULL);
+ Tcl_CreateObjCommand(interp, "getegid", geteuidCmd, NULL, NULL);
Tcl_CreateObjCommand(interp, "setuid", setuidCmd, NULL, NULL);
Tcl_CreateObjCommand(interp, "seteuid", seteuidCmd, NULL, NULL);
+ Tcl_CreateObjCommand(interp, "setgid", setgidCmd, NULL, NULL);
+ Tcl_CreateObjCommand(interp, "setegid", setegidCmd, NULL, NULL);
Tcl_CreateObjCommand(interp, "name_to_uid", name_to_uidCmd, NULL, NULL);
Tcl_CreateObjCommand(interp, "uid_to_name", uid_to_nameCmd, NULL, NULL);
+ Tcl_CreateObjCommand(interp, "name_to_gid", name_to_gidCmd, NULL, NULL);
+ Tcl_CreateObjCommand(interp, "gid_to_name", gid_to_nameCmd, NULL, NULL);
if (Tcl_PkgProvide(interp, "Pextlib", "1.0") != TCL_OK)
return TCL_ERROR;
Modified: branches/dp2mp-move/base/src/pextlib1.0/uid.c
===================================================================
--- branches/dp2mp-move/base/src/pextlib1.0/uid.c 2007-05-22 05:25:16 UTC (rev 25435)
+++ branches/dp2mp-move/base/src/pextlib1.0/uid.c 2007-05-22 05:26:48 UTC (rev 25436)
@@ -9,6 +9,7 @@
*/
#include "uid.h"
+#include "grp.h"
#if HAVE_CONFIG_H
#include <config.h>
@@ -40,7 +41,6 @@
#include <tcl.h>
-
/*
getuid
@@ -48,20 +48,16 @@
*/
int getuidCmd(ClientData clientData UNUSED, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])
{
- Tcl_Obj *tcl_result;
-
/* Check the arg count */
if (objc != 1) {
Tcl_WrongNumArgs(interp, 1, objv, NULL);
return TCL_ERROR;
}
- tcl_result = Tcl_NewLongObj(getuid());
- Tcl_SetObjResult(interp, tcl_result);
+ Tcl_SetObjResult(interp, Tcl_NewLongObj(getuid()));
return TCL_OK;
}
-
/*
geteuid
@@ -69,21 +65,45 @@
*/
int geteuidCmd(ClientData clientData UNUSED, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])
{
- Tcl_Obj *tcl_result;
-
/* Check the arg count */
if (objc != 1) {
Tcl_WrongNumArgs(interp, 1, objv, NULL);
return TCL_ERROR;
}
- tcl_result = Tcl_NewLongObj(geteuid());
- Tcl_SetObjResult(interp, tcl_result);
+ Tcl_SetObjResult(interp, Tcl_NewLongObj(geteuid()));
return TCL_OK;
}
+/*
+ getgid
+*/
+int getgidCmd(ClientData clientData UNUSED, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])
+{
+ if (objc != 1) {
+ Tcl_WrongNumArgs(interp, 1, objv, NULL);
+ return TCL_ERROR;
+ }
+
+ Tcl_SetObjResult(interp, Tcl_NewLongObj(getgid()));
+ return TCL_OK;
+}
/*
+ getegid
+*/
+int getegidCmd(ClientData clientData UNUSED, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])
+{
+ if (objc != 1) {
+ Tcl_WrongNumArgs(interp, 1, objv, NULL);
+ return TCL_ERROR;
+ }
+
+ Tcl_SetObjResult(interp, Tcl_NewLongObj(getegid()));
+ return TCL_OK;
+}
+
+/*
setuid
synopsis: setuid uid
@@ -113,8 +133,6 @@
return TCL_OK;
}
-
-
/*
seteuid
@@ -145,7 +163,57 @@
return TCL_OK;
}
+/*
+ setgid
+*/
+int setgidCmd(ClientData clientData UNUSED, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])
+{
+ long gid;
+
+ if (objc != 2) {
+ Tcl_WrongNumArgs(interp, 1, objv, "gid");
+ return TCL_ERROR;
+ }
+
+ if (TCL_OK != Tcl_GetLongFromObj(interp, objv[1], &gid)) {
+ return TCL_ERROR;
+ }
+
+ if (0 != setgid(gid)) {
+ Tcl_Obj *result = Tcl_NewStringObj("could not set gid to ", -1);
+ Tcl_AppendObjToObj(result, objv[1]);
+ Tcl_SetObjResult(interp, result);
+ return TCL_ERROR;
+ }
+
+ return TCL_OK;
+}
+/*
+ setegid
+*/
+int setegidCmd(ClientData clientData UNUSED, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])
+{
+ long gid;
+
+ if (objc != 2) {
+ Tcl_WrongNumArgs(interp, 1, objv, "gid");
+ return TCL_ERROR;
+ }
+
+ if (TCL_OK != Tcl_GetLongFromObj(interp, objv[1], &gid)) {
+ return TCL_ERROR;
+ }
+
+ if (0 != setegid(gid)) {
+ Tcl_Obj *result = Tcl_NewStringObj("could not set effective gid to ", -1);
+ Tcl_AppendObjToObj(result, objv[1]);
+ Tcl_SetObjResult(interp, result);
+ return TCL_ERROR;
+ }
+
+ return TCL_OK;
+}
/*
name_to_uid
@@ -179,8 +247,6 @@
return TCL_OK;
}
-
-
/*
uid_to_name
@@ -209,5 +275,52 @@
return TCL_OK;
}
+/*
+ name_to_gid
+*/
+int name_to_gidCmd(ClientData clientData UNUSED, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])
+{
+ struct group *grent;
+ char *name;
+
+ if (objc != 2) {
+ Tcl_WrongNumArgs(interp, 1, objv, "name");
+ return TCL_ERROR;
+ }
+
+ name = Tcl_GetString(objv[1]);
+ if (name == NULL || !*name)
+ return TCL_ERROR;
+
+ grent = getgrnam(name);
+
+ if (grent == NULL)
+ Tcl_SetObjResult(interp, Tcl_NewIntObj(-1));
+ else
+ Tcl_SetObjResult(interp, Tcl_NewIntObj(grent->gr_gid));
+
+ return TCL_OK;
+}
-
+/*
+ gid_to_name
+*/
+int gid_to_nameCmd(ClientData clientData UNUSED, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])
+{
+ long gid;
+ struct group *grent;
+
+ if (objc != 2) {
+ Tcl_WrongNumArgs(interp, 1, objv, "gid");
+ return TCL_ERROR;
+ }
+
+ if (TCL_OK != Tcl_GetLongFromObj(interp, objv[1], &gid))
+ return TCL_ERROR;
+
+ grent = getgrgid(gid);
+ if (grent != NULL)
+ Tcl_SetResult(interp, grent->gr_name, TCL_STATIC);
+
+ return TCL_OK;
+}
Modified: branches/dp2mp-move/base/src/pextlib1.0/uid.h
===================================================================
--- branches/dp2mp-move/base/src/pextlib1.0/uid.h 2007-05-22 05:25:16 UTC (rev 25435)
+++ branches/dp2mp-move/base/src/pextlib1.0/uid.h 2007-05-22 05:26:48 UTC (rev 25436)
@@ -37,10 +37,16 @@
int getuidCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]);
int geteuidCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]);
+int getgidCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]);
+int getegidCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]);
int setuidCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]);
int seteuidCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]);
+int setgidCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]);
+int setegidCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]);
int name_to_uidCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]);
int uid_to_nameCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]);
+int name_to_gidCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]);
+int gid_to_nameCmd(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]);
#endif
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/macports-changes/attachments/20070521/b544926e/attachment.html
More information about the macports-changes
mailing list