]> granicus.if.org Git - php/commitdiff
Back out ws changes
authorSascha Schumann <sas@php.net>
Tue, 17 Oct 2000 03:02:47 +0000 (03:02 +0000)
committerSascha Schumann <sas@php.net>
Tue, 17 Oct 2000 03:02:47 +0000 (03:02 +0000)
ext/standard/url_scanner_ex.re

index b58b72d7c492f2fd52a0038bf9a03fe64a5f8c66..e5999f599247226f8881e1b1160137f94dfd2f5e 100644 (file)
 
 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, "<INPUT TYPE=HIDDEN NAME=\""); \
-        smart_str_append(&ctx->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, "<INPUT TYPE=HIDDEN NAME=\""); \
+               smart_str_append(&ctx->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