]> granicus.if.org Git - php/commitdiff
Added posix_initgroups() function.
authorIlia Alshanetsky <iliaa@php.net>
Mon, 19 Jun 2006 02:19:13 +0000 (02:19 +0000)
committerIlia Alshanetsky <iliaa@php.net>
Mon, 19 Jun 2006 02:19:13 +0000 (02:19 +0000)
NEWS
ext/posix/config.m4
ext/posix/php_posix.h
ext/posix/posix.c

diff --git a/NEWS b/NEWS
index ac2b2943c365bfec1ae2457835162c7064feb121..1ed2d21639c5122ff4bdd76b9eefbde6a848c55e 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -43,6 +43,7 @@ PHP                                                                        NEWS
   . Added readInnerXML(), readOuterXML(), readString(), setSchema(). (2.6.20+)
   . Changed to passing libxml options when loading reader.
 
+- Added posix_initgroups() function. (Ilia)
 - Added allow_url_include ini directive to complement allow_url_fopen. (Rasmus)
 - Added automatic module globals management. (Dmitry)
 - Added RFC2397 (data: stream) support. (Marcus)
index 6b95375d8849d8747d38c6ec8c9732750caf588e..b6b1cf7c1a237a3cc075021470cda816f1ebc44d 100644 (file)
@@ -11,5 +11,5 @@ if test "$PHP_POSIX" = "yes"; then
 
   AC_CHECK_HEADERS(sys/mkdev.h)
 
-  AC_CHECK_FUNCS(seteuid setegid setsid getsid setpgid getpgid ctermid mkfifo mknod getrlimit getlogin getgroups makedev)
+  AC_CHECK_FUNCS(seteuid setegid setsid getsid setpgid getpgid ctermid mkfifo mknod getrlimit getlogin getgroups makedev initgroups)
 fi
index 70982918a8b8239abef90ff01dd6e07747e16610..ddaa401a47927c3d274f5fc2ca8a83444646e03d 100644 (file)
@@ -110,6 +110,10 @@ PHP_FUNCTION(posix_getpwuid);
 PHP_FUNCTION(posix_getrlimit);
 #endif
 
+#ifdef HAVE_INITGROUPS
+PHP_FUNCTION(posix_initgroups);
+#endif
+
 PHP_FUNCTION(posix_get_last_error);
 PHP_FUNCTION(posix_strerror);
 
index bb1935c4357ca98708ee284c2a2395e49ccef6b9..715f482e8d3cfb68549b5ea501f176dc5171ee34 100644 (file)
@@ -134,6 +134,9 @@ zend_function_entry posix_functions[] = {
        PHP_FE(posix_get_last_error,                                    NULL)
        PHP_FALIAS(posix_errno, posix_get_last_error,   NULL)
        PHP_FE(posix_strerror,                                                  NULL)
+#ifdef HAVE_INITGROUPS
+       PHP_FE(posix_initgroups,        NULL)
+#endif
 
        {NULL, NULL, NULL}
 };
@@ -1056,6 +1059,22 @@ PHP_FUNCTION(posix_strerror)
 
 #endif
 
+/* {{{ proto bool initgroups(string name, int base_group_id)
+   Calculate the group access list for the user specified in name. */
+PHP_FUNCTION(posix_initgroups)
+{
+       long basegid;
+       char *name;
+       int name_len;
+
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sl", &name, &name_len, &basegid) == FAILURE) {
+               RETURN_FALSE;
+       }
+
+       RETURN_BOOL(!initgroups((const char *)name, basegid));
+}
+/* }}} */
+
 /*
  * Local variables:
  * tab-width: 4