}
/* }}} */
+#define HTTP_DO_NEGOTIATE_DEFAULT(supported) \
+ { \
+ zval **value; \
+ \
+ zend_hash_internal_pointer_reset(Z_ARRVAL_P(supported)); \
+ if (SUCCESS == zend_hash_get_current_data(Z_ARRVAL_P(supported), (void *) &value)) { \
+ RETVAL_ZVAL(*value, 1, 0); \
+ } else { \
+ RETVAL_NULL(); \
+ } \
+ }
#define HTTP_DO_NEGOTIATE(type, supported, rs_array) \
{ \
HashTable *result; \
uint key_len; \
ulong idx; \
\
- if (HASH_KEY_IS_STRING == zend_hash_get_current_key_ex(result, &key, &key_len, &idx, 1, NULL)) { \
+ if (zend_hash_num_elements(result) && HASH_KEY_IS_STRING == zend_hash_get_current_key_ex(result, &key, &key_len, &idx, 1, NULL)) { \
RETVAL_STRINGL(key, key_len-1, 0); \
} else { \
- RETVAL_NULL(); \
+ HTTP_DO_NEGOTIATE_DEFAULT(supported); \
} \
\
if (rs_array) { \
FREE_HASHTABLE(result); \
\
} else { \
- zval **value; \
- \
- zend_hash_internal_pointer_reset(Z_ARRVAL_P(supported)); \
- if (SUCCESS == zend_hash_get_current_data(Z_ARRVAL_P(supported), (void *) &value)) { \
- RETVAL_ZVAL(*value, 1, 0); \
- } else { \
- RETVAL_NULL(); \
- } \
+ HTTP_DO_NEGOTIATE_DEFAULT(supported); \
\
if (rs_array) { \
HashPosition pos; \
var_dump(http_negotiate_charset($csets[0], $cresult));
var_dump(http_negotiate_content_type($ctype[0]));
var_dump(http_negotiate_content_type($ctype[0], $tresult));
+var_dump(http_negotiate_language(array("unknown")));
+var_dump(http_negotiate_charset(array("unknown")));
+var_dump(http_negotiate_content_type(array("unknown")));
print_r($lresult);
print_r($cresult);
print_r($tresult);
echo "Done\n";
+?>
--EXPECTF--
%sTEST
string(2) "de"
string(10) "iso-8859-1"
string(21) "application/xhtml+xml"
string(21) "application/xhtml+xml"
+string(7) "unknown"
+string(7) "unknown"
+string(7) "unknown"
Array
(
[de] => 900