From: Uwe Steinmann Date: Mon, 30 Sep 2002 09:27:56 +0000 (+0000) Subject: - make_objrec_from_array() gets a second parameter to handle key/pairs of X-Git-Tag: MODERN_SYMMETRIC_SESSION_BEHAVIOUR_20021003~57 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=86e3e1ac85617d329f1f8ee040f655cfa87b496f;p=php - make_objrec_from_array() gets a second parameter to handle key/pairs of the form key=value and key:value. - Proper treatment of the attribute SQLStmt --- diff --git a/ext/hyperwave/hw.c b/ext/hyperwave/hw.c index aa04f7aa6d..09a889434b 100644 --- a/ext/hyperwave/hw.c +++ b/ext/hyperwave/hw.c @@ -313,6 +313,7 @@ int make2_return_array_from_objrec(pval **return_value, char *objrec, zval *sarr add_assoc_long(spec_arr, "Group", HW_ATTR_NONE); add_assoc_long(spec_arr, "HtmlAttr", HW_ATTR_NONE); add_assoc_long(spec_arr, "Parent", HW_ATTR_NONE); + add_assoc_long(spec_arr, "SQLStmt", HW_ATTR_NR); } if (array_init(*return_value) == FAILURE) { @@ -549,9 +550,10 @@ int make_return_array_from_objrec(pval **return_value, char *objrec) { #define BUFFERLEN 1024 /* {{{ make_objrec_from_array */ -static char * make_objrec_from_array(HashTable *lht) { +static char * make_objrec_from_array(HashTable *lht, char delim) { int i, count, keytype; - ulong length; + ulong idx; + uint length; char *key, str[BUFFERLEN], *objrec = NULL; zval *keydata, **keydataptr; @@ -560,25 +562,32 @@ static char * make_objrec_from_array(HashTable *lht) { if(0 == (count = zend_hash_num_elements(lht))) return NULL; - + + if(delim == 0) + delim = '='; + zend_hash_internal_pointer_reset(lht); objrec = malloc(1); *objrec = '\0'; for(i=0; i 0) { - strarr = make_objrec_from_array(Z_ARRVAL_P(keydata)); + strarr = make_objrec_from_array(Z_ARRVAL_P(keydata), ':'); len = strlen(strarr) - 1; keylen = strlen(key); if(NULL == (ptr = malloc(len + 1 + count*(keylen+1)))) { @@ -605,8 +614,8 @@ static char * make_objrec_from_array(HashTable *lht) { strcpy(ptr1, key); ptr1 += keylen; *ptr1++ = '='; - } else if(strarr[i] == '=') - ptr1[-1] = ':'; + }/* else if(strarr[i] == '=') + ptr1[-1] = ':'; */ } *ptr1++ = '\n'; *ptr1 = '\0'; @@ -1904,7 +1913,7 @@ PHP_FUNCTION(hw_modifyobject) char *strarr, *ptr, *ptr1; count = zend_hash_num_elements(Z_ARRVAL_P(data)); if(count > 0) { - strarr = make_objrec_from_array(Z_ARRVAL_P(data)); + strarr = make_objrec_from_array(Z_ARRVAL_P(data), ':'); len = strlen(strarr) - 1; keylen = strlen(key); if(NULL == (ptr = malloc(len + 1 + count*(keylen+1+4)))) { @@ -1928,8 +1937,8 @@ PHP_FUNCTION(hw_modifyobject) strcpy(ptr1, key); ptr1 += keylen; *ptr1++ = '='; - } else if(strarr[i] == '=') - ptr1[-1] = ':'; + } /* else if(strarr[i] == '=') + ptr1[-1] = ':'; */ } *ptr1 = '\0'; strlcpy(addattribute, ptr, sizeof(addattribute)); @@ -1974,7 +1983,7 @@ PHP_FUNCTION(hw_modifyobject) char *strarr, *ptr, *ptr1; count = zend_hash_num_elements(Z_ARRVAL_P(data)); if(count > 0) { - strarr = make_objrec_from_array(Z_ARRVAL_P(data)); + strarr = make_objrec_from_array(Z_ARRVAL_P(data), ':'); len = strlen(strarr) - 1; keylen = strlen(key); if(NULL == (ptr = malloc(len + 1 + count*(keylen+1+4)))) { @@ -1998,8 +2007,8 @@ PHP_FUNCTION(hw_modifyobject) strcpy(ptr1, key); ptr1 += keylen; *ptr1++ = '='; - } else if(strarr[i] == '=') - ptr1[-1] = ':'; + } /* else if(strarr[i] == '=') + ptr1[-1] = ':'; */ } *ptr1++ = '\n'; *ptr1 = '\0'; @@ -4046,7 +4055,7 @@ PHP_FUNCTION(hw_array2objrec) WRONG_PARAM_COUNT; } convert_to_array_ex(arg1); - objrec = make_objrec_from_array(Z_ARRVAL_PP(arg1)); + objrec = make_objrec_from_array(Z_ARRVAL_PP(arg1), '='); if(objrec) { retobj = estrdup(objrec); free(objrec); @@ -4141,7 +4150,7 @@ PHP_FUNCTION(hw_inscoll) RETURN_FALSE; } - if(NULL == (objrec = make_objrec_from_array(Z_ARRVAL_PP(arg3)))) { + if(NULL == (objrec = make_objrec_from_array(Z_ARRVAL_PP(arg3), '='))) { php_error(E_WARNING, "%s(): Could not create Object Record from Array", get_active_function_name(TSRMLS_C)); RETURN_FALSE; }