]> granicus.if.org Git - php/commitdiff
Made Hypwerwave module threat safe
authorUwe Steinmann <steinm@php.net>
Fri, 6 Aug 1999 10:42:00 +0000 (10:42 +0000)
committerUwe Steinmann <steinm@php.net>
Fri, 6 Aug 1999 10:42:00 +0000 (10:42 +0000)
ext/hyperwave/hg_comm.h
ext/hyperwave/hw.c
ext/hyperwave/php3_hyperwave.h
ext/pdf/pdf.c
ext/pdf/php3_pdf.h

index 12503e8181fb90a66e15d7ee34e740847db33e71..047bb855a162ea0c0a3cd5ff6b858f5abd3ff808 100644 (file)
@@ -36,7 +36,7 @@
 #define F_DISTRIBUTED 0x80000000
 #define F_COMPRESSED  0x40000000
 #define F_VERSION     0x00003fff
-#define HW_VERSION       717L     /* 7.17 */
+#define HW_VERSION    717L     /* 7.17 */
 
 #define HEADER_LENGTH 12
 
index f1e807661ca45ddaffcbf9e49a86e141cc6f099b..d92b2e33f620a13b9ac6ecedaf89583c13a47312 100644 (file)
 
 #if HYPERWAVE
 
+#include "php_ini.h"
 #include "php3_hyperwave.h"
 
-#if APACHE
-#  ifndef DEBUG
-#  undef palloc
-#  endif
-#endif
-
-hw_module php3_hw_module;
+//hw_module php3_hw_module;
 
 function_entry hw_functions[] = {
        PHP_FE(hw_connect,                                                              NULL)
@@ -115,9 +110,19 @@ function_entry hw_functions[] = {
 };
 
 php3_module_entry hw_module_entry = {
-       "HyperWave", hw_functions, PHP_MINIT(hw), NULL, NULL, NULL, PHP_MINFO(hw), 0, 0, 0, NULL
+       "HyperWave", hw_functions, PHP_MINIT(hw), PHP_MSHUTDOWN(hw), NULL, NULL, PHP_MINFO(hw), 0, 0, 0, NULL
 };
 
+#ifdef ZTS
+int hw_globals_id;
+#else
+PHP_HW_API php_hw_globals hw_globals;
+#endif
+
+#ifdef COMPILE_DL
+DLEXPORT php3_module_entry *get_module(void) { return &hw_module_entry; }
+#endif
+
 void print_msg(hg_msg *msg, char *str, int txt);
 
 #if COMPILE_DL
@@ -132,7 +137,7 @@ void _close_hw_link(hw_connection *conn)
                free(conn->username);
        close(conn->socket);
        free(conn);
-       php3_hw_module.num_links--;
+       HwSG(num_links)--;
 }
 
 void _close_hw_plink(hw_connection *conn)
@@ -143,8 +148,8 @@ void _close_hw_plink(hw_connection *conn)
                free(conn->username);
        close(conn->socket);
        free(conn);
-       php3_hw_module.num_links--;
-       php3_hw_module.num_persistent--;
+       HwSG(num_links)--;
+       HwSG(num_persistent)--;
 }
 
 void _free_hw_document(hw_document *doc)
@@ -158,13 +163,58 @@ void _free_hw_document(hw_document *doc)
        free(doc);
 }
 
+#ifdef ZTS
+static void php_hw_init_globals(php_hw_globals *hw_globals)
+{
+       HwSG(num_persistent) = 0;
+}
+#endif
+
+static PHP_INI_MH(OnHyperwavePort) {
+       HwSLS_FETCH();
+
+       if (new_value==NULL) {
+               HwSG(default_port) = HG_SERVER_PORT;
+       } else {
+               HwSG(default_port) = atoi(new_value);
+       }
+       return SUCCESS;
+}
+
+PHP_INI_BEGIN()
+       STD_PHP_INI_ENTRY("hyerwave.allow_persistent",  "0",    PHP_INI_SYSTEM,         OnUpdateInt,            allow_persistent,       php_hw_globals, hw_globals)
+       PHP_INI_ENTRY("hyperwave.default_port", "418", PHP_INI_ALL,     OnHyperwavePort)
+PHP_INI_END()
+
+PHP_MINIT_FUNCTION(hw) {
+
+#ifdef ZTS
+        hw_globals_id = ts_allocate_id(sizeof(php_hw_globals), php_hw_init_globals, NULL);
+#else
+        HwSG(num_persistent)=0;
+#endif
+       REGISTER_INI_ENTRIES();
+       HwSG(le_socketp) = register_list_destructors(_close_hw_link,NULL);
+       HwSG(le_psocketp) = register_list_destructors(NULL,_close_hw_plink);
+       HwSG(le_document) = register_list_destructors(_free_hw_document,NULL);
+       hw_module_entry.type = type;
+
+       return SUCCESS;
+}
+
+PHP_MSHUTDOWN_FUNCTION(hw)
+{
+       UNREGISTER_INI_ENTRIES();
+       return SUCCESS;
+}
+
 /* creates an array in return value and frees all memory
  * Also adds as an assoc. array at the end of the return array with
  * statistics.
  */
 int make_return_objrec(pval **return_value, char **objrecs, int count)
 {
-       pval stat_arr;
+       zval *stat_arr;
        int i;
        int hidden, collhead, fullcollhead, total;
         int collheadnr, fullcollheadnr;
@@ -201,19 +251,20 @@ int make_return_objrec(pval **return_value, char **objrecs, int count)
        efree(objrecs);
 
        /* Array for statistics */
-       if (array_init(&stat_arr) == FAILURE) {
+       stat_arr = (zval *) emalloc(sizeof(zval));
+       if (array_init(stat_arr) == FAILURE) {
                return -1;
        }
 
-       add_assoc_long(&stat_arr, "Hidden", hidden);
-       add_assoc_long(&stat_arr, "CollectionHead", collhead);
-       add_assoc_long(&stat_arr, "FullCollectionHead", fullcollhead);
-       add_assoc_long(&stat_arr, "Total", total);
-       add_assoc_long(&stat_arr, "CollectionHeadNr", collheadnr);
-       add_assoc_long(&stat_arr, "FullCollectionHeadNr", fullcollheadnr);
+       add_assoc_long(stat_arr, "Hidden", hidden);
+       add_assoc_long(stat_arr, "CollectionHead", collhead);
+       add_assoc_long(stat_arr, "FullCollectionHead", fullcollhead);
+       add_assoc_long(stat_arr, "Total", total);
+       add_assoc_long(stat_arr, "CollectionHeadNr", collheadnr);
+       add_assoc_long(stat_arr, "FullCollectionHeadNr", fullcollheadnr);
 
        /* Add the stat array */
-       zend_hash_next_index_insert((*return_value)->value.ht, &stat_arr, sizeof(pval), NULL);
+       zend_hash_next_index_insert((*return_value)->value.ht, &stat_arr, sizeof(zval), NULL);
 
        /* The title array can now be freed, but I don't know how */
        return 0;
@@ -297,21 +348,18 @@ int make_return_array_from_objrec(pval **return_value, char *objrec) {
        if(hasTitle) {
                zend_hash_update((*return_value)->value.ht, "Title", 6, &title_arr, sizeof(zval *), NULL);
 
-               /* The title array can now be freed, but I don't know how */
        }
 
        if(hasDescription) {
        /* Add the description array, if we have one */
                zend_hash_update((*return_value)->value.ht, "Description", 12, &desc_arr, sizeof(zval *), NULL);
 
-               /* The description array can now be freed, but I don't know how */
        }
 
        if(hasKeyword) {
        /* Add the keyword array, if we have one */
                zend_hash_update((*return_value)->value.ht, "Keyword", 8, &keyword_arr, sizeof(zval *), NULL);
 
-               /* The keyword array can now be freed, but I don't know how */
        }
 
        /* All other attributes. Make a another copy first */
@@ -434,25 +482,6 @@ static int * make_ints_from_array(HashTable *lht) {
        return objrec;
 }
 
-PHP_MINIT_FUNCTION(hw) {
-
-       if (cfg_get_long("hw.allow_persistent",&php3_hw_module.allow_persistent)==FAILURE) {
-               php3_hw_module.allow_persistent=1;
-       }
-       if (cfg_get_long("hw.max_persistent",&php3_hw_module.max_persistent)==FAILURE) {
-               php3_hw_module.max_persistent=-1;
-       }
-       if (cfg_get_long("hw.max_links",&php3_hw_module.max_links)==FAILURE) {
-               php3_hw_module.max_links=-1;
-       }
-       php3_hw_module.num_persistent=0;
-       php3_hw_module.le_socketp = register_list_destructors(_close_hw_link,NULL);
-       php3_hw_module.le_psocketp = register_list_destructors(NULL,_close_hw_plink);
-       php3_hw_module.le_document = register_list_destructors(_free_hw_document,NULL);
-
-       return SUCCESS;
-}
-
 #define BUFFERLEN 30
 static void php3_hw_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent)
 {
@@ -522,16 +551,16 @@ static void php3_hw_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent)
                if (zend_hash_find(plist, hashed_details, hashed_details_length+1, (void **) &le)==FAILURE) {
                        list_entry new_le;
 
-                       if (php3_hw_module.max_links!=-1 && php3_hw_module.num_links>=php3_hw_module.max_links) {
-                               php_error(E_ERROR,"Hyperwave:  Too many open links (%d)",php3_hw_module.num_links);
+                       if (HwSG(max_links)!=-1 && HwSG(num_links)>=HwSG(max_links)) {
+                               php_error(E_ERROR,"Hyperwave:  Too many open links (%d)",HwSG(num_links));
                                if(host) efree(host);
                                if(username) efree(username);
                                if(password) efree(password);
                                efree(hashed_details);
                                RETURN_FALSE;
                        }
-                       if (php3_hw_module.max_persistent!=-1 && php3_hw_module.num_persistent>=php3_hw_module.max_persistent) {
-                               php_error(E_ERROR,"Hyperwave: Too many open persistent links (%d)",php3_hw_module.num_persistent);
+                       if (HwSG(max_persistent!=-1) && HwSG(num_persistent)>=HwSG(max_persistent)) {
+                               php_error(E_ERROR,"Hyperwave: Too many open persistent links (%d)",HwSG(num_persistent));
                                if(host) efree(host);
                                if(username) efree(username);
                                if(password) efree(password);
@@ -580,7 +609,7 @@ static void php3_hw_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent)
                        ptr->username = strdup("anonymous");
        
                        new_le.ptr = (void *) ptr;
-                       new_le.type = php3_hw_module.le_psocketp;;
+                       new_le.type = HwSG(le_psocketp);
 
                        if (zend_hash_update(plist,hashed_details,hashed_details_length+1,(void *) &new_le, sizeof(list_entry), NULL)==FAILURE) {
                                php_error(E_ERROR, "Could not hash table with connection details");
@@ -592,17 +621,17 @@ static void php3_hw_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent)
                                RETURN_FALSE;
                        }
 
-                       php3_hw_module.num_links++;
-                       php3_hw_module.num_persistent++;
+                       HwSG(num_links)++;
+                       HwSG(num_persistent)++;
                } else {
                        /*php_printf("Found already open connection\n"); */
-                       if (le->type != php3_hw_module.le_psocketp) {
+                       if (le->type != HwSG(le_psocketp)) {
                                RETURN_FALSE;
                        }
                        ptr = le->ptr;
                }
 
-               return_value->value.lval = php3_list_insert(ptr,php3_hw_module.le_psocketp);
+               return_value->value.lval = php3_list_insert(ptr,HwSG(le_psocketp));
                return_value->type = IS_LONG;
        
        } else {
@@ -622,8 +651,8 @@ static void php3_hw_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent)
                        }
                        link = (int) index_ptr->ptr;
                        ptr = (hw_connection *) php3_list_find(link,&type);   /* check if the link is still there */
-                       if(!ptr || (type!=php3_hw_module.le_socketp && type!=php3_hw_module.le_psocketp)) {
-                               return_value->value.lval = php3_hw_module.default_link = link;
+                       if(!ptr || (type!=HwSG(le_socketp) && type!=HwSG(le_psocketp))) {
+                               return_value->value.lval = HwSG(default_link) = link;
                                return_value->type = IS_LONG;
                                efree(hashed_details);
                                if(username) efree(username);
@@ -674,7 +703,7 @@ static void php3_hw_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent)
                ptr->hostname = strdup(host);
                ptr->username = strdup("anonymous");
        
-               return_value->value.lval = php3_list_insert(ptr,php3_hw_module.le_socketp);
+               return_value->value.lval = php3_list_insert(ptr,HwSG(le_socketp));
                return_value->type = IS_LONG;
        
                new_index_ptr.ptr = (void *) return_value->value.lval;
@@ -690,7 +719,7 @@ static void php3_hw_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent)
 
        efree(hashed_details);
        if(host) efree(host);
-       php3_hw_module.default_link=return_value->value.lval;
+       HwSG(default_link)=return_value->value.lval;
 
        /* At this point we have a working connection. If userdata was given
           we are also indentified.
@@ -743,7 +772,7 @@ PHP_FUNCTION(hw_close) {
        convert_to_long(arg1);
        id=arg1->value.lval;
        ptr = php3_list_find(id,&type);
-       if(!ptr || (type!=php3_hw_module.le_socketp && type!=php3_hw_module.le_psocketp)) {
+       if(!ptr || (type!=HwSG(le_socketp) && type!=HwSG(le_psocketp))) {
                php_error(E_WARNING,"Unable to find file identifier %d",id);
                RETURN_FALSE;
        }
@@ -767,7 +796,7 @@ PHP_FUNCTION(hw_info)
        convert_to_long(arg1);
        id=arg1->value.lval;
        ptr = php3_list_find(id,&type);
-       if(!ptr || (type!=php3_hw_module.le_socketp && type!=php3_hw_module.le_psocketp)) {
+       if(!ptr || (type!=HwSG(le_socketp) && type!=HwSG(le_psocketp))) {
                php_error(E_WARNING,"Unable to find file identifier %d",id);
                RETURN_FALSE;
        }
@@ -799,7 +828,7 @@ PHP_FUNCTION(hw_error)
        convert_to_long(arg1);
        id=arg1->value.lval;
        ptr = php3_list_find(id,&type);
-       if(!ptr || (type!=php3_hw_module.le_socketp && type!=php3_hw_module.le_psocketp)) {
+       if(!ptr || (type!=HwSG(le_socketp) && type!=HwSG(le_psocketp))) {
                php_error(E_WARNING,"Unable to find file identifier %d",id);
                RETURN_FALSE;
        }
@@ -822,7 +851,7 @@ PHP_FUNCTION(hw_errormsg)
        convert_to_long(arg1);
        id=arg1->value.lval;
        ptr = php3_list_find(id,&type);
-       if(!ptr || (type!=php3_hw_module.le_socketp && type!=php3_hw_module.le_psocketp)) {
+       if(!ptr || (type!=HwSG(le_socketp) && type!=HwSG(le_psocketp))) {
                php_error(E_WARNING,"Unable to find file identifier %d",id);
                RETURN_FALSE;
        }
@@ -927,7 +956,7 @@ char *php3_hw_command(INTERNAL_FUNCTION_PARAMETERS, int comm) {
        convert_to_long(arg1);
        link=arg1->value.lval;
        ptr = php3_list_find(link,&type);
-       if(!ptr || (type!=php3_hw_module.le_socketp && type!=php3_hw_module.le_psocketp)) {
+       if(!ptr || (type!=HwSG(le_socketp) && type!=HwSG(le_psocketp))) {
                php_error(E_WARNING,"Unable to find file identifier %d",link);
                return NULL;
        }
@@ -960,7 +989,7 @@ PHP_FUNCTION(hw_stat) {
 /* {{{ proto array hw_who(int link)
    Returns names and info of users loged in */
 PHP_FUNCTION(hw_who) {
-       pval user_arr;
+       zval *user_arr;
         char *object, *ptr, *temp, *attrname;
        int i;
 
@@ -995,30 +1024,31 @@ php_printf("%s\n", ptr);
        while(attrname != NULL) {
                char *name;
 
-               if (array_init(&user_arr) == FAILURE) {
+               user_arr = (zval *) emalloc(sizeof(zval));
+               if (array_init(user_arr) == FAILURE) {
                        efree(object);
                        RETURN_FALSE;
                }
 
                ptr = attrname;
                if(*ptr++ == '*')
-                       add_assoc_long(&user_arr, "self", 1);
+                       add_assoc_long(user_arr, "self", 1);
                else
-                       add_assoc_long(&user_arr, "self", 0);
+                       add_assoc_long(user_arr, "self", 0);
                        
                ptr++;
                name = ptr;
                while((*ptr != '\0') && (*ptr != ' '))
                        ptr++;
                *ptr = '\0';
-               add_assoc_string(&user_arr, "id", name, 1);
+               add_assoc_string(user_arr, "id", name, 1);
 
                ptr++;
                name = ptr;
                while((*ptr != '\0') && (*ptr != ' '))
                        ptr++;
                *ptr = '\0';
-               add_assoc_string(&user_arr, "name", name, 1);
+               add_assoc_string(user_arr, "name", name, 1);
 
                ptr++;
                while((*ptr != '\0') && (*ptr == ' '))
@@ -1028,7 +1058,7 @@ php_printf("%s\n", ptr);
                while((*ptr != '\0') && (*ptr != ' '))
                        ptr++;
                *ptr = '\0';
-               add_assoc_string(&user_arr, "system", name, 1);
+               add_assoc_string(user_arr, "system", name, 1);
 
                ptr++;
                while((*ptr != '\0') && (*ptr == ' '))
@@ -1038,7 +1068,7 @@ php_printf("%s\n", ptr);
                while((*ptr != '\0') && (*ptr != ' '))
                        ptr++;
                *ptr = '\0';
-               add_assoc_string(&user_arr, "onSinceDate", name, 1);
+               add_assoc_string(user_arr, "onSinceDate", name, 1);
 
                ptr++;
                while((*ptr != '\0') && (*ptr == ' '))
@@ -1048,7 +1078,7 @@ php_printf("%s\n", ptr);
                while((*ptr != '\0') && (*ptr != ' '))
                        ptr++;
                *ptr = '\0';
-               add_assoc_string(&user_arr, "onSinceTime", name, 1);
+               add_assoc_string(user_arr, "onSinceTime", name, 1);
 
                ptr++;
                while((*ptr != '\0') && (*ptr == ' '))
@@ -1058,13 +1088,11 @@ php_printf("%s\n", ptr);
                while((*ptr != '\0') && (*ptr != ' '))
                        ptr++;
                *ptr = '\0';
-               add_assoc_string(&user_arr, "TotalTime", name, 1);
+               add_assoc_string(user_arr, "TotalTime", name, 1);
 
                /* Add the user array */
                zend_hash_index_update(return_value->value.ht, i++, &user_arr, sizeof(pval), NULL);
 
-               /* The user array can now be freed, but I don't know how */
-
                attrname = strtok(NULL, "\n");
        }
        efree(temp);
@@ -1090,7 +1118,7 @@ PHP_FUNCTION(hw_dummy) {
        id=arg2->value.lval;
        msgid=arg3->value.lval;
        ptr = php3_list_find(link,&type);
-       if(!ptr || (type!=php3_hw_module.le_socketp && type!=php3_hw_module.le_psocketp)) {
+       if(!ptr || (type!=HwSG(le_socketp) && type!=HwSG(le_psocketp))) {
                php_error(E_WARNING,"Unable to find file identifier %d",id);
                RETURN_FALSE;
        }
@@ -1137,7 +1165,7 @@ PHP_FUNCTION(hw_getobject) {
 
        link=argv[0]->value.lval;
        ptr = php3_list_find(link,&type);
-       if(!ptr || (type!=php3_hw_module.le_socketp && type!=php3_hw_module.le_psocketp)) {
+       if(!ptr || (type!=HwSG(le_socketp) && type!=HwSG(le_psocketp))) {
                php_error(E_WARNING,"Unable to find file identifier %d",id);
                RETURN_FALSE;
        }
@@ -1211,7 +1239,7 @@ PHP_FUNCTION(hw_insertobject) {
        objrec=arg2->value.str.val;
        parms=arg3->value.str.val;
        ptr = php3_list_find(link,&type);
-       if(!ptr || (type!=php3_hw_module.le_socketp && type!=php3_hw_module.le_psocketp)) {
+       if(!ptr || (type!=HwSG(le_socketp) && type!=HwSG(le_psocketp))) {
                php_error(E_WARNING,"Unable to find file identifier %d",link);
                RETURN_FALSE;
        }
@@ -1242,7 +1270,7 @@ PHP_FUNCTION(hw_getandlock) {
        link=arg1->value.lval;
        id=arg2->value.lval;
        ptr = php3_list_find(link,&type);
-       if(!ptr || (type!=php3_hw_module.le_socketp && type!=php3_hw_module.le_psocketp)) {
+       if(!ptr || (type!=HwSG(le_socketp) && type!=HwSG(le_psocketp))) {
                php_error(E_WARNING,"Unable to find file identifier %d",id);
                RETURN_FALSE;
        }
@@ -1273,7 +1301,7 @@ PHP_FUNCTION(hw_unlock) {
        link=arg1->value.lval;
        id=arg2->value.lval;
        ptr = php3_list_find(link,&type);
-       if(!ptr || (type!=php3_hw_module.le_socketp && type!=php3_hw_module.le_psocketp)) {
+       if(!ptr || (type!=HwSG(le_socketp) && type!=HwSG(le_psocketp))) {
                php_error(E_WARNING,"Unable to find file identifier %d",id);
                RETURN_FALSE;
        }
@@ -1301,7 +1329,7 @@ PHP_FUNCTION(hw_deleteobject) {
        link=arg1->value.lval;
        id=arg2->value.lval;
        ptr = php3_list_find(link,&type);
-       if(!ptr || (type!=php3_hw_module.le_socketp && type!=php3_hw_module.le_psocketp)) {
+       if(!ptr || (type!=HwSG(le_socketp) && type!=HwSG(le_psocketp))) {
                php_error(E_WARNING,"Unable to find file identifier %d",id);
                RETURN_FALSE;
        }
@@ -1334,7 +1362,7 @@ PHP_FUNCTION(hw_changeobject) {
        id=arg2->value.lval;
        newobjarr=arg3->value.ht;
        ptr = php3_list_find(link,&type);
-       if(!ptr || (type!=php3_hw_module.le_socketp && type!=php3_hw_module.le_psocketp)) {
+       if(!ptr || (type!=HwSG(le_socketp) && type!=HwSG(le_psocketp))) {
                php_error(E_WARNING,"Unable to find file identifier %d",id);
                RETURN_FALSE;
        }
@@ -1436,7 +1464,7 @@ PHP_FUNCTION(hw_modifyobject) {
        remobjarr=argv[2]->value.ht;
        addobjarr=argv[3]->value.ht;
        ptr = php3_list_find(link,&type);
-       if(!ptr || (type!=php3_hw_module.le_socketp && type!=php3_hw_module.le_psocketp)) {
+       if(!ptr || (type!=HwSG(le_socketp) && type!=HwSG(le_psocketp))) {
                php_error(E_WARNING,"Unable to find file identifier %d",id);
                RETURN_FALSE;
        }
@@ -1666,7 +1694,7 @@ fprintf(stderr, "Copy/Move %d\n", mvcp);
                        break;
        }
        ptr = php3_list_find(link,&type);
-       if(!ptr || (type!=php3_hw_module.le_socketp && type!=php3_hw_module.le_psocketp)) {
+       if(!ptr || (type!=HwSG(le_socketp) && type!=HwSG(le_psocketp))) {
                php_error(E_WARNING,"Unable to find file identifier %d",link);
                RETURN_FALSE;
        }
@@ -1779,7 +1807,7 @@ PHP_FUNCTION(hw_gettext) {
        link=argv[0]->value.lval;
        id=argv[1]->value.lval;
        ptr = php3_list_find(link,&type);
-       if(!ptr || (type!=php3_hw_module.le_socketp && type!=php3_hw_module.le_psocketp)) {
+       if(!ptr || (type!=HwSG(le_socketp) && type!=HwSG(le_psocketp))) {
                php_error(E_WARNING,"Unable to find file identifier %d",id);
                RETURN_FALSE;
        }
@@ -1798,7 +1826,7 @@ PHP_FUNCTION(hw_gettext) {
        doc->attributes = attributes;
        doc->bodytag = bodytag;
        doc->size = count;
-       return_value->value.lval = php3_list_insert(doc,php3_hw_module.le_document);
+       return_value->value.lval = php3_list_insert(doc,HwSG(le_document));
        return_value->type = IS_LONG;
        }
 }
@@ -1820,7 +1848,7 @@ PHP_FUNCTION(hw_edittext) {
        link=arg1->value.lval;
        ptr = php3_list_find(link,&type);
 
-       if(!ptr || (type!=php3_hw_module.le_socketp && type!=php3_hw_module.le_psocketp)) {
+       if(!ptr || (type!=HwSG(le_socketp) && type!=HwSG(le_psocketp))) {
                php_error(E_WARNING,"Unable to find socket identifier %d",link);
                RETURN_FALSE;
        }
@@ -1828,7 +1856,7 @@ PHP_FUNCTION(hw_edittext) {
        doc=arg2->value.lval;
        docptr = php3_list_find(doc,&type);
 
-       if(!docptr || (type!=php3_hw_module.le_document)) {
+       if(!docptr || (type!=HwSG(le_document))) {
                php_error(E_WARNING,"Unable to find document identifier %d", doc);
                RETURN_FALSE;
        }
@@ -1862,7 +1890,7 @@ PHP_FUNCTION(hw_getcgi) {
        link=arg1->value.lval;
        id=arg2->value.lval;
        ptr = php3_list_find(link,&type);
-       if(!ptr || (type!=php3_hw_module.le_socketp && type!=php3_hw_module.le_psocketp)) {
+       if(!ptr || (type!=HwSG(le_socketp) && type!=HwSG(le_psocketp))) {
                php_error(E_WARNING,"Unable to find file identifier %d",id);
                RETURN_FALSE;
        }
@@ -1900,7 +1928,7 @@ PHP_FUNCTION(hw_getcgi) {
        doc->attributes = attributes;
        doc->bodytag = NULL;
        doc->size = count;
-       return_value->value.lval = php3_list_insert(doc,php3_hw_module.le_document);
+       return_value->value.lval = php3_list_insert(doc,HwSG(le_document));
        return_value->type = IS_LONG;
        }
 }
@@ -1923,7 +1951,7 @@ PHP_FUNCTION(hw_getremote) {
        link=arg1->value.lval;
        id=arg2->value.lval;
        ptr = php3_list_find(link,&type);
-       if(!ptr || (type!=php3_hw_module.le_socketp && type!=php3_hw_module.le_psocketp)) {
+       if(!ptr || (type!=HwSG(le_socketp) && type!=HwSG(le_psocketp))) {
                php_error(E_WARNING,"Unable to find file identifier %d",id);
                RETURN_FALSE;
        }
@@ -1941,7 +1969,7 @@ PHP_FUNCTION(hw_getremote) {
        doc->attributes = attributes;
        doc->bodytag = NULL;
        doc->size = count;
-       return_value->value.lval = php3_list_insert(doc,php3_hw_module.le_document);
+       return_value->value.lval = php3_list_insert(doc,HwSG(le_document));
        return_value->type = IS_LONG;
        }
 }
@@ -1963,7 +1991,7 @@ PHP_FUNCTION(hw_getremotechildren) {
        link=arg1->value.lval;
        objrec=arg2->value.str.val;
        ptr = php3_list_find(link,&type);
-       if(!ptr || (type!=php3_hw_module.le_socketp && type!=php3_hw_module.le_psocketp)) {
+       if(!ptr || (type!=HwSG(le_socketp) && type!=HwSG(le_psocketp))) {
                php_error(E_WARNING,"Unable to find file identifier %d", link);
                RETURN_FALSE;
        }
@@ -2029,7 +2057,7 @@ php_printf("count = %d, remainder = <HR>%s---<HR>", count, remainder);
                doc->attributes = strdup(objrec);
                doc->bodytag = NULL;
                doc->size = strlen(doc->data);
-               return_value->value.lval = php3_list_insert(doc,php3_hw_module.le_document);
+               return_value->value.lval = php3_list_insert(doc,HwSG(le_document));
                return_value->type = IS_LONG;
        } else {
                if (array_init(return_value) == FAILURE) {
@@ -2066,7 +2094,7 @@ PHP_FUNCTION(hw_setlinkroot) {
        link = arg1->value.lval;
        rootid = arg2->value.lval;
        ptr = php3_list_find(link,&type);
-       if(!ptr || (type!=php3_hw_module.le_socketp && type!=php3_hw_module.le_psocketp)) {
+       if(!ptr || (type!=HwSG(le_socketp) && type!=HwSG(le_psocketp))) {
                php_error(E_WARNING,"Unable to find file identifier %d",link);
                RETURN_FALSE;
        }
@@ -2106,7 +2134,7 @@ PHP_FUNCTION(hw_pipedocument) {
 */     link=argv[0]->value.lval;
        id=argv[1]->value.lval;
        ptr = php3_list_find(link,&type);
-       if(!ptr || (type!=php3_hw_module.le_socketp && type!=php3_hw_module.le_psocketp)) {
+       if(!ptr || (type!=HwSG(le_socketp) && type!=HwSG(le_psocketp))) {
                php_error(E_WARNING,"Unable to find file identifier %d", link);
                RETURN_FALSE;
        }
@@ -2138,7 +2166,7 @@ PHP_FUNCTION(hw_pipedocument) {
        doc->bodytag = bodytag;
        doc->size = count;
 /* fprintf(stderr, "size = %d\n", count); */
-       return_value->value.lval = php3_list_insert(doc,php3_hw_module.le_document);
+       return_value->value.lval = php3_list_insert(doc,HwSG(le_document));
        return_value->type = IS_LONG;
        }
 }
@@ -2166,7 +2194,7 @@ PHP_FUNCTION(hw_pipecgi) {
        link=arg1->value.lval;
        id=arg2->value.lval;
        ptr = php3_list_find(link,&type);
-       if(!ptr || (type!=php3_hw_module.le_socketp && type!=php3_hw_module.le_psocketp)) {
+       if(!ptr || (type!=HwSG(le_socketp) && type!=HwSG(le_psocketp))) {
                php_error(E_WARNING,"Unable to find file identifier %d",id);
                RETURN_FALSE;
        }
@@ -2203,7 +2231,7 @@ PHP_FUNCTION(hw_pipecgi) {
        doc->attributes = attributes;
        doc->bodytag = NULL;
        doc->size = count;
-       return_value->value.lval = php3_list_insert(doc,php3_hw_module.le_document);
+       return_value->value.lval = php3_list_insert(doc,HwSG(le_document));
        return_value->type = IS_LONG;
        }
 }
@@ -2231,14 +2259,14 @@ PHP_FUNCTION(hw_insertdocument) {
        link=arg1->value.lval;
        id=arg2->value.lval;
        ptr = php3_list_find(link,&type);
-       if(!ptr || (type!=php3_hw_module.le_socketp && type!=php3_hw_module.le_psocketp)) {
+       if(!ptr || (type!=HwSG(le_socketp) && type!=HwSG(le_psocketp))) {
                php_error(E_WARNING,"Unable to find connection identifier %d",link);
                RETURN_FALSE;
        }
 
        doc=arg3->value.lval;
        docptr = php3_list_find(doc,&type);
-       if(!docptr || (type!=php3_hw_module.le_document)) {
+       if(!docptr || (type!=HwSG(le_document))) {
                php_error(E_WARNING,"Unable to find document identifier %d",doc);
                RETURN_FALSE;
        }
@@ -2288,7 +2316,7 @@ PHP_FUNCTION(hw_new_document) {
        doc->attributes = strdup(arg1->value.str.val);
        doc->bodytag = NULL;
        doc->size = arg3->value.lval;
-       return_value->value.lval = php3_list_insert(doc,php3_hw_module.le_document);
+       return_value->value.lval = php3_list_insert(doc,HwSG(le_document));
        return_value->type = IS_LONG;
 }
 /* }}} */
@@ -2306,7 +2334,7 @@ PHP_FUNCTION(hw_free_document) {
        convert_to_long(arg1);
        id=arg1->value.lval;
        ptr = php3_list_find(id,&type);
-       if(!ptr || (type!=php3_hw_module.le_document)) {
+       if(!ptr || (type!=HwSG(le_document))) {
                php_error(E_WARNING,"Unable to find file identifier %d",id);
                RETURN_FALSE;
        }
@@ -2332,7 +2360,7 @@ PHP_FUNCTION(hw_output_document) {
        convert_to_long(arg1);
        id=arg1->value.lval;
        ptr = php3_list_find(id,&type);
-       if(!ptr || (type!=php3_hw_module.le_document)) {
+       if(!ptr || (type!=HwSG(le_document))) {
                php_error(E_WARNING,"Unable to find file identifier %d",id);
                RETURN_FALSE;
        }
@@ -2366,7 +2394,7 @@ PHP_FUNCTION(hw_document_bodytag) {
        convert_to_long(argv[0]);
        id=argv[0]->value.lval;
        ptr = php3_list_find(id,&type);
-       if(!ptr || (type!=php3_hw_module.le_document)) {
+       if(!ptr || (type!=HwSG(le_document))) {
                php_error(E_WARNING,"Unable to find file identifier %d",id);
                RETURN_FALSE;
        }
@@ -2405,7 +2433,7 @@ PHP_FUNCTION(hw_document_content) {
        convert_to_long(argv[0]);
        id=argv[0]->value.lval;
        ptr = php3_list_find(id,&type);
-       if(!ptr || (type!=php3_hw_module.le_document)) {
+       if(!ptr || (type!=HwSG(le_document))) {
                php_error(E_WARNING,"Unable to find file identifier %d",id);
                RETURN_FALSE;
        }
@@ -2433,7 +2461,7 @@ PHP_FUNCTION(hw_document_setcontent) {
        convert_to_string(argv[1]);
        id=argv[0]->value.lval;
        ptr = php3_list_find(id,&type);
-       if(!ptr || (type!=php3_hw_module.le_document)) {
+       if(!ptr || (type!=HwSG(le_document))) {
                php_error(E_WARNING,"Unable to find file identifier %d",id);
                RETURN_FALSE;
        }
@@ -2467,7 +2495,7 @@ PHP_FUNCTION(hw_document_size) {
        convert_to_long(arg1);
        id=arg1->value.lval;
        ptr = php3_list_find(id,&type);
-       if(!ptr || (type!=php3_hw_module.le_document)) {
+       if(!ptr || (type!=HwSG(le_document))) {
                php_error(E_WARNING,"Unable to find file identifier %d",id);
                RETURN_FALSE;
        }
@@ -2493,7 +2521,7 @@ PHP_FUNCTION(hw_document_attributes) {
        convert_to_long(arg1);
        id=arg1->value.lval;
        ptr = php3_list_find(id,&type);
-       if(!ptr || (type!=php3_hw_module.le_document)) {
+       if(!ptr || (type!=HwSG(le_document))) {
                php_error(E_WARNING,"Unable to find file identifier %d",id);
                RETURN_FALSE;
        }
@@ -2520,7 +2548,7 @@ PHP_FUNCTION(hw_getparentsobj) {
        link=arg1->value.lval;
        id=arg2->value.lval;
        ptr = php3_list_find(link,&type);
-       if(!ptr || (type!=php3_hw_module.le_socketp && type!=php3_hw_module.le_psocketp)) {
+       if(!ptr || (type!=HwSG(le_socketp) && type!=HwSG(le_psocketp))) {
                php_error(E_WARNING,"Unable to find file identifier %d",id);
                RETURN_FALSE;
        }
@@ -2554,7 +2582,7 @@ PHP_FUNCTION(hw_getparents) {
        link=arg1->value.lval;
        id=arg2->value.lval;
        ptr = php3_list_find(link,&type);
-       if(!ptr || (type!=php3_hw_module.le_socketp && type!=php3_hw_module.le_psocketp)) {
+       if(!ptr || (type!=HwSG(le_socketp) && type!=HwSG(le_psocketp))) {
                php_error(E_WARNING,"Unable to find file identifier %d",id);
                RETURN_FALSE;
        }
@@ -2599,7 +2627,7 @@ PHP_FUNCTION(hw_children) {
        link=arg1->value.lval;
        id=arg2->value.lval;
        ptr = php3_list_find(link,&type);
-       if(!ptr || (type!=php3_hw_module.le_socketp && type!=php3_hw_module.le_psocketp)) {
+       if(!ptr || (type!=HwSG(le_socketp) && type!=HwSG(le_psocketp))) {
                php_error(E_WARNING,"Unable to find file identifier %d",id);
                RETURN_FALSE;
        }
@@ -2645,7 +2673,7 @@ PHP_FUNCTION(hw_childrenobj) {
        link=arg1->value.lval;
        id=arg2->value.lval;
        ptr = php3_list_find(link,&type);
-       if(!ptr || (type!=php3_hw_module.le_socketp && type!=php3_hw_module.le_psocketp)) {
+       if(!ptr || (type!=HwSG(le_socketp) && type!=HwSG(le_psocketp))) {
                php_error(E_WARNING,"Unable to find file identifier %d",id);
                RETURN_FALSE;
        }
@@ -2679,7 +2707,7 @@ PHP_FUNCTION(hw_getchildcoll) {
        link=arg1->value.lval;
        id=arg2->value.lval;
        ptr = php3_list_find(link,&type);
-       if(!ptr || (type!=php3_hw_module.le_socketp && type!=php3_hw_module.le_psocketp)) {
+       if(!ptr || (type!=HwSG(le_socketp) && type!=HwSG(le_psocketp))) {
                php_error(E_WARNING,"Unable to find file identifier %d",id);
                RETURN_FALSE;
        }
@@ -2725,7 +2753,7 @@ PHP_FUNCTION(hw_getchildcollobj) {
        link=arg1->value.lval;
        id=arg2->value.lval;
        ptr = php3_list_find(link,&type);
-       if(!ptr || (type!=php3_hw_module.le_socketp && type!=php3_hw_module.le_psocketp)) {
+       if(!ptr || (type!=HwSG(le_socketp) && type!=HwSG(le_psocketp))) {
                php_error(E_WARNING,"Unable to find file identifier %d",id);
                RETURN_FALSE;
        }
@@ -2758,7 +2786,7 @@ PHP_FUNCTION(hw_docbyanchor) {
        link=arg1->value.lval;
        id=arg2->value.lval;
        ptr = php3_list_find(link,&type);
-       if(!ptr || (type!=php3_hw_module.le_socketp && type!=php3_hw_module.le_psocketp)) {
+       if(!ptr || (type!=HwSG(le_socketp) && type!=HwSG(le_psocketp))) {
                php_error(E_WARNING,"Unable to find file identifier %d",id);
                RETURN_FALSE;
        }
@@ -2789,7 +2817,7 @@ PHP_FUNCTION(hw_docbyanchorobj) {
        link=arg1->value.lval;
        id=arg2->value.lval;
        ptr = php3_list_find(link,&type);
-       if(!ptr || (type!=php3_hw_module.le_socketp && type!=php3_hw_module.le_psocketp)) {
+       if(!ptr || (type!=HwSG(le_socketp) && type!=HwSG(le_psocketp))) {
                php_error(E_WARNING,"Unable to find file identifier %d",id);
                RETURN_FALSE;
        }
@@ -2830,7 +2858,7 @@ PHP_FUNCTION(hw_getobjectbyquery) {
        maxhits=arg3->value.lval;
        if (maxhits < 0) maxhits=0x7FFFFFFF;
        ptr = php3_list_find(link,&type);
-       if(!ptr || (type!=php3_hw_module.le_socketp && type!=php3_hw_module.le_psocketp)) {
+       if(!ptr || (type!=HwSG(le_socketp) && type!=HwSG(le_psocketp))) {
                php_error(E_WARNING,"Unable to find file identifier %d",link);
                RETURN_FALSE;
        }
@@ -2873,7 +2901,7 @@ PHP_FUNCTION(hw_getobjectbyqueryobj) {
        maxhits=arg3->value.lval;
        if (maxhits < 0) maxhits=0x7FFFFFFF;
        ptr = php3_list_find(link,&type);
-       if(!ptr || (type!=php3_hw_module.le_socketp && type!=php3_hw_module.le_psocketp)) {
+       if(!ptr || (type!=HwSG(le_socketp) && type!=HwSG(le_psocketp))) {
                php_error(E_WARNING,"Unable to find file identifier %d",link);
                RETURN_FALSE;
        }
@@ -2913,7 +2941,7 @@ PHP_FUNCTION(hw_getobjectbyquerycoll) {
        maxhits=arg4->value.lval;
        if (maxhits < 0) maxhits=0x7FFFFFFF;
        ptr = php3_list_find(link,&type);
-       if(!ptr || (type!=php3_hw_module.le_socketp && type!=php3_hw_module.le_psocketp)) {
+       if(!ptr || (type!=HwSG(le_socketp) && type!=HwSG(le_psocketp))) {
                php_error(E_WARNING,"Unable to find file identifier %d",id);
                RETURN_FALSE;
        }
@@ -2958,7 +2986,7 @@ PHP_FUNCTION(hw_getobjectbyquerycollobj) {
        maxhits=arg4->value.lval;
        if (maxhits < 0) maxhits=0x7FFFFFFF;
        ptr = php3_list_find(link,&type);
-       if(!ptr || (type!=php3_hw_module.le_socketp && type!=php3_hw_module.le_psocketp)) {
+       if(!ptr || (type!=HwSG(le_socketp) && type!=HwSG(le_psocketp))) {
                php_error(E_WARNING,"Unable to find file identifier %d",id);
                RETURN_FALSE;
        }
@@ -2992,7 +3020,7 @@ PHP_FUNCTION(hw_getchilddoccoll) {
        link=arg1->value.lval;
        id=arg2->value.lval;
        ptr = php3_list_find(link,&type);
-       if(!ptr || (type!=php3_hw_module.le_socketp && type!=php3_hw_module.le_psocketp)) {
+       if(!ptr || (type!=HwSG(le_socketp) && type!=HwSG(le_psocketp))) {
                php_error(E_WARNING,"Unable to find file identifier %d",id);
                RETURN_FALSE;
        }
@@ -3031,7 +3059,7 @@ PHP_FUNCTION(hw_getchilddoccollobj) {
        link=arg1->value.lval;
        id=arg2->value.lval;
        ptr = php3_list_find(link,&type);
-       if(!ptr || (type!=php3_hw_module.le_socketp && type!=php3_hw_module.le_psocketp)) {
+       if(!ptr || (type!=HwSG(le_socketp) && type!=HwSG(le_psocketp))) {
                php_error(E_WARNING,"Unable to find file identifier %d",id);
                RETURN_FALSE;
        }
@@ -3066,7 +3094,7 @@ PHP_FUNCTION(hw_getanchors) {
        link=arg1->value.lval;
        id=arg2->value.lval;
        ptr = php3_list_find(link,&type);
-       if(!ptr || (type!=php3_hw_module.le_socketp && type!=php3_hw_module.le_psocketp)) {
+       if(!ptr || (type!=HwSG(le_socketp) && type!=HwSG(le_psocketp))) {
                php_error(E_WARNING,"Unable to find file identifier %d",id);
                RETURN_FALSE;
        }
@@ -3105,7 +3133,7 @@ PHP_FUNCTION(hw_getanchorsobj) {
        link=arg1->value.lval;
        id=arg2->value.lval;
        ptr = (hw_connection *) php3_list_find(link,&type);
-       if(!ptr || (type!=php3_hw_module.le_socketp && type!=php3_hw_module.le_psocketp)) {
+       if(!ptr || (type!=HwSG(le_socketp) && type!=HwSG(le_psocketp))) {
                php_error(E_WARNING,"Unable to find file identifier %d",id);
                RETURN_FALSE;
        }
@@ -3135,7 +3163,7 @@ PHP_FUNCTION(hw_getusername) {
        convert_to_long(arg1);
        link = arg1->value.lval;
        ptr = php3_list_find(link,&type);
-       if(!ptr || (type!=php3_hw_module.le_socketp && type!=php3_hw_module.le_psocketp)) {
+       if(!ptr || (type!=HwSG(le_socketp) && type!=HwSG(le_psocketp))) {
                php_error(E_WARNING,"Unable to find file identifier %d",link);
                RETURN_FALSE;
        }
@@ -3164,7 +3192,7 @@ PHP_FUNCTION(hw_identify) {
        name=arg2->value.str.val;
        passwd=arg3->value.str.val;
        ptr = php3_list_find(link,&type);
-       if(!ptr || (type!=php3_hw_module.le_socketp && type!=php3_hw_module.le_psocketp)) {
+       if(!ptr || (type!=HwSG(le_socketp) && type!=HwSG(le_psocketp))) {
                php_error(E_WARNING,"Unable to find file identifier %d",link);
                RETURN_FALSE;
        }
@@ -3246,7 +3274,7 @@ PHP_FUNCTION(hw_incollections) {
        link = arg1->value.lval;
        retcoll=arg4->value.lval;
        ptr = php3_list_find(link,&type);
-       if(!ptr || (type!=php3_hw_module.le_socketp && type!=php3_hw_module.le_psocketp)) {
+       if(!ptr || (type!=HwSG(le_socketp) && type!=HwSG(le_psocketp))) {
                php_error(E_WARNING,"Unable to find file identifier %d",link);
                RETURN_FALSE;
        }
@@ -3306,7 +3334,7 @@ PHP_FUNCTION(hw_inscoll) {
        link = arg1->value.lval;
        id=arg2->value.lval;
        ptr = php3_list_find(link,&type);
-       if(!ptr || (type!=php3_hw_module.le_socketp && type!=php3_hw_module.le_psocketp)) {
+       if(!ptr || (type!=HwSG(le_socketp) && type!=HwSG(le_psocketp))) {
                php_error(E_WARNING,"Unable to find file identifier %d",link);
                RETURN_FALSE;
        }
@@ -3354,7 +3382,7 @@ PHP_FUNCTION(hw_insdoc) {
        link = argv[0]->value.lval;
        id = argv[1]->value.lval;
        ptr = php3_list_find(link,&type);
-       if(!ptr || (type!=php3_hw_module.le_socketp && type!=php3_hw_module.le_psocketp)) {
+       if(!ptr || (type!=HwSG(le_socketp) && type!=HwSG(le_psocketp))) {
                php_error(E_WARNING,"Unable to find file identifier %d",link);
                RETURN_FALSE;
        }
@@ -3386,7 +3414,7 @@ PHP_FUNCTION(hw_getsrcbydestobj) {
        link=arg1->value.lval;
        id=arg2->value.lval;
        ptr = php3_list_find(link,&type);
-       if(!ptr || (type!=php3_hw_module.le_socketp && type!=php3_hw_module.le_psocketp)) {
+       if(!ptr || (type!=HwSG(le_socketp) && type!=HwSG(le_psocketp))) {
                php_error(E_WARNING,"Unable to find file identifier %d",link);
                RETURN_FALSE;
        }
@@ -3424,7 +3452,7 @@ PHP_FUNCTION(hw_getrellink) {
        sourceid=arg3->value.lval;
        destid=arg4->value.lval;
        ptr = php3_list_find(link,&type);
-       if(!ptr || (type!=php3_hw_module.le_socketp && type!=php3_hw_module.le_psocketp)) {
+       if(!ptr || (type!=HwSG(le_socketp) && type!=HwSG(le_psocketp))) {
                php_error(E_WARNING,"Unable to find file identifier %d",link);
                RETURN_FALSE;
        }
@@ -3442,7 +3470,8 @@ PHP_FUNCTION(hw_getrellink) {
 
 PHP_MINFO_FUNCTION(hw)
 {
-       php_printf("HG-CSP Version: 7.17");
+       php_printf("HG-CSP Version: 7.17<BR>\n");
+       DISPLAY_INI_ENTRIES();
 }
 
 /* {{{ proto void hw_connection_info(int link)
@@ -3459,7 +3488,7 @@ PHP_FUNCTION(hw_connection_info)
        convert_to_long(arg1);
        link=arg1->value.lval;
        ptr = php3_list_find(link,&type);
-       if(!ptr || (type!=php3_hw_module.le_socketp && type!=php3_hw_module.le_psocketp)) {
+       if(!ptr || (type!=HwSG(le_socketp) && type!=HwSG(le_psocketp))) {
                php_error(E_WARNING,"Unable to find file identifier %d",link);
                RETURN_FALSE;
        }
index 087a329c3c72fb63be6f535b82020e87d6630ab2..f911c56fbb2023fa905734fbde628edf5cf9fc4d 100644 (file)
 #ifndef _HW_H
 #define _HW_H
 
+#if COMPILE_DL
+#undef HYPERWAVE
+#define HYPERWAVE 1
+#endif
+
+#if WIN32||WINNT
+#define PHP_HW_API __declspec(dllexport)
+#else
+#define PHP_HW_API
+#endif
+
 #if HYPERWAVE
+#ifndef DLEXPORT
+#define DLEXPORT
+#endif
+
+#ifdef ZTS
+#include "TSRM.h"
+#endif
+
 #include "hg_comm.h"
 
 extern php3_module_entry hw_module_entry;
 #define hw_module_ptr &hw_module_entry
 
 typedef struct {
-  long default_link;
-  long num_links,num_persistent;
-  long max_links,max_persistent;
-  long allow_persistent;
-  int le_socketp, le_psocketp, le_document;
-} hw_module;
+       long default_link;
+       long default_port;
+       long num_links,num_persistent;
+       long max_links,max_persistent;
+       long allow_persistent;
+       int le_socketp, le_psocketp, le_document;
+} php_hw_globals;
+
+#ifdef ZTS
+# define HwSLS_D        php_hw_globals *hw_globals
+# define HwSLS_DC       , HwSLS_D
+# define HwSLS_C        hw_globals
+# define HwSLS_CC , HwSLS_C
+# define HwSG(v) (hw_globals->v)
+# define HwSLS_FETCH()  php_hw_globals *hw_globals = ts_resource(hw_globals_id)
+#else
+# define HwSLS_D
+# define HwSLS_DC
+# define HwSLS_C
+# define HwSLS_CC
+# define HwSG(v) (hw_globals.v)
+# define HwSLS_FETCH()
+extern PHP_HW_API php_hw_globals hw_globals;
+#endif
 
-extern hw_module php3_hw_module;
+//extern hw_module php3_hw_module;
 
 typedef struct {
         int size;
@@ -54,6 +91,7 @@ typedef struct {
 extern hw_connection php3_hw_connection;
 
 extern PHP_MINIT_FUNCTION(hw);
+extern PHP_MSHUTDOWN_FUNCTION(hw);
 PHP_MINFO_FUNCTION(hw);
 
 PHP_FUNCTION(hw_connect);
index 08730ca844df02963c9293262b6109f27b474c3b..3780b3a9252042ebe5432cb1531c3a15c95737d7 100644 (file)
@@ -29,7 +29,7 @@
 
 /* $Id$ */
 
-/* pdflib 0.6 is subject to the ALADDIN FREE PUBLIC LICENSE.
+/* pdflib 2.01 is subject to the ALADDIN FREE PUBLIC LICENSE.
    Copyright (C) 1997 Thomas Merz. */
 
 /* Note that there is no code from the pdflib package in this file */
@@ -157,7 +157,7 @@ function_entry pdf_functions[] = {
 };
 
 php3_module_entry pdf_module_entry = {
-       "pdf", pdf_functions, PHP_MINIT(pdf), php3_mend_pdf, NULL, NULL, PHP_MINFO(pdf), 0, 0, 0, NULL
+       "pdf", pdf_functions, PHP_MINIT(pdf), PHP_MSHUTDOWN(pdf), NULL, NULL, PHP_MINFO(pdf), STANDARD_MODULE_PROPERTIES 
 };
 
 #if COMPILE_DL
@@ -189,10 +189,15 @@ PHP_MINIT_FUNCTION(pdf)
 
 PHP_MINFO_FUNCTION(pdf) {
        /* need to use a PHPAPI function here because it is external module in windows */
-       php3_printf("pdflib %d.%d",  PDF_get_majorversion(), PDF_get_minorversion());
+       php3_printf("pdflib %d.%02d<BR>",  PDF_get_majorversion(), PDF_get_minorversion());
+#if PDFLIB_MINORVERSION > 0
+               php3_printf("The function pdf_put_image() and pdf_execute_image() are <B>not</B> available");
+#else
+               php3_printf("The function pdf_put_image() and pdf_execute_image() are available");
+#endif
 }
 
-int php3_mend_pdf(void){
+PHP_MSHUTDOWN_FUNCTION(pdf){
        return SUCCESS;
 }
 
@@ -2014,9 +2019,13 @@ PHP_FUNCTION(pdf_open_memory_image) {
        }
 
 
-       pdf_image = PDF_open_memory_image(pdf, buffer, im->sx, im->sy, 3, 8);
+#if PDFLIB_MINORVERSION == 0
+               pdf_image = PDF_open_memory_image(pdf, buffer, im->sx, im->sy, 3, 8);
+#else
+               pdf_image = PDF_open_memory_image(pdf, "raw", "memory", buffer, im->sx*im->sy*3, im->sx, im->sy, 3, 8, NULL);
+#endif
 
-       if(0 > pdf_image) {
+       if(-1 == pdf_image) {
                php3_error(E_WARNING, "Could not open image");
                RETURN_FALSE;
        }
@@ -2110,6 +2119,9 @@ PHP_FUNCTION(pdf_put_image) {
        PDF *pdf;
        PDF_TLS_VARS;
        
+#if PDFLIB_MINORVERSION > 0
+       php_printf(E_WARNING, "Version 2.01 of pdflib does not need the pdf_put_image() anymore, check the docs!");
+#else
        if (ARG_COUNT(ht) != 2 || getParameters(ht, 2, &arg1, &arg2) == FAILURE) {
                WRONG_PARAM_COUNT;
        }
@@ -2129,9 +2141,10 @@ PHP_FUNCTION(pdf_put_image) {
                php3_error(E_WARNING,"Unable to find file identifier %d",id);
                RETURN_FALSE;
        }
-       
+
        PDF_put_image(pdf, pdf_image);
-       
+#endif
+
        RETURN_TRUE;
 }
 /* }}} */
@@ -2145,6 +2158,9 @@ PHP_FUNCTION(pdf_execute_image) {
        PDF *pdf;
        PDF_TLS_VARS;
 
+#if PDFLIB_MINORVERSION >= 01
+       php_printf(E_WARNING, "Version 2.01 of pdflib does not need the pdf_execute_image() anymore, check the docs!");
+#else
        if (ARG_COUNT(ht) != 5 || getParameters(ht, 5, &arg1, &arg2, &arg3, &arg4, &arg5) == FAILURE) {
                WRONG_PARAM_COUNT;
        }
@@ -2170,7 +2186,7 @@ PHP_FUNCTION(pdf_execute_image) {
        convert_to_double(arg5);
 
        PDF_execute_image(pdf, pdf_image, (float) arg3->value.dval, (float) arg4->value.dval, arg5->value.dval);
-
+#endif
        RETURN_TRUE;
 }
 /* }}} */
index 3f311a849929130ee3b3b31831bd704be36a31f0..f7393c3f1549ff3a2a81d336a720d8111a2d70b5 100644 (file)
@@ -42,7 +42,7 @@ extern php3_module_entry pdf_module_entry;
 
 extern PHP_MINFO_FUNCTION(pdf);
 extern PHP_MINIT_FUNCTION(pdf);
-extern int php3_mend_pdf(void);
+extern PHP_MSHUTDOWN_FUNCTION(pdf);
 PHP_FUNCTION(pdf_set_info_creator);
 PHP_FUNCTION(pdf_set_info_title);
 PHP_FUNCTION(pdf_set_info_subject);