From: Ilia Alshanetsky Date: Mon, 19 Jun 2006 02:19:45 +0000 (+0000) Subject: MFB: Added posix_initgroups() function. X-Git-Tag: RELEASE_1_0_0RC1~2701 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4396986fc788d97ec6c883ab3bdec57ab1882537;p=php MFB: Added posix_initgroups() function. --- 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 73436d208d..28921033d4 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} }; @@ -1050,6 +1053,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