cvs: /php4 ChangeLog MODULES_STATUS /php4/ext/sysvshm sysvshm.c

From: Date: Mon, 09 Aug 1999 15:03:10 +0000
Subject: cvs: /php4 ChangeLog MODULES_STATUS /php4/ext/sysvshm sysvshm.c
Groups: php.version4 
Request: Send a blank email to php-version4+get-3236@lists.php.net to get a copy of this message
thies Mon Aug 9 11:03:10 1999 EDT Modified files: /php4 ChangeLog MODULES_STATUS /php4/ext/sysvshm sysvshm.c Log: fixed sysv_shm* Index: php4/ChangeLog diff -u php4/ChangeLog:1.45 php4/ChangeLog:1.46 --- php4/ChangeLog:1.45 Mon Aug 9 04:39:26 1999 +++ php4/ChangeLog Mon Aug 9 11:03:09 1999 @@ -2,6 +2,7 @@ ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ??? ?? 1999, Version 4.0 Beta 2 +- fixed SYSV-SHM interface (Thies). - updated hyperwave module, made it thread safe - updated pdflib module, version 0.6 of pdflib no longer supported - updated fdf module Index: php4/MODULES_STATUS diff -u php4/MODULES_STATUS:1.18 php4/MODULES_STATUS:1.19 --- php4/MODULES_STATUS:1.18 Mon Aug 2 17:12:14 1999 +++ php4/MODULES_STATUS Mon Aug 9 11:03:09 1999 @@ -16,3 +16,4 @@ iptc Working informix Working zlib Working +sysvshm Working Index: php4/ext/sysvshm/sysvshm.c diff -u php4/ext/sysvshm/sysvshm.c:1.6 php4/ext/sysvshm/sysvshm.c:1.7 --- php4/ext/sysvshm/sysvshm.c:1.6 Mon Aug 2 15:16:52 1999 +++ php4/ext/sysvshm/sysvshm.c Mon Aug 9 11:03:09 1999 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: sysvshm.c,v 1.6 1999/08/02 19:16:52 zeev Exp $ */ +/* $Id: sysvshm.c,v 1.7 1999/08/09 15:03:09 thies Exp $ */ /* This has been built and tested on Solaris 2.6. * It may not compile or execute correctly on other systems. @@ -29,8 +29,8 @@ #include <errno.h> #include "php3_sysvshm.h" +#include "../standard/php3_var.h" - function_entry sysvshm_functions[] = { {"shm_attach", php3_sysvshm_attach, NULL}, {"shm_detach", php3_sysvshm_detach, NULL}, @@ -52,16 +52,14 @@ THREAD_LS sysvshm_module php3_sysvshm_module; - - - -static void php3i_release_sysvshm(sysvshm_shm *shm_ptr) { +static void php3i_release_sysvshm(sysvshm_shm *shm_ptr) +{ shmdt((void*)shm_ptr->ptr); + efree(shm_ptr); } - int php3_minit_sysvshm(INIT_FUNC_ARGS) { php3_sysvshm_module.le_shm = register_list_destructors(php3i_release_sysvshm, NULL); @@ -171,9 +169,6 @@ { pval *arg_id; long id; - sysvshm_shm *shm_list_ptr; - int type; - switch (ARG_COUNT(ht)) { case 1: @@ -188,23 +183,9 @@ break; } - 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); - RETURN_FALSE; - } - - if(shmdt((void*)shm_list_ptr->ptr)<0) { - php_error(E_WARNING, "shm_detach() failed for id 0x%x: %s", id, strerror(errno)); - RETURN_FALSE; - } + php3_list_delete(id); } /* }}} */ - - - - - /* {{{ proto int shm_remove(int key) removes the shared memory with the given key. */ PHP_FUNCTION(sysvshm_remove) @@ -227,7 +208,6 @@ break; } - if((id=shmget(key,0,0))<0) { php_error(E_WARNING, "%d is not a existing SysV shared memory key", key); RETURN_FALSE; @@ -236,6 +216,7 @@ php_error(E_WARNING, "shm_remove() failed for key 0x%x: %s", key, strerror(errno)); RETURN_FALSE; } + RETURN_TRUE; } /* }}} */ @@ -275,11 +256,11 @@ } /* setup string-variable and serialize */ + shm_var.type=IS_STRING; shm_var.value.str.len=0; - shm_var.value.str.val=emalloc(1); - shm_var.value.str.val[0]=0; - php3api_var_serialize(&shm_var,arg_var); + shm_var.value.str.val=0; + php3api_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); @@ -341,7 +322,7 @@ shm_var=(sysvshm_chunk*)((char*)shm_list_ptr->ptr+shm_varpos); shm_data=&shm_var->mem; - if(php3api_var_unserialize(return_value, &shm_data, shm_data+shm_var->length)!=1) { + if(php3api_var_unserialize(&return_value, (const char **) &shm_data, shm_data+shm_var->length)!=1) { php_error(E_WARNING, "variable data in shared memory is corruped"); RETURN_FALSE; }

« previous php.version4 (#3236) next »