mike Sat Oct 28 08:48:00 2006 UTC
Modified files:
/php-src/ext/sysvsem php_sysvsem.h sysvsem.c
/php-src/ext/sysvsem/tests sysv.phpt
Log:
- upgrade to current parameter parsing API
- mark functions unicode safe
http://cvs.php.net/viewvc.cgi/php-src/ext/sysvsem/php_sysvsem.h?r1=1.17&r2=1.18&diff_format=u
Index: php-src/ext/sysvsem/php_sysvsem.h
diff -u php-src/ext/sysvsem/php_sysvsem.h:1.17
php-src/ext/sysvsem/php_sysvsem.h:1.18
--- php-src/ext/sysvsem/php_sysvsem.h:1.17 Sun Jan 1 13:09:56 2006
+++ php-src/ext/sysvsem/php_sysvsem.h Sat Oct 28 08:48:00 2006
@@ -16,7 +16,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: php_sysvsem.h,v 1.17 2006/01/01 13:09:56 sniper Exp $ */
+/* $Id: php_sysvsem.h,v 1.18 2006/10/28 08:48:00 mike Exp $ */
#ifndef PHP_SYSVSEM_H
#define PHP_SYSVSEM_H
@@ -26,6 +26,8 @@
extern zend_module_entry sysvsem_module_entry;
#define sysvsem_module_ptr &sysvsem_module_entry
+#define PHP_SEM_RSRC_NAME "sysvsem"
+
PHP_MINIT_FUNCTION(sysvsem);
PHP_FUNCTION(sem_get);
PHP_FUNCTION(sem_acquire);
http://cvs.php.net/viewvc.cgi/php-src/ext/sysvsem/sysvsem.c?r1=1.54&r2=1.55&diff_format=u
Index: php-src/ext/sysvsem/sysvsem.c
diff -u php-src/ext/sysvsem/sysvsem.c:1.54 php-src/ext/sysvsem/sysvsem.c:1.55
--- php-src/ext/sysvsem/sysvsem.c:1.54 Sun Jan 1 13:09:56 2006
+++ php-src/ext/sysvsem/sysvsem.c Sat Oct 28 08:48:00 2006
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: sysvsem.c,v 1.54 2006/01/01 13:09:56 sniper Exp $ */
+/* $Id: sysvsem.c,v 1.55 2006/10/28 08:48:00 mike Exp $ */
/* Latest update build anc tested on Linux 2.2.14
*
@@ -90,6 +90,8 @@
THREAD_LS sysvsem_module php_sysvsem_module;
+#define SEM_FETCH_RESOURCE(sem_ptr, z_ptr) ZEND_FETCH_RESOURCE(sem_ptr,
sysvsem_sem *, &z_ptr, -1, PHP_SEM_RSRC_NAME, php_sysvsem_module.le_sem)
+
/* Semaphore functions using System V semaphores. Each semaphore
* actually consists of three semaphores allocated as a unit under the
* same key. Semaphore 0 (SYSVSEM_SEM) is the actual semaphore, it is
@@ -154,7 +156,7 @@
*/
PHP_MINIT_FUNCTION(sysvsem)
{
- php_sysvsem_module.le_sem =
zend_register_list_destructors_ex(release_sysvsem_sem, NULL, "sysvsem",
module_number);
+ php_sysvsem_module.le_sem =
zend_register_list_destructors_ex(release_sysvsem_sem, NULL, PHP_SEM_RSRC_NAME,
module_number);
return SUCCESS;
}
/* }}} */
@@ -165,7 +167,7 @@
#undef SETVAL_WANTS_PTR
#endif
-/* {{{ proto resource sem_get(int key [, int max_acquire [, int perm [, int
auto_release]])
+/* {{{ proto resource sem_get(int key [, int max_acquire [, int perm [, int
auto_release]]) U
Return an id for the semaphore with the given key, and allow max_acquire
(default 1) processes to acquire it simultaneously */
PHP_FUNCTION(sem_get)
{
@@ -279,25 +281,17 @@
*/
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 (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r",
&arg_id)) {
+ RETURN_FALSE;
}
-
- ZEND_FETCH_RESOURCE(sem_ptr, sysvsem_sem *, arg_id, -1, "SysV
semaphore", php_sysvsem_module.le_sem);
+ SEM_FETCH_RESOURCE(sem_ptr, arg_id);
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;
}
@@ -317,7 +311,7 @@
}
/* }}} */
-/* {{{ proto bool sem_acquire(resource id)
+/* {{{ proto bool sem_acquire(resource id) U
Acquires the semaphore with the given id, blocking if necessary */
PHP_FUNCTION(sem_acquire)
{
@@ -325,7 +319,7 @@
}
/* }}} */
-/* {{{ proto bool sem_release(resource id)
+/* {{{ proto bool sem_release(resource id) U
Releases the semaphore with the given id */
PHP_FUNCTION(sem_release)
{
@@ -333,7 +327,7 @@
}
/* }}} */
-/* {{{ proto bool sem_remove(resource id)
+/* {{{ proto bool sem_remove(resource id) U
Removes semaphore from Unix systems */
/*
@@ -343,18 +337,17 @@
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 (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r",
&arg_id)) {
+ RETURN_FALSE
}
-
- ZEND_FETCH_RESOURCE(sem_ptr, sysvsem_sem *, arg_id, -1, "SysV
semaphore", php_sysvsem_module.le_sem);
+ SEM_FETCH_RESOURCE(sem_ptr, arg_id);
#if HAVE_SEMUN
un.buf = &buf;
@@ -362,7 +355,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;
}
@@ -371,7 +364,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
semaphore %ld: %s", Z_LVAL_P(arg_id), strerror(errno));
RETURN_FALSE;
}
http://cvs.php.net/viewvc.cgi/php-src/ext/sysvsem/tests/sysv.phpt?r1=1.3&r2=1.4&diff_format=u
Index: php-src/ext/sysvsem/tests/sysv.phpt
diff -u php-src/ext/sysvsem/tests/sysv.phpt:1.3
php-src/ext/sysvsem/tests/sysv.phpt:1.4
--- php-src/ext/sysvsem/tests/sysv.phpt:1.3 Fri Oct 27 01:08:16 2006
+++ php-src/ext/sysvsem/tests/sysv.phpt Sat Oct 28 08:48:00 2006
@@ -101,7 +101,7 @@
Start.
Got semaphore Resource id #%i.
Success aquire semaphore Resource id #%i.
-Success to attach shared memory : %i.
+Success to attach shared memory : Resource id #%i.
Write var1 to shared memory.
Write var2 to shared memory.
Read var1=Variable 1.
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php