Index: ext/sysvshm/php_sysvshm.h =================================================================== RCS file: /repository/php-src/ext/sysvshm/php_sysvshm.h,v retrieving revision 1.17.2.1 diff -u -p -d -r1.17.2.1 php_sysvshm.h --- ext/sysvshm/php_sysvshm.h 1 Jan 2006 12:50:16 -0000 1.17.2.1 +++ ext/sysvshm/php_sysvshm.h 19 Jul 2006 12:17:49 -0000 @@ -62,6 +62,7 @@ PHP_FUNCTION(shm_detach); PHP_FUNCTION(shm_remove); PHP_FUNCTION(shm_put_var); PHP_FUNCTION(shm_get_var); +PHP_FUNCTION(shm_has_var); PHP_FUNCTION(shm_remove_var); extern sysvshm_module php_sysvshm; Index: ext/sysvshm/sysvshm.c =================================================================== RCS file: /repository/php-src/ext/sysvshm/sysvshm.c,v retrieving revision 1.70.2.2.2.1 diff -u -p -d -r1.70.2.2.2.1 sysvshm.c --- ext/sysvshm/sysvshm.c 29 Jun 2006 09:03:27 -0000 1.70.2.2.2.1 +++ ext/sysvshm/sysvshm.c 19 Jul 2006 12:17:50 -0000 @@ -46,6 +46,7 @@ zend_function_entry sysvshm_functions[] PHP_FE(shm_detach, NULL) PHP_FE(shm_put_var, NULL) PHP_FE(shm_get_var, NULL) + PHP_FE(shm_has_var, NULL) PHP_FE(shm_remove_var, NULL) {NULL, NULL, NULL} }; @@ -276,6 +277,24 @@ PHP_FUNCTION(shm_put_var) } /* }}} */ +/* {{{ proto bool shm_has_var(int id, int variable_key) + Checks whether variable_key exists */ +PHP_FUNCTION(shm_has_var) +{ + zval *rsrc; + long key; + sysvshm_shm *shmptr = NULL; + + if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &rsrc, &key)) { + RETURN_FALSE; + } + + ZEND_FETCH_RESOURCE(shmptr, sysvshm_shm *, &rsrc, -1, "sysvshm", php_sysvshm.le_shm); + + RETURN_BOOL(php_check_shm_data(shmptr->ptr, key) >= 0); +} +/* }}} */ + /* {{{ proto mixed shm_get_var(int id, int variable_key) Returns a variable from shared memory */ PHP_FUNCTION(shm_get_var)