cvs: /php4 ChangeLog MODULES_STATUS /php4/ext/sysvshm sysvshm.c
| From: | Thies C . Arntzen | 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;
}