From: Sascha Schumann Date: Tue, 17 Oct 2000 03:02:47 +0000 (+0000) Subject: Back out ws changes X-Git-Tag: php-4.0.4RC3~658 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=2d24f0303388cdd7807d11623e1871c7dfe908a3;p=php Back out ws changes --- diff --git a/ext/standard/url_scanner_ex.re b/ext/standard/url_scanner_ex.re index b58b72d7c4..e5999f5992 100644 --- a/ext/standard/url_scanner_ex.re +++ b/ext/standard/url_scanner_ex.re @@ -41,117 +41,117 @@ static PHP_INI_MH(OnUpdateTags) { - url_adapt_state_ex_t *ctx; - char *key; - char *lasts; - char *tmp; - BLS_FETCH(); - - ctx = &BG(url_adapt_state_ex); - - tmp = estrndup(new_value, new_value_length); - - if (ctx->tags) - zend_hash_destroy(ctx->tags); - else - ctx->tags = malloc(sizeof(HashTable)); - - zend_hash_init(ctx->tags, 0, NULL, NULL, 1); - - for (key = php_strtok_r(tmp, ",", &lasts); - key; - key = php_strtok_r(NULL, ",", &lasts)) { - char *val; - - val = strchr(key, '='); - if (val) { - char *q; - int keylen; - - *val++ = '\0'; - for (q = key; *q; q++) - *q = tolower(*q); - keylen = q - key; - /* key is stored withOUT NUL - val is stored WITH NUL */ - zend_hash_add(ctx->tags, key, keylen, val, strlen(val)+1, NULL); - } - } - - efree(tmp); - - return SUCCESS; + url_adapt_state_ex_t *ctx; + char *key; + char *lasts; + char *tmp; + BLS_FETCH(); + + ctx = &BG(url_adapt_state_ex); + + tmp = estrndup(new_value, new_value_length); + + if (ctx->tags) + zend_hash_destroy(ctx->tags); + else + ctx->tags = malloc(sizeof(HashTable)); + + zend_hash_init(ctx->tags, 0, NULL, NULL, 1); + + for (key = php_strtok_r(tmp, ",", &lasts); + key; + key = php_strtok_r(NULL, ",", &lasts)) { + char *val; + + val = strchr(key, '='); + if (val) { + char *q; + int keylen; + + *val++ = '\0'; + for (q = key; *q; q++) + *q = tolower(*q); + keylen = q - key; + /* key is stored withOUT NUL + val is stored WITH NUL */ + zend_hash_add(ctx->tags, key, keylen, val, strlen(val)+1, NULL); + } + } + + efree(tmp); + + return SUCCESS; } PHP_INI_BEGIN() - STD_PHP_INI_ENTRY("url_rewriter.tags", "a=href,area=href,frame=src,form=fakeentry", PHP_INI_ALL, OnUpdateTags, url_adapt_state_ex, php_basic_globals, basic_globals) + STD_PHP_INI_ENTRY("url_rewriter.tags", "a=href,area=href,frame=src,form=fakeentry", PHP_INI_ALL, OnUpdateTags, url_adapt_state_ex, php_basic_globals, basic_globals) PHP_INI_END() static inline void append_modified_url(smart_str *url, smart_str *dest, smart_str *name, smart_str *val, const char *separator) { - register const char *p, *q; - const char *bash = NULL; - char sep = '?'; - - q = url->c + url->len; - - for (p = url->c; p < q; p++) { - switch(*p) { - case ':': - smart_str_append(dest, url); - return; - case '?': - sep = *separator; - break; - case '#': - bash = p; - break; - } - } - - /* Don't modify URLs of the format "#mark" */ - if (bash - url->c == 0) { - smart_str_append(dest, url); - return; - } - - if (bash) - smart_str_appendl(dest, url->c, bash - url->c); - else - smart_str_append(dest, url); - - smart_str_appendc(dest, sep); - smart_str_append(dest, name); - smart_str_appendc(dest, '='); - smart_str_append(dest, val); - - if (bash) - smart_str_appendl(dest, bash, q - bash); + register const char *p, *q; + const char *bash = NULL; + char sep = '?'; + + q = url->c + url->len; + + for (p = url->c; p < q; p++) { + switch(*p) { + case ':': + smart_str_append(dest, url); + return; + case '?': + sep = *separator; + break; + case '#': + bash = p; + break; + } + } + + /* Don't modify URLs of the format "#mark" */ + if (bash - url->c == 0) { + smart_str_append(dest, url); + return; + } + + if (bash) + smart_str_appendl(dest, url->c, bash - url->c); + else + smart_str_append(dest, url); + + smart_str_appendc(dest, sep); + smart_str_append(dest, name); + smart_str_appendc(dest, '='); + smart_str_append(dest, val); + + if (bash) + smart_str_appendl(dest, bash, q - bash); } static inline void tag_arg(url_adapt_state_ex_t *ctx PLS_DC) { - char f = 0; - - if (strncasecmp(ctx->arg.c, ctx->lookup_data, ctx->arg.len) == 0) - f = 1; - - smart_str_appendc(&ctx->result, '"'); - if (f) { - append_modified_url(&ctx->val, &ctx->result, &ctx->q_name, &ctx->q_value, PG(arg_separator)); - } else { - smart_str_append(&ctx->result, &ctx->val); - } - smart_str_appendc(&ctx->result, '"'); + char f = 0; + + if (strncasecmp(ctx->arg.c, ctx->lookup_data, ctx->arg.len) == 0) + f = 1; + + smart_str_appendc(&ctx->result, '"'); + if (f) { + append_modified_url(&ctx->val, &ctx->result, &ctx->q_name, &ctx->q_value, PG(arg_separator)); + } else { + smart_str_append(&ctx->result, &ctx->val); + } + smart_str_appendc(&ctx->result, '"'); } enum { - STATE_PLAIN, - STATE_TAG, - STATE_NEXT_ARG, - STATE_ARG, - STATE_BEFORE_VAL, - STATE_VAL + STATE_PLAIN, + STATE_TAG, + STATE_NEXT_ARG, + STATE_ARG, + STATE_BEFORE_VAL, + STATE_VAL }; #define YYFILL(n) goto stop @@ -162,43 +162,43 @@ enum { #define STATE ctx->state #define PASSTHRU() {\ - smart_str_appendl(&ctx->result, start, YYCURSOR - start); \ + smart_str_appendl(&ctx->result, start, YYCURSOR - start); \ } #define HANDLE_FORM() {\ - if (ctx->tag.len == 4 && strncasecmp(ctx->tag.c, "form", 4) == 0) {\ - smart_str_appends(&ctx->result, "result, &ctx->q_name); \ - smart_str_appends(&ctx->result, "\" VALUE=\""); \ - smart_str_append(&ctx->result, &ctx->q_value); \ - smart_str_appends(&ctx->result, "\">"); \ - } \ + if (ctx->tag.len == 4 && strncasecmp(ctx->tag.c, "form", 4) == 0) {\ + smart_str_appends(&ctx->result, "result, &ctx->q_name); \ + smart_str_appends(&ctx->result, "\" VALUE=\""); \ + smart_str_append(&ctx->result, &ctx->q_value); \ + smart_str_appends(&ctx->result, "\">"); \ + } \ } /* - * HANDLE_TAG copies the HTML Tag and checks whether we + * HANDLE_TAG copies the HTML Tag and checks whether we * have that tag in our table. If we might modify it, * we continue to scan the tag, otherwise we simply copy the complete * HTML stuff to the result buffer. */ #define HANDLE_TAG() {\ - int ok = 0; \ - int i; \ - smart_str_copyl(&ctx->tag, start, YYCURSOR - start); \ - for (i = 0; i < ctx->tag.len; i++) \ - ctx->tag.c[i] = tolower(ctx->tag.c[i]); \ - if (zend_hash_find(ctx->tags, ctx->tag.c, ctx->tag.len, &ctx->lookup_data) == SUCCESS) \ - ok = 1; \ - STATE = ok ? STATE_NEXT_ARG : STATE_PLAIN; \ + int ok = 0; \ + int i; \ + smart_str_copyl(&ctx->tag, start, YYCURSOR - start); \ + for (i = 0; i < ctx->tag.len; i++) \ + ctx->tag.c[i] = tolower(ctx->tag.c[i]); \ + if (zend_hash_find(ctx->tags, ctx->tag.c, ctx->tag.len, &ctx->lookup_data) == SUCCESS) \ + ok = 1; \ + STATE = ok ? STATE_NEXT_ARG : STATE_PLAIN; \ } #define HANDLE_ARG() {\ - smart_str_copyl(&ctx->arg, start, YYCURSOR - start); \ + smart_str_copyl(&ctx->arg, start, YYCURSOR - start); \ } #define HANDLE_VAL(quotes) {\ - smart_str_setl(&ctx->val, start + quotes, YYCURSOR - start - quotes * 2); \ - tag_arg(ctx PLS_CC); \ + smart_str_setl(&ctx->val, start + quotes, YYCURSOR - start - quotes * 2); \ + tag_arg(ctx PLS_CC); \ } #ifdef SCANNER_DEBUG @@ -209,149 +209,149 @@ enum { static inline void mainloop(url_adapt_state_ex_t *ctx, const char *newdata, size_t newlen) { - char *end, *q; - char *xp; - char *start; - int rest; - PLS_FETCH(); + char *end, *q; + char *xp; + char *start; + int rest; + PLS_FETCH(); - smart_str_appendl(&ctx->buf, newdata, newlen); - - YYCURSOR = ctx->buf.c; - YYLIMIT = ctx->buf.c + ctx->buf.len; + smart_str_appendl(&ctx->buf, newdata, newlen); + + YYCURSOR = ctx->buf.c; + YYLIMIT = ctx->buf.c + ctx->buf.len; /*!re2c any = [\000-\377]; alpha = [a-zA-Z]; */ - - while(1) { - start = YYCURSOR; - scdebug(("state %d at %s\n", STATE, YYCURSOR)); - switch(STATE) { - - case STATE_PLAIN: + + while(1) { + start = YYCURSOR; + scdebug(("state %d at %s\n", STATE, YYCURSOR)); + switch(STATE) { + + case STATE_PLAIN: /*!re2c - [<] { PASSTHRU(); STATE = STATE_TAG; continue; } - (any\[<]) { PASSTHRU(); continue; } + [<] { PASSTHRU(); STATE = STATE_TAG; continue; } + (any\[<]) { PASSTHRU(); continue; } */ - break; - - case STATE_TAG: + break; + + case STATE_TAG: /*!re2c - alpha+ { HANDLE_TAG() /* Sets STATE */; PASSTHRU(); continue; } - any { PASSTHRU(); STATE = STATE_PLAIN; continue; } + alpha+ { HANDLE_TAG() /* Sets STATE */; PASSTHRU(); continue; } + any { PASSTHRU(); STATE = STATE_PLAIN; continue; } */ - break; - - case STATE_NEXT_ARG: + break; + + case STATE_NEXT_ARG: /*!re2c - ">" { PASSTHRU(); HANDLE_FORM(); STATE = STATE_PLAIN; continue; } - [ \n] { PASSTHRU(); continue; } - alpha { YYCURSOR--; STATE = STATE_ARG; continue; } - any { PASSTHRU(); continue; } + ">" { PASSTHRU(); HANDLE_FORM(); STATE = STATE_PLAIN; continue; } + [ \n] { PASSTHRU(); continue; } + alpha { YYCURSOR--; STATE = STATE_ARG; continue; } + any { PASSTHRU(); continue; } */ - break; + break; - case STATE_ARG: + case STATE_ARG: /*!re2c - alpha+ { PASSTHRU(); HANDLE_ARG(); STATE = STATE_BEFORE_VAL; continue; } - any { PASSTHRU(); STATE = STATE_NEXT_ARG; continue; } + alpha+ { PASSTHRU(); HANDLE_ARG(); STATE = STATE_BEFORE_VAL; continue; } + any { PASSTHRU(); STATE = STATE_NEXT_ARG; continue; } */ - case STATE_BEFORE_VAL: + case STATE_BEFORE_VAL: /*!re2c - [ ]* "=" [ ]* { PASSTHRU(); STATE = STATE_VAL; continue; } - any { YYCURSOR--; STATE = STATE_NEXT_ARG; continue; } + [ ]* "=" [ ]* { PASSTHRU(); STATE = STATE_VAL; continue; } + any { YYCURSOR--; STATE = STATE_NEXT_ARG; continue; } */ - break; + break; - case STATE_VAL: + case STATE_VAL: /*!re2c - ["] (any\[">])* ["] { HANDLE_VAL(1); STATE = STATE_NEXT_ARG; continue; } - ['] (any\['>])* ['] { HANDLE_VAL(1); STATE = STATE_NEXT_ARG; continue; } - (any\[ \n>"])+ { HANDLE_VAL(0); STATE = STATE_NEXT_ARG; continue; } - any { PASSTHRU(); STATE = STATE_NEXT_ARG; continue; } + ["] (any\[">])* ["] { HANDLE_VAL(1); STATE = STATE_NEXT_ARG; continue; } + ['] (any\['>])* ['] { HANDLE_VAL(1); STATE = STATE_NEXT_ARG; continue; } + (any\[ \n>"])+ { HANDLE_VAL(0); STATE = STATE_NEXT_ARG; continue; } + any { PASSTHRU(); STATE = STATE_NEXT_ARG; continue; } */ - break; - } - } + break; + } + } stop: - scdebug(("stopped in state %d at pos %d (%d:%c)\n", STATE, YYCURSOR - ctx->buf.c, *YYCURSOR, *YYCURSOR)); - - rest = YYLIMIT - start; + scdebug(("stopped in state %d at pos %d (%d:%c)\n", STATE, YYCURSOR - ctx->buf.c, *YYCURSOR, *YYCURSOR)); - if (rest) memmove(ctx->buf.c, start, rest); - ctx->buf.len = rest; + rest = YYLIMIT - start; + + if (rest) memmove(ctx->buf.c, start, rest); + ctx->buf.len = rest; } char *url_adapt_ext(const char *src, size_t srclen, const char *name, const char *value, size_t *newlen) { - char *ret; - url_adapt_state_ex_t *ctx; - BLS_FETCH(); - - ctx = &BG(url_adapt_state_ex); - - smart_str_sets(&ctx->q_name, name); - smart_str_sets(&ctx->q_value, value); - mainloop(ctx, src, srclen); - - *newlen = ctx->result.len; - - if (ctx->result.len == 0) { - return strdup(""); - } - smart_str_0(&ctx->result); - ret = malloc(ctx->result.len + 1); - memcpy(ret, ctx->result.c, ctx->result.len + 1); - - ctx->result.len = 0; - return ret; + char *ret; + url_adapt_state_ex_t *ctx; + BLS_FETCH(); + + ctx = &BG(url_adapt_state_ex); + + smart_str_sets(&ctx->q_name, name); + smart_str_sets(&ctx->q_value, value); + mainloop(ctx, src, srclen); + + *newlen = ctx->result.len; + + if (ctx->result.len == 0) { + return strdup(""); + } + smart_str_0(&ctx->result); + ret = malloc(ctx->result.len + 1); + memcpy(ret, ctx->result.c, ctx->result.len + 1); + + ctx->result.len = 0; + return ret; } PHP_RINIT_FUNCTION(url_scanner) { - url_adapt_state_ex_t *ctx; - BLS_FETCH(); + url_adapt_state_ex_t *ctx; + BLS_FETCH(); + + ctx = &BG(url_adapt_state_ex); - ctx = &BG(url_adapt_state_ex); + memset(ctx, 0, ((size_t) &((url_adapt_state_ex_t *)0)->tags)); - memset(ctx, 0, ((size_t) &((url_adapt_state_ex_t *)0)->tags)); - - return SUCCESS; + return SUCCESS; } PHP_RSHUTDOWN_FUNCTION(url_scanner) { - url_adapt_state_ex_t *ctx; - BLS_FETCH(); - - ctx = &BG(url_adapt_state_ex); + url_adapt_state_ex_t *ctx; + BLS_FETCH(); + + ctx = &BG(url_adapt_state_ex); - smart_str_free(&ctx->result); - smart_str_free(&ctx->buf); - smart_str_free(&ctx->tag); - smart_str_free(&ctx->arg); + smart_str_free(&ctx->result); + smart_str_free(&ctx->buf); + smart_str_free(&ctx->tag); + smart_str_free(&ctx->arg); - return SUCCESS; + return SUCCESS; } PHP_MINIT_FUNCTION(url_scanner) { - REGISTER_INI_ENTRIES(); - return SUCCESS; + REGISTER_INI_ENTRIES(); + return SUCCESS; } PHP_MSHUTDOWN_FUNCTION(url_scanner) { - BLS_FETCH(); + BLS_FETCH(); - UNREGISTER_INI_ENTRIES(); - zend_hash_destroy(BG(url_adapt_state_ex).tags); - free(BG(url_adapt_state_ex).tags); - return SUCCESS; + UNREGISTER_INI_ENTRIES(); + zend_hash_destroy(BG(url_adapt_state_ex).tags); + free(BG(url_adapt_state_ex).tags); + return SUCCESS; } -#endif \ No newline at end of file +#endif