From e303647058a32ee0dcf5e627c593c9d4838d4cdf Mon Sep 17 00:00:00 2001 From: Sascha Schumann Date: Fri, 24 Sep 1999 19:15:17 +0000 Subject: [PATCH] Use new Zend API and some minor cleanup. --- ChangeLog | 2 + ext/gettext/gettext.c | 66 ++++++------- ext/sysvsem/sysvsem.c | 40 ++++---- ext/sysvshm/php3_sysvshm.h | 14 +-- ext/sysvshm/sysvshm.c | 195 +++++++++++++++---------------------- 5 files changed, 139 insertions(+), 178 deletions(-) diff --git a/ChangeLog b/ChangeLog index 778a0d758e..898f5a18a2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,8 @@ PHP 4.0 CHANGE LOG ChangeLog ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ?? ?? 1999, Version 4.0 Beta 3 +- Updated session, dba, mhash, mcrypt, sysvshm, sysvsem, gettext modules to use + the new high-performance Zend function API (Sascha) - Extended var_dump to handle resource type somewhat (Andrey) - Updated WDDX to use the new high-performance Zend function API (Andrey) - Updated XML to use the new high-performance Zend function API. (Thies) diff --git a/ext/gettext/gettext.c b/ext/gettext/gettext.c index 6eb422daf1..25679d3fe4 100644 --- a/ext/gettext/gettext.c +++ b/ext/gettext/gettext.c @@ -47,18 +47,18 @@ PHP_MINFO_FUNCTION(gettext) PHP_FUNCTION(textdomain) { - pval *domain; + pval **domain; char *domain_name, *retval; + char *val; - if (ARG_COUNT(ht) != 1 || getParameters(ht, 1, &domain) == FAILURE) { + if (ARG_COUNT(ht) != 1 || getParametersEx(1, &domain) == FAILURE) { WRONG_PARAM_COUNT; } - convert_to_string(domain); + convert_to_string_ex(domain); - if (strcmp(domain->value.str.val, "") - && strcmp(domain->value.str.val, "0")) - { - domain_name = domain->value.str.val; + val = (*domain)->value.str.val; + if (strcmp(val, "") && strcmp(val, "0")) { + domain_name = val; } else { domain_name = NULL; } @@ -70,80 +70,80 @@ PHP_FUNCTION(textdomain) PHP_FUNCTION(gettext) { - pval *msgid; + pval **msgid; char *msgstr; - if (ARG_COUNT(ht) != 1 || getParameters(ht, 1, &msgid) == FAILURE) { + if (ARG_COUNT(ht) != 1 || getParametersEx(1, &msgid) == FAILURE) { WRONG_PARAM_COUNT; } - convert_to_string(msgid); + convert_to_string_ex(msgid); - msgstr = gettext(msgid->value.str.val); + msgstr = gettext((*msgid)->value.str.val); RETURN_STRING(msgstr, 1); } PHP_FUNCTION(dgettext) { - pval *domain_name, *msgid; + pval **domain_name, **msgid; char *msgstr; if (ARG_COUNT(ht) != 2 - || getParameters(ht, 2, &domain_name, &msgid) == FAILURE) + || getParametersEx(2, &domain_name, &msgid) == FAILURE) { WRONG_PARAM_COUNT; } - convert_to_string(domain_name); - convert_to_string(msgid); + convert_to_string_ex(domain_name); + convert_to_string_ex(msgid); - msgstr = dgettext(domain_name->value.str.val, msgid->value.str.val); + msgstr = dgettext((*domain_name)->value.str.val, (*msgid)->value.str.val); RETURN_STRING(msgstr, 1); } PHP_FUNCTION(dcgettext) { - pval *domain_name, *msgid, *category; + pval **domain_name, **msgid, **category; char *msgstr; if (ARG_COUNT(ht) != 3 - || getParameters(ht, 3, &domain_name, &msgid, &category) == FAILURE) + || getParametersEx(3, &domain_name, &msgid, &category) == FAILURE) { WRONG_PARAM_COUNT; } - convert_to_string(domain_name); - convert_to_string(msgid); - convert_to_long(category); + convert_to_string_ex(domain_name); + convert_to_string_ex(msgid); + convert_to_long_ex(category); - msgstr = dcgettext(domain_name->value.str.val, - msgid->value.str.val, - category->value.lval); + msgstr = dcgettext((*domain_name)->value.str.val, + (*msgid)->value.str.val, + (*category)->value.lval); RETURN_STRING(msgstr, 1); } PHP_FUNCTION(bindtextdomain) { - pval *domain_name, *dir; + pval **domain_name, **dir; char *retval, *dir_name; + char *val; if (ARG_COUNT(ht) != 2 - || getParameters(ht, 2, &domain_name, &dir) == FAILURE) + || getParametersEx(2, &domain_name, &dir) == FAILURE) { WRONG_PARAM_COUNT; } - convert_to_string(domain_name); - convert_to_string(dir); + convert_to_string_ex(domain_name); + convert_to_string_ex(dir); - if (strcmp(dir->value.str.val, "") - && strcmp(dir->value.str.val, "0")) - { - dir_name = dir->value.str.val; + val = (*dir)->value.str.val; + if (strcmp(val, "") && strcmp(val, "0")) { + dir_name = val; } else { dir_name = NULL; } - retval = bindtextdomain(domain_name->value.str.val, dir_name); + retval = bindtextdomain((*domain_name)->value.str.val, dir_name); RETURN_STRING(retval, 1); } diff --git a/ext/sysvsem/sysvsem.c b/ext/sysvsem/sysvsem.c index a15bf6bcdb..b4f69ba501 100644 --- a/ext/sysvsem/sysvsem.c +++ b/ext/sysvsem/sysvsem.c @@ -131,7 +131,7 @@ int php3_minit_sysvsem(INIT_FUNC_ARGS) Return an id for the semaphore with the given key, and allow max_acquire (default 1) processes to acquire it simultaneously. */ PHP_FUNCTION(sysvsem_get) { - pval *arg_key, *arg_max_acquire, *arg_perm; + pval **arg_key, **arg_max_acquire, **arg_perm; int key, max_acquire, perm; int semid; struct sembuf sop[3]; @@ -146,31 +146,31 @@ PHP_FUNCTION(sysvsem_get) switch (ARG_COUNT(ht)) { case 1: - if (getParameters(ht, 1, &arg_key)==FAILURE) { + if (getParametersEx(1, &arg_key)==FAILURE) { RETURN_FALSE; } - convert_to_long(arg_key); - key = (int)arg_key->value.lval; + convert_to_long_ex(arg_key); + key = (int)(*arg_key)->value.lval; break; case 2: - if (getParameters(ht, 2, &arg_key, &arg_max_acquire)==FAILURE) { + if (getParametersEx(2, &arg_key, &arg_max_acquire)==FAILURE) { RETURN_FALSE; } - convert_to_long(arg_key); - key = (int)arg_key->value.lval; - convert_to_long(arg_max_acquire); - max_acquire = (int)arg_max_acquire->value.lval; + convert_to_long_ex(arg_key); + key = (int)(*arg_key)->value.lval; + convert_to_long_ex(arg_max_acquire); + max_acquire = (int)(*arg_max_acquire)->value.lval; break; case 3: - if (getParameters(ht, 3, &arg_key, &arg_max_acquire, &arg_perm)==FAILURE) { + if (getParametersEx(3, &arg_key, &arg_max_acquire, &arg_perm)==FAILURE) { RETURN_FALSE; } - convert_to_long(arg_key); - key = (int)arg_key->value.lval; - convert_to_long(arg_max_acquire); - max_acquire = (int)arg_max_acquire->value.lval; - convert_to_long(arg_perm); - perm = (int)arg_perm->value.lval; + convert_to_long_ex(arg_key); + convert_to_long_ex(arg_max_acquire); + convert_to_long_ex(arg_perm); + key = (int)(*arg_key)->value.lval; + max_acquire = (int)(*arg_max_acquire)->value.lval; + perm = (int)(*arg_perm)->value.lval; break; default: WRONG_PARAM_COUNT; @@ -281,18 +281,18 @@ PHP_FUNCTION(sysvsem_get) static void _php3_sysvsem_semop(INTERNAL_FUNCTION_PARAMETERS, int acquire) { - pval *arg_id; + pval **arg_id; int id, type; sysvsem_sem *sem_ptr; struct sembuf sop; switch(ARG_COUNT(ht)) { case 1: - if (getParameters(ht, 1, &arg_id)==FAILURE) { + if (getParametersEx(1, &arg_id)==FAILURE) { RETURN_FALSE; } - convert_to_long(arg_id); - id = (int)arg_id->value.lval; + convert_to_long_ex(arg_id); + id = (int)(*arg_id)->value.lval; break; default: WRONG_PARAM_COUNT; diff --git a/ext/sysvshm/php3_sysvshm.h b/ext/sysvshm/php3_sysvshm.h index 53f9492a6c..bd7538b577 100644 --- a/ext/sysvshm/php3_sysvshm.h +++ b/ext/sysvshm/php3_sysvshm.h @@ -79,13 +79,13 @@ typedef struct { -extern int php3_minit_sysvshm(INIT_FUNC_ARGS); -PHP_FUNCTION(sysvshm_attach); -PHP_FUNCTION(sysvshm_detach); -PHP_FUNCTION(sysvshm_remove); -PHP_FUNCTION(sysvshm_put_var); -PHP_FUNCTION(sysvshm_get_var); -PHP_FUNCTION(sysvshm_remove_var); +PHP_MINIT_FUNCTION(sysvshm); +PHP_FUNCTION(shm_attach); +PHP_FUNCTION(shm_detach); +PHP_FUNCTION(shm_remove); +PHP_FUNCTION(shm_put_var); +PHP_FUNCTION(shm_get_var); +PHP_FUNCTION(shm_remove_var); extern int php3int_put_shmdata(sysvshm_chunk_head *ptr,long key,char *data, long len); extern long php3int_check_shmdata(sysvshm_chunk_head *ptr, long key); extern int php3int_remove_shmdata(sysvshm_chunk_head *ptr, long shm_varpos); diff --git a/ext/sysvshm/sysvshm.c b/ext/sysvshm/sysvshm.c index 755edfb75d..8d5698eb17 100644 --- a/ext/sysvshm/sysvshm.c +++ b/ext/sysvshm/sysvshm.c @@ -32,17 +32,21 @@ #include "../standard/php3_var.h" function_entry sysvshm_functions[] = { - {"shm_attach", php3_sysvshm_attach, NULL}, - {"shm_detach", php3_sysvshm_detach, NULL}, - {"shm_remove", php3_sysvshm_remove, NULL}, - {"shm_put_var", php3_sysvshm_put_var, NULL}, - {"shm_get_var", php3_sysvshm_get_var, NULL}, - {"shm_remove_var", php3_sysvshm_remove_var, NULL}, - {NULL, NULL, NULL} + PHP_FE(shm_attach, NULL) + PHP_FE(shm_remove, NULL) + PHP_FE(shm_detach, NULL) + PHP_FE(shm_put_var, NULL) + PHP_FE(shm_get_var, NULL) + PHP_FE(shm_remove_var, NULL) + {0} }; -php3_module_entry sysvshm_module_entry = { - "System V Shared-Memory", sysvshm_functions, php3_minit_sysvshm, NULL, NULL, NULL, NULL, STANDARD_MODULE_PROPERTIES +zend_module_entry sysvshm_module_entry = { + "System V Shared-Memory", sysvshm_functions, + PHP_MINIT(sysvshm), NULL, + NULL, NULL, + NULL, + STANDARD_MODULE_PROPERTIES }; @@ -59,8 +63,7 @@ static void php3i_release_sysvshm(sysvshm_shm *shm_ptr) efree(shm_ptr); } - -int php3_minit_sysvshm(INIT_FUNC_ARGS) +PHP_MINIT_FUNCTION(sysvshm) { php3_sysvshm_module.le_shm = register_list_destructors(php3i_release_sysvshm, NULL); if (cfg_get_long("sysvshm.init_mem", @@ -73,52 +76,35 @@ int php3_minit_sysvshm(INIT_FUNC_ARGS) /* {{{ proto int shm_attach(int key, int size, int flag) Return an id for the shared memory with the given key. */ -PHP_FUNCTION(sysvshm_attach) +PHP_FUNCTION(shm_attach) { - pval *arg_key,*arg_size,*arg_flag; + pval **arg_key,**arg_size,**arg_flag; long shm_size,shm_flag; sysvshm_shm *shm_list_ptr; char *shm_ptr; sysvshm_chunk_head *chunk_ptr; key_t shm_key; long shm_id,list_id; + int ac = ARG_COUNT(ht); shm_flag = 0666; shm_size = php3_sysvshm_module.init_mem; - switch (ARG_COUNT(ht)) { - case 1: - if (getParameters(ht, 1, &arg_key)==FAILURE) { - RETURN_FALSE; - } - convert_to_long(arg_key); - shm_key = arg_key->value.lval; - break; - case 2: - if (getParameters(ht, 2, &arg_key, &arg_size)==FAILURE) { - RETURN_FALSE; - } - convert_to_long(arg_key); - shm_key = arg_key->value.lval; - convert_to_long(arg_size); - shm_size=arg_size->value.lval; - break; - case 3: - if (getParameters(ht, 3, &arg_key, &arg_size, &arg_flag)==FAILURE) { - RETURN_FALSE; - } - convert_to_long(arg_key); - shm_key = arg_key->value.lval; - convert_to_long(arg_size); - shm_size=arg_size->value.lval; - convert_to_long(arg_flag); - shm_flag = arg_flag->value.lval; - break; - default: - WRONG_PARAM_COUNT; - break; + if(ac < 1 || ac > 3 || getParametersEx(ac, &arg_key, &arg_size, &arg_flag) == FAILURE) { + WRONG_PARAM_COUNT; } + switch (ac) { + case 3: + convert_to_long_ex(arg_flag); + shm_flag = (*arg_flag)->value.lval; + case 2: + convert_to_long_ex(arg_size); + shm_size= (*arg_size)->value.lval; + case 1: + convert_to_long_ex(arg_key); + shm_key = (*arg_key)->value.lval; + } if((shm_list_ptr = (sysvshm_shm *) emalloc(sizeof(sysvshm_shm)))==NULL) { php_error(E_WARNING, "shm_attach() failed for key 0x%x: cannot allocate internal listelement", shm_key); @@ -153,7 +139,7 @@ PHP_FUNCTION(sysvshm_attach) } - shm_list_ptr->key = shm_key; + shm_list_ptr->key = shm_key; shm_list_ptr->id = shm_id; shm_list_ptr->ptr = chunk_ptr; list_id = php3_list_insert(shm_list_ptr, php3_sysvshm_module.le_shm); @@ -165,49 +151,40 @@ PHP_FUNCTION(sysvshm_attach) /* {{{ proto int shm_detach(int id) releases the shared memory attachment with the given id. */ -PHP_FUNCTION(sysvshm_detach) +PHP_FUNCTION(shm_detach) { - pval *arg_id; + pval **arg_id; long id; - switch (ARG_COUNT(ht)) { - case 1: - if (getParameters(ht, 1, &arg_id)==FAILURE) { - RETURN_FALSE; - } - convert_to_long(arg_id); - id = arg_id->value.lval; - break; - default: - WRONG_PARAM_COUNT; - break; + if(ARG_COUNT(ht) != 1 || getParametersEx(1, &arg_id) == FAILURE) { + WRONG_PARAM_COUNT; } + convert_to_long_ex(arg_id); + + id = (*arg_id)->value.lval; + php3_list_delete(id); + + RETURN_TRUE; } /* }}} */ /* {{{ proto int shm_remove(int key) removes the shared memory with the given key. */ -PHP_FUNCTION(sysvshm_remove) +PHP_FUNCTION(shm_remove) { - pval *arg_key; + pval **arg_key; long id; key_t key; - - switch (ARG_COUNT(ht)) { - case 1: - if (getParameters(ht, 1, &arg_key)==FAILURE) { - RETURN_FALSE; - } - convert_to_long(arg_key); - key = arg_key->value.lval; - break; - default: - WRONG_PARAM_COUNT; - break; + if(ARG_COUNT(ht) != 1 || getParametersEx(1, &arg_key) == FAILURE) { + WRONG_PARAM_COUNT; } + convert_to_long_ex(arg_key); + + key = (*arg_key)->value.lval; + if((id=shmget(key,0,0))<0) { php_error(E_WARNING, "%d is not a existing SysV shared memory key", key); RETURN_FALSE; @@ -225,29 +202,23 @@ PHP_FUNCTION(sysvshm_remove) /* {{{ proto int shm_put(int id, int key, object *variable) insert a variable into shared memory. */ -PHP_FUNCTION(sysvshm_put_var) +PHP_FUNCTION(shm_put_var) { - pval *arg_id, *arg_key, *arg_var; + pval **arg_id, **arg_key, **arg_var; long key, id; sysvshm_shm *shm_list_ptr; int type; pval shm_var; int ret; - switch (ARG_COUNT(ht)) { - case 3: - if (getParameters(ht, 3, &arg_id, &arg_key,&arg_var)==FAILURE) { - RETURN_FALSE; - } - convert_to_long(arg_id); - id = arg_id->value.lval; - convert_to_long(arg_key); - key = arg_key->value.lval; - break; - default: - WRONG_PARAM_COUNT; - break; + if(ARG_COUNT(ht) != 3 || getParametersEx(3, &arg_id, &arg_key,&arg_var) == FAILURE) { + WRONG_PARAM_COUNT; } + + convert_to_long_ex(arg_id); + id = (*arg_id)->value.lval; + convert_to_long_ex(arg_key); + key = (*arg_key)->value.lval; shm_list_ptr = (sysvshm_shm *) php3_list_find(id, &type); if (type!=php3_sysvshm_module.le_shm) { @@ -260,7 +231,7 @@ PHP_FUNCTION(sysvshm_put_var) shm_var.type=IS_STRING; shm_var.value.str.len=0; shm_var.value.str.val=0; - php_var_serialize(&shm_var,&arg_var); + php_var_serialize(&shm_var,arg_var); /* insert serialized variable into shared memory */ ret=php3int_put_shmdata(shm_list_ptr->ptr,key,shm_var.value.str.val,shm_var.value.str.len); @@ -280,9 +251,9 @@ PHP_FUNCTION(sysvshm_put_var) /* {{{ proto string/float/int/array shm_get_var(int id, int key) returns a variable into shared memory. */ -PHP_FUNCTION(sysvshm_get_var) +PHP_FUNCTION(shm_get_var) { - pval *arg_id, *arg_key; + pval **arg_id, **arg_key; long key, id; sysvshm_shm *shm_list_ptr; int type; @@ -290,21 +261,15 @@ PHP_FUNCTION(sysvshm_get_var) long shm_varpos; sysvshm_chunk *shm_var; - switch (ARG_COUNT(ht)) { - case 2: - if (getParameters(ht, 2, &arg_id, &arg_key)==FAILURE) { - RETURN_FALSE; - } - convert_to_long(arg_id); - id = arg_id->value.lval; - convert_to_long(arg_key); - key = arg_key->value.lval; - break; - default: - WRONG_PARAM_COUNT; - break; + if(ARG_COUNT(ht) != 2 || getParametersEx(2, &arg_id, &arg_key) == FAILURE) { + WRONG_PARAM_COUNT; } + convert_to_long_ex(arg_id); + id = (*arg_id)->value.lval; + convert_to_long_ex(arg_key); + key = (*arg_key)->value.lval; + shm_list_ptr = (sysvshm_shm *) php3_list_find(id, &type); if (type!=php3_sysvshm_module.le_shm) { php_error(E_WARNING, "%d is not a SysV shared memory index", id); @@ -331,29 +296,23 @@ PHP_FUNCTION(sysvshm_get_var) /* {{{ proto int shm_remove_var(int id, int key) removes variable from shared memory. */ -PHP_FUNCTION(sysvshm_remove_var) +PHP_FUNCTION(shm_remove_var) { - pval *arg_id, *arg_key; + pval **arg_id, **arg_key; long key, id; sysvshm_shm *shm_list_ptr; int type; long shm_varpos; - switch (ARG_COUNT(ht)) { - case 2: - if (getParameters(ht, 2, &arg_id, &arg_key)==FAILURE) { - RETURN_FALSE; - } - convert_to_long(arg_id); - id = arg_id->value.lval; - convert_to_long(arg_key); - key = arg_key->value.lval; - break; - default: - WRONG_PARAM_COUNT; - break; + if(ARG_COUNT(ht) != 2 || getParametersEx(2, &arg_id, &arg_key) == FAILURE) { + WRONG_PARAM_COUNT; } + convert_to_long_ex(arg_id); + id = (*arg_id)->value.lval; + convert_to_long_ex(arg_key); + key = (*arg_key)->value.lval; + shm_list_ptr = (sysvshm_shm *) php3_list_find(id, &type); if (type!=php3_sysvshm_module.le_shm) { php_error(E_WARNING, "%d is not a SysV shared memory index", id); -- 2.40.0