From 3b7be889d89076b1bdddee1ff46d980112ff1902 Mon Sep 17 00:00:00 2001 From: Ilia Alshanetsky Date: Mon, 19 Jun 2006 02:19:13 +0000 Subject: [PATCH] Added posix_initgroups() function. --- NEWS | 1 + ext/posix/config.m4 | 2 +- ext/posix/php_posix.h | 4 ++++ ext/posix/posix.c | 19 +++++++++++++++++++ 4 files changed, 25 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index ac2b2943c3..1ed2d21639 100644 --- 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) diff --git a/ext/posix/config.m4 b/ext/posix/config.m4 index 6b95375d88..b6b1cf7c1a 100644 --- a/ext/posix/config.m4 +++ b/ext/posix/config.m4 @@ -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 diff --git a/ext/posix/php_posix.h b/ext/posix/php_posix.h index 70982918a8..ddaa401a47 100644 --- a/ext/posix/php_posix.h +++ b/ext/posix/php_posix.h @@ -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); diff --git a/ext/posix/posix.c b/ext/posix/posix.c index bb1935c435..715f482e8d 100644 --- a/ext/posix/posix.c +++ b/ext/posix/posix.c @@ -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 -- 2.40.0