felipe Sun Jun 29 12:40:22 2008 UTC Modified files: (Branch: PHP_5_3) /php-src/ext/sysvsem sysvsem.c Log: - New parameter parsing API - Added arginfo http://cvs.php.net/viewvc.cgi/php-src/ext/sysvsem/sysvsem.c?r1=1.51.2.3.2.2.2.2&r2=1.51.2.3.2.2.2.3&diff_format=u Index: php-src/ext/sysvsem/sysvsem.c diff -u php-src/ext/sysvsem/sysvsem.c:1.51.2.3.2.2.2.2 php-src/ext/sysvsem/sysvsem.c:1.51.2.3.2.2.2.3 --- php-src/ext/sysvsem/sysvsem.c:1.51.2.3.2.2.2.2 Mon Dec 31 07:17:16 2007 +++ php-src/ext/sysvsem/sysvsem.c Sun Jun 29 12:40:22 2008 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: sysvsem.c,v 1.51.2.3.2.2.2.2 2007/12/31 07:17:16 sebastian Exp $ */ +/* $Id: sysvsem.c,v 1.51.2.3.2.2.2.3 2008/06/29 12:40:22 felipe Exp $ */ /* Latest update build anc tested on Linux 2.2.14 * @@ -56,13 +56,38 @@ #endif +/* {{{ arginfo */ +static +ZEND_BEGIN_ARG_INFO_EX(arginfo_sem_get, 0, 0, 1) + ZEND_ARG_INFO(0, key) + ZEND_ARG_INFO(0, max_acquire) + ZEND_ARG_INFO(0, perm) + ZEND_ARG_INFO(0, auto_release) +ZEND_END_ARG_INFO() + +static +ZEND_BEGIN_ARG_INFO_EX(arginfo_sem_acquire, 0, 0, 1) + ZEND_ARG_INFO(0, sem_identifier) +ZEND_END_ARG_INFO() + +static +ZEND_BEGIN_ARG_INFO_EX(arginfo_sem_release, 0, 0, 1) + ZEND_ARG_INFO(0, sem_identifier) +ZEND_END_ARG_INFO() + +static +ZEND_BEGIN_ARG_INFO_EX(arginfo_sem_remove, 0, 0, 1) + ZEND_ARG_INFO(0, sem_identifier) +ZEND_END_ARG_INFO() +/* }}} */ + /* {{{ sysvsem_functions[] */ const zend_function_entry sysvsem_functions[] = { - PHP_FE(sem_get, NULL) - PHP_FE(sem_acquire, NULL) - PHP_FE(sem_release, NULL) - PHP_FE(sem_remove, NULL) + PHP_FE(sem_get, arginfo_sem_get) + PHP_FE(sem_acquire, arginfo_sem_acquire) + PHP_FE(sem_release, arginfo_sem_release) + PHP_FE(sem_remove, arginfo_sem_remove) {NULL, NULL, NULL} }; /* }}} */ @@ -276,25 +301,18 @@ */ static void php_sysvsem_semop(INTERNAL_FUNCTION_PARAMETERS, int acquire) { - zval **arg_id; + zval *arg_id; sysvsem_sem *sem_ptr; struct sembuf sop; - switch(ZEND_NUM_ARGS()) { - case 1: - if (zend_get_parameters_ex(1, &arg_id)==FAILURE) { - RETURN_FALSE; - } - break; - default: - WRONG_PARAM_COUNT; - break; + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &arg_id) == FAILURE) { + return; } - ZEND_FETCH_RESOURCE(sem_ptr, sysvsem_sem *, arg_id, -1, "SysV semaphore", php_sysvsem_module.le_sem); + ZEND_FETCH_RESOURCE(sem_ptr, sysvsem_sem *, &arg_id, -1, "SysV semaphore", php_sysvsem_module.le_sem); if (!acquire && sem_ptr->count == 0) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "SysV semaphore %ld (key 0x%x) is not currently acquired", Z_LVAL_PP(arg_id), sem_ptr->key); + php_error_docref(NULL TSRMLS_CC, E_WARNING, "SysV semaphore %ld (key 0x%x) is not currently acquired", Z_LVAL_P(arg_id), sem_ptr->key); RETURN_FALSE; } @@ -340,18 +358,18 @@ PHP_FUNCTION(sem_remove) { - zval **arg_id; + zval *arg_id; sysvsem_sem *sem_ptr; #if HAVE_SEMUN union semun un; struct semid_ds buf; #endif - if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &arg_id) == FAILURE) { - WRONG_PARAM_COUNT; + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &arg_id) == FAILURE) { + return; } - ZEND_FETCH_RESOURCE(sem_ptr, sysvsem_sem *, arg_id, -1, "SysV semaphore", php_sysvsem_module.le_sem); + ZEND_FETCH_RESOURCE(sem_ptr, sysvsem_sem *, &arg_id, -1, "SysV semaphore", php_sysvsem_module.le_sem); #if HAVE_SEMUN un.buf = &buf; @@ -359,7 +377,7 @@ #else if (semctl(sem_ptr->semid, 0, IPC_STAT, NULL) < 0) { #endif - php_error_docref(NULL TSRMLS_CC, E_WARNING, "SysV semaphore %ld does not (any longer) exist", Z_LVAL_PP(arg_id)); + php_error_docref(NULL TSRMLS_CC, E_WARNING, "SysV semaphore %ld does not (any longer) exist", Z_LVAL_P(arg_id)); RETURN_FALSE; } @@ -368,7 +386,7 @@ #else if (semctl(sem_ptr->semid, 0, IPC_RMID, NULL) < 0) { #endif - php_error_docref(NULL TSRMLS_CC, E_WARNING, "failed for SysV sempphore %ld: %s", Z_LVAL_PP(arg_id), strerror(errno)); + php_error_docref(NULL TSRMLS_CC, E_WARNING, "failed for SysV sempphore %ld: %s", Z_LVAL_P(arg_id), strerror(errno)); RETURN_FALSE; }
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php