X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=src%2Fphp_http_misc.c;h=f0cc25fa32e0d2bf07eac0ef2295d839d009f741;hp=23fb4b553ea28d35bbf51d86768386bbe2a11bff;hb=ba429472d56e45d8ce65d47ec0b5027f3bba4407;hpb=512de8cdaf8a02b4329e0ceb8368cb8f15eba7cb diff --git a/src/php_http_misc.c b/src/php_http_misc.c index 23fb4b5..f0cc25f 100644 --- a/src/php_http_misc.c +++ b/src/php_http_misc.c @@ -19,11 +19,11 @@ void php_http_sleep(double s) { -#if defined(PHP_WIN32) +#if PHP_WIN32 Sleep((DWORD) PHP_HTTP_MSEC(s)); -#elif defined(HAVE_USLEEP) +#elif HAVE_USLEEP usleep(PHP_HTTP_USEC(s)); -#elif defined(HAVE_NANOSLEEP) +#elif HAVE_NANOSLEEP struct timespec req, rem; req.tv_sec = (time_t) s; @@ -50,11 +50,11 @@ int php_http_match(const char *haystack_str, const char *needle_str, int flags) { int result = 0; - if (!haystack_str || !needle_str) { + if (UNEXPECTED(!haystack_str || !needle_str)) { return result; } - if (flags & PHP_HTTP_MATCH_FULL) { + if (UNEXPECTED(flags & PHP_HTTP_MATCH_FULL)) { if (flags & PHP_HTTP_MATCH_CASE) { result = !strcmp(haystack_str, needle_str); } else { @@ -64,7 +64,7 @@ int php_http_match(const char *haystack_str, const char *needle_str, int flags) const char *found; char *haystack = estrdup(haystack_str), *needle = estrdup(needle_str); - if (flags & PHP_HTTP_MATCH_CASE) { + if (UNEXPECTED(flags & PHP_HTTP_MATCH_CASE)) { found = zend_memnstr(haystack, needle, strlen(needle), haystack+strlen(haystack)); } else { found = php_stristr(haystack, needle, strlen(haystack), strlen(needle)); @@ -73,7 +73,7 @@ int php_http_match(const char *haystack_str, const char *needle_str, int flags) if (found) { if (!(flags & PHP_HTTP_MATCH_WORD) || ( (found == haystack || !PHP_HTTP_IS_CTYPE(alnum, *(found - 1))) - && (!*(found + strlen(needle)) || !PHP_HTTP_IS_CTYPE(alnum, *(found + strlen(needle)))) + && EXPECTED(!*(found + strlen(needle)) || !PHP_HTTP_IS_CTYPE(alnum, *(found + strlen(needle)))) ) ) { result = 1; @@ -87,27 +87,37 @@ int php_http_match(const char *haystack_str, const char *needle_str, int flags) return result; } -char *php_http_pretty_key(register char *key, size_t key_len, zend_bool uctitle, zend_bool xhyphen) +char *php_http_pretty_key(char *key, size_t key_len, zend_bool uctitle, zend_bool xhyphen) { - size_t i = 1; + size_t i; int wasalpha; if (key && key_len) { - if ((wasalpha = PHP_HTTP_IS_CTYPE(alpha, key[0]))) { - key[0] = (char) (uctitle ? PHP_HTTP_TO_CTYPE(upper, key[0]) : PHP_HTTP_TO_CTYPE(lower, key[0])); + if (EXPECTED(wasalpha = PHP_HTTP_IS_CTYPE(alpha, key[0]))) { + if (EXPECTED(uctitle)) { + key[0] = PHP_HTTP_TO_CTYPE(upper, key[0]); + } else { + key[0] = PHP_HTTP_TO_CTYPE(lower, key[0]); + } } - PHP_HTTP_DUFF(key_len, - if (PHP_HTTP_IS_CTYPE(alpha, key[i])) { - key[i] = (char) (((!wasalpha) && uctitle) ? PHP_HTTP_TO_CTYPE(upper, key[i]) : PHP_HTTP_TO_CTYPE(lower, key[i])); - wasalpha = 1; + for (i = 1; i < key_len; ++i) { + if (EXPECTED(PHP_HTTP_IS_CTYPE(alpha, key[i]))) { + if (EXPECTED(wasalpha)) { + key[i] = PHP_HTTP_TO_CTYPE(lower, key[i]); + } else if (EXPECTED(uctitle)) { + key[i] = PHP_HTTP_TO_CTYPE(upper, key[i]); + wasalpha = 1; + } else { + key[i] = PHP_HTTP_TO_CTYPE(lower, key[i]); + wasalpha = 1; + } } else { - if (xhyphen && (key[i] == '_')) { + if (EXPECTED(xhyphen && (key[i] == '_'))) { key[i] = '-'; } wasalpha = 0; } - ++i; - ); + } } return key; } @@ -190,7 +200,7 @@ int php_http_array_apply_append_func(zval *value, int num_args, va_list args, ze if (flags & ARRAY_JOIN_STRINGIFY) { convert_to_string_ex(value); } - Z_ADDREF_P(value); + Z_TRY_ADDREF_P(value); if (data) { if (Z_TYPE_P(data) != IS_ARRAY) {