iliaa           Wed Oct 10 00:34:40 2007 UTC

  Modified files:              (Branch: PHP_5_3)
    /php-src/ext/standard       url_scanner_ex.c url_scanner_ex.re 
  Log:
  Fixed bug #42869 (automatic session id insertion adds sessions id to
  non-local forms)
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/url_scanner_ex.c?r1=1.95.2.4.2.3&r2=1.95.2.4.2.3.2.1&diff_format=u
Index: php-src/ext/standard/url_scanner_ex.c
diff -u php-src/ext/standard/url_scanner_ex.c:1.95.2.4.2.3 
php-src/ext/standard/url_scanner_ex.c:1.95.2.4.2.3.2.1
--- php-src/ext/standard/url_scanner_ex.c:1.95.2.4.2.3  Wed Jun  6 12:27:24 2007
+++ php-src/ext/standard/url_scanner_ex.c       Wed Oct 10 00:34:40 2007
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.11.0 on Tue Jun  5 19:51:02 2007 */
+/* Generated by re2c 0.11.0 on Tue Oct  9 20:28:45 2007 */
 #line 1 "ext/standard/url_scanner_ex.re"
 /*
   +----------------------------------------------------------------------+
@@ -18,7 +18,7 @@
   +----------------------------------------------------------------------+
 */
 
-/* $Id: url_scanner_ex.c,v 1.95.2.4.2.3 2007/06/06 12:27:24 nlopess Exp $ */
+/* $Id: url_scanner_ex.c,v 1.95.2.4.2.3.2.1 2007/10/10 00:34:40 iliaa Exp $ */
 
 #include "php.h"
 
@@ -109,78 +109,48 @@
        q = (p = url->c) + url->len;
 
 scan:
+
+#line 114 "ext/standard/url_scanner_ex.c"
 {
-       static unsigned char yybm[] = {
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128,   0, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128,   0, 128, 128, 128, 128,   0, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-       };
-
-#line 149 "ext/standard/url_scanner_ex.c"
-       {
-               YYCTYPE yych;
-
-               if(YYLIMIT == YYCURSOR) YYFILL(1);
-               yych = *YYCURSOR;
-               if(yybm[0+yych] & 128) {
-                       goto yy8;
-               }
-               if(yych <= '9') goto yy6;
-               if(yych >= ';') goto yy4;
-               ++YYCURSOR;
+       YYCTYPE yych;
+
+       if(YYLIMIT == YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       switch(yych) {
+       case '#':       goto yy6;
+       case ':':       goto yy2;
+       case '?':       goto yy4;
+       default:        goto yy8;
+       }
+yy2:
+       ++YYCURSOR;
 #line 116 "ext/standard/url_scanner_ex.re"
-               { smart_str_append(dest, url); return; }
-#line 163 "ext/standard/url_scanner_ex.c"
+       { smart_str_append(dest, url); return; }
+#line 130 "ext/standard/url_scanner_ex.c"
 yy4:
-               ++YYCURSOR;
+       ++YYCURSOR;
 #line 117 "ext/standard/url_scanner_ex.re"
-               { sep = separator; goto scan; }
-#line 168 "ext/standard/url_scanner_ex.c"
+       { sep = separator; goto scan; }
+#line 135 "ext/standard/url_scanner_ex.c"
 yy6:
-               ++YYCURSOR;
+       ++YYCURSOR;
 #line 118 "ext/standard/url_scanner_ex.re"
-               { bash = p - 1; goto done; }
-#line 173 "ext/standard/url_scanner_ex.c"
+       { bash = p - 1; goto done; }
+#line 140 "ext/standard/url_scanner_ex.c"
 yy8:
-               ++YYCURSOR;
-               if(YYLIMIT == YYCURSOR) YYFILL(1);
-               yych = *YYCURSOR;
-               if(yybm[0+yych] & 128) {
-                       goto yy8;
-               }
-#line 119 "ext/standard/url_scanner_ex.re"
-               { goto scan; }
-#line 183 "ext/standard/url_scanner_ex.c"
+       ++YYCURSOR;
+       if(YYLIMIT == YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       switch(yych) {
+       case '#':
+       case ':':
+       case '?':       goto yy10;
+       default:        goto yy8;
        }
+yy10:
+#line 119 "ext/standard/url_scanner_ex.re"
+       { goto scan; }
+#line 154 "ext/standard/url_scanner_ex.c"
 }
 #line 120 "ext/standard/url_scanner_ex.re"
 
@@ -271,16 +241,29 @@
 
        if (ctx->form_app.len > 0) {
                switch (ctx->tag.len) {
-
-#define RECOGNIZE(x) do {      \
-       case sizeof(x)-1: \
-               if (strncasecmp(ctx->tag.c, x, sizeof(x)-1) == 0) \
-                       doit = 1; \
-               break; \
-} while (0)
-               
-                       RECOGNIZE("form");
-                       RECOGNIZE("fieldset");
+                       case sizeof("form") - 1:
+                               if (!strncasecmp(ctx->tag.c, "form", 
sizeof("form") - 1)) {
+                                       doit = 1;               
+                               }
+                               if (doit && ctx->val.c && ctx->lookup_data && 
*ctx->lookup_data) {
+                                       char *e, *p = zend_memnstr(ctx->val.c, 
"://", sizeof("://") - 1, ctx->val.c + ctx->val.len);
+                                       if (p) {
+                                               e = memchr(p, '/', (ctx->val.c 
+ ctx->val.len) - p);
+                                               if (!e) {
+                                                       e = ctx->val.c + 
ctx->val.len;
+                                               }
+                                               if ((e - p) && strncasecmp(p, 
ctx->lookup_data, (e - p))) {
+                                                       doit = 0;
+                                               }
+                                       }
+                               }
+                               break;
+
+                       case sizeof("fieldset") - 1:
+                               if (!strncasecmp(ctx->tag.c, "fieldset", 
sizeof("fieldset") - 1)) {
+                                       doit = 1;               
+                               }
+                               break;
                }
 
                if (doit)
@@ -288,8 +271,6 @@
        }
 }
 
-
-
 /*
  *  HANDLE_TAG copies the HTML Tag and checks whether we 
  *  have that tag in our table. If we might modify it,
@@ -350,144 +331,177 @@
        
 state_plain:
        start = YYCURSOR;
+
+#line 336 "ext/standard/url_scanner_ex.c"
 {
-       static unsigned char yybm[] = {
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128,   0, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-       };
-
-#line 390 "ext/standard/url_scanner_ex.c"
-       {
-               YYCTYPE yych;
-               if(YYLIMIT == YYCURSOR) YYFILL(1);
-               yych = *YYCURSOR;
-               if(yybm[0+yych] & 128) {
-                       goto yy15;
-               }
-               ++YYCURSOR;
-#line 288 "ext/standard/url_scanner_ex.re"
-               { passthru(STD_ARGS); STATE = STATE_TAG; goto state_tag; }
-#line 401 "ext/standard/url_scanner_ex.c"
+       YYCTYPE yych;
+       if(YYLIMIT == YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       switch(yych) {
+       case '<':       goto yy13;
+       default:        goto yy15;
+       }
+yy13:
+       ++YYCURSOR;
+#line 299 "ext/standard/url_scanner_ex.re"
+       { passthru(STD_ARGS); STATE = STATE_TAG; goto state_tag; }
+#line 349 "ext/standard/url_scanner_ex.c"
 yy15:
-               ++YYCURSOR;
-               if(YYLIMIT == YYCURSOR) YYFILL(1);
-               yych = *YYCURSOR;
-               if(yybm[0+yych] & 128) {
-                       goto yy15;
-               }
-#line 289 "ext/standard/url_scanner_ex.re"
-               { passthru(STD_ARGS); goto state_plain; }
-#line 411 "ext/standard/url_scanner_ex.c"
+       ++YYCURSOR;
+       if(YYLIMIT == YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       switch(yych) {
+       case '<':       goto yy17;
+       default:        goto yy15;
        }
+yy17:
+#line 300 "ext/standard/url_scanner_ex.re"
+       { passthru(STD_ARGS); goto state_plain; }
+#line 361 "ext/standard/url_scanner_ex.c"
 }
-#line 290 "ext/standard/url_scanner_ex.re"
+#line 301 "ext/standard/url_scanner_ex.re"
 
 
 state_tag:     
        start = YYCURSOR;
+
+#line 369 "ext/standard/url_scanner_ex.c"
 {
-       static unsigned char yybm[] = {
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0, 128,   0,   0,   0,   0,   0, 
-                 0, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128,   0,   0,   0,   0,   0, 
-                 0, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-       };
-
-#line 455 "ext/standard/url_scanner_ex.c"
-       {
-               YYCTYPE yych;
-               if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
-               yych = *YYCURSOR;
-               if(yych <= '@') {
-                       if(yych != ':') goto yy22;
-               } else {
-                       if(yych <= 'Z') goto yy20;
-                       if(yych <= '`') goto yy22;
-                       if(yych >= '{') goto yy22;
-               }
+       YYCTYPE yych;
+       if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+       yych = *YYCURSOR;
+       switch(yych) {
+       case ':':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy20;
+       default:        goto yy22;
+       }
 yy20:
-               ++YYCURSOR;
-               yych = *YYCURSOR;
-               goto yy25;
+       ++YYCURSOR;
+       yych = *YYCURSOR;
+       goto yy25;
 yy21:
-#line 295 "ext/standard/url_scanner_ex.re"
-               { handle_tag(STD_ARGS); /* Sets STATE */; passthru(STD_ARGS); 
if (STATE == STATE_PLAIN) goto state_plain; else goto state_next_arg; }
-#line 474 "ext/standard/url_scanner_ex.c"
+#line 306 "ext/standard/url_scanner_ex.re"
+       { handle_tag(STD_ARGS); /* Sets STATE */; passthru(STD_ARGS); if (STATE 
== STATE_PLAIN) goto state_plain; else goto state_next_arg; }
+#line 437 "ext/standard/url_scanner_ex.c"
 yy22:
-               ++YYCURSOR;
-#line 296 "ext/standard/url_scanner_ex.re"
-               { passthru(STD_ARGS); goto state_plain_begin; }
-#line 479 "ext/standard/url_scanner_ex.c"
+       ++YYCURSOR;
+#line 307 "ext/standard/url_scanner_ex.re"
+       { passthru(STD_ARGS); goto state_plain_begin; }
+#line 442 "ext/standard/url_scanner_ex.c"
 yy24:
-               ++YYCURSOR;
-               if(YYLIMIT == YYCURSOR) YYFILL(1);
-               yych = *YYCURSOR;
+       ++YYCURSOR;
+       if(YYLIMIT == YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
 yy25:
-               if(yybm[0+yych] & 128) {
-                       goto yy24;
-               }
-               goto yy21;
+       switch(yych) {
+       case ':':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy24;
+       default:        goto yy21;
        }
 }
-#line 297 "ext/standard/url_scanner_ex.re"
+#line 308 "ext/standard/url_scanner_ex.re"
 
 
 state_next_arg_begin:
@@ -495,417 +509,450 @@
        
 state_next_arg:
        start = YYCURSOR;
+
+#line 514 "ext/standard/url_scanner_ex.c"
 {
-       static unsigned char yybm[] = {
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0, 128, 128, 128,   0, 128,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-               128,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-       };
-
-#line 535 "ext/standard/url_scanner_ex.c"
-       {
-               YYCTYPE yych;
-               if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
-               yych = *YYCURSOR;
-               if(yych <= ' ') {
-                       if(yych <= 0x0C) {
-                               if(yych <= 0x08) goto yy34;
-                               if(yych <= 0x0B) goto yy30;
-                               goto yy34;
-                       } else {
-                               if(yych <= 0x0D) goto yy30;
-                               if(yych <= 0x1F) goto yy34;
-                               goto yy30;
-                       }
-               } else {
-                       if(yych <= '@') {
-                               if(yych != '>') goto yy34;
-                       } else {
-                               if(yych <= 'Z') goto yy32;
-                               if(yych <= '`') goto yy34;
-                               if(yych <= 'z') goto yy32;
-                               goto yy34;
-                       }
-               }
-               ++YYCURSOR;
-#line 305 "ext/standard/url_scanner_ex.re"
-               { passthru(STD_ARGS); handle_form(STD_ARGS); goto 
state_plain_begin; }
-#line 563 "ext/standard/url_scanner_ex.c"
+       YYCTYPE yych;
+       if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+       yych = *YYCURSOR;
+       switch(yych) {
+       case 0x09:
+       case 0x0A:
+       case 0x0B:
+       case 0x0D:
+       case ' ':       goto yy30;
+       case '>':       goto yy28;
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy32;
+       default:        goto yy34;
+       }
+yy28:
+       ++YYCURSOR;
+#line 316 "ext/standard/url_scanner_ex.re"
+       { passthru(STD_ARGS); handle_form(STD_ARGS); goto state_plain_begin; }
+#line 584 "ext/standard/url_scanner_ex.c"
 yy30:
-               ++YYCURSOR;
-               yych = *YYCURSOR;
-               goto yy37;
+       ++YYCURSOR;
+       yych = *YYCURSOR;
+       goto yy37;
 yy31:
-#line 306 "ext/standard/url_scanner_ex.re"
-               { passthru(STD_ARGS); goto state_next_arg; }
-#line 571 "ext/standard/url_scanner_ex.c"
+#line 317 "ext/standard/url_scanner_ex.re"
+       { passthru(STD_ARGS); goto state_next_arg; }
+#line 592 "ext/standard/url_scanner_ex.c"
 yy32:
-               ++YYCURSOR;
-#line 307 "ext/standard/url_scanner_ex.re"
-               { --YYCURSOR; STATE = STATE_ARG; goto state_arg; }
-#line 576 "ext/standard/url_scanner_ex.c"
+       ++YYCURSOR;
+#line 318 "ext/standard/url_scanner_ex.re"
+       { --YYCURSOR; STATE = STATE_ARG; goto state_arg; }
+#line 597 "ext/standard/url_scanner_ex.c"
 yy34:
-               ++YYCURSOR;
-#line 308 "ext/standard/url_scanner_ex.re"
-               { passthru(STD_ARGS); goto state_plain_begin; }
-#line 581 "ext/standard/url_scanner_ex.c"
+       ++YYCURSOR;
+#line 319 "ext/standard/url_scanner_ex.re"
+       { passthru(STD_ARGS); goto state_plain_begin; }
+#line 602 "ext/standard/url_scanner_ex.c"
 yy36:
-               ++YYCURSOR;
-               if(YYLIMIT == YYCURSOR) YYFILL(1);
-               yych = *YYCURSOR;
+       ++YYCURSOR;
+       if(YYLIMIT == YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
 yy37:
-               if(yybm[0+yych] & 128) {
-                       goto yy36;
-               }
-               goto yy31;
+       switch(yych) {
+       case 0x09:
+       case 0x0A:
+       case 0x0B:
+       case 0x0D:
+       case ' ':       goto yy36;
+       default:        goto yy31;
        }
 }
-#line 309 "ext/standard/url_scanner_ex.re"
+#line 320 "ext/standard/url_scanner_ex.re"
 
 
 state_arg:
        start = YYCURSOR;
+
+#line 623 "ext/standard/url_scanner_ex.c"
 {
-       static unsigned char yybm[] = {
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0, 128,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128,   0,   0,   0,   0,   0, 
-                 0, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128, 128, 128, 128, 128, 128, 
-               128, 128, 128,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-       };
-
-#line 634 "ext/standard/url_scanner_ex.c"
-       {
-               YYCTYPE yych;
-               if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
-               yych = *YYCURSOR;
-               if(yych <= '@') goto yy42;
-               if(yych <= 'Z') goto yy40;
-               if(yych <= '`') goto yy42;
-               if(yych >= '{') goto yy42;
+       YYCTYPE yych;
+       if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+       yych = *YYCURSOR;
+       switch(yych) {
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy40;
+       default:        goto yy42;
+       }
 yy40:
-               ++YYCURSOR;
-               yych = *YYCURSOR;
-               goto yy45;
+       ++YYCURSOR;
+       yych = *YYCURSOR;
+       goto yy45;
 yy41:
-#line 314 "ext/standard/url_scanner_ex.re"
-               { passthru(STD_ARGS); handle_arg(STD_ARGS); STATE = 
STATE_BEFORE_VAL; goto state_before_val; }
-#line 650 "ext/standard/url_scanner_ex.c"
+#line 325 "ext/standard/url_scanner_ex.re"
+       { passthru(STD_ARGS); handle_arg(STD_ARGS); STATE = STATE_BEFORE_VAL; 
goto state_before_val; }
+#line 690 "ext/standard/url_scanner_ex.c"
 yy42:
-               ++YYCURSOR;
-#line 315 "ext/standard/url_scanner_ex.re"
-               { passthru(STD_ARGS); STATE = STATE_NEXT_ARG; goto 
state_next_arg; }
-#line 655 "ext/standard/url_scanner_ex.c"
+       ++YYCURSOR;
+#line 326 "ext/standard/url_scanner_ex.re"
+       { passthru(STD_ARGS); STATE = STATE_NEXT_ARG; goto state_next_arg; }
+#line 695 "ext/standard/url_scanner_ex.c"
 yy44:
-               ++YYCURSOR;
-               if(YYLIMIT == YYCURSOR) YYFILL(1);
-               yych = *YYCURSOR;
+       ++YYCURSOR;
+       if(YYLIMIT == YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
 yy45:
-               if(yybm[0+yych] & 128) {
-                       goto yy44;
-               }
-               goto yy41;
+       switch(yych) {
+       case '-':
+       case 'A':
+       case 'B':
+       case 'C':
+       case 'D':
+       case 'E':
+       case 'F':
+       case 'G':
+       case 'H':
+       case 'I':
+       case 'J':
+       case 'K':
+       case 'L':
+       case 'M':
+       case 'N':
+       case 'O':
+       case 'P':
+       case 'Q':
+       case 'R':
+       case 'S':
+       case 'T':
+       case 'U':
+       case 'V':
+       case 'W':
+       case 'X':
+       case 'Y':
+       case 'Z':
+       case 'a':
+       case 'b':
+       case 'c':
+       case 'd':
+       case 'e':
+       case 'f':
+       case 'g':
+       case 'h':
+       case 'i':
+       case 'j':
+       case 'k':
+       case 'l':
+       case 'm':
+       case 'n':
+       case 'o':
+       case 'p':
+       case 'q':
+       case 'r':
+       case 's':
+       case 't':
+       case 'u':
+       case 'v':
+       case 'w':
+       case 'x':
+       case 'y':
+       case 'z':       goto yy44;
+       default:        goto yy41;
        }
 }
-#line 316 "ext/standard/url_scanner_ex.re"
+#line 327 "ext/standard/url_scanner_ex.re"
 
 
 state_before_val:
        start = YYCURSOR;
+
+#line 764 "ext/standard/url_scanner_ex.c"
 {
-       static unsigned char yybm[] = {
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-               128,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-                 0,   0,   0,   0,   0,   0,   0,   0, 
-       };
-
-#line 708 "ext/standard/url_scanner_ex.c"
-       {
-               YYCTYPE yych;
-               if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
-               yych = *YYCURSOR;
-               if(yych == ' ') goto yy48;
-               if(yych == '=') goto yy50;
-               goto yy52;
+       YYCTYPE yych;
+       if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+       yych = *YYCURSOR;
+       switch(yych) {
+       case ' ':       goto yy48;
+       case '=':       goto yy50;
+       default:        goto yy52;
+       }
 yy48:
-               yych = *(YYMARKER = ++YYCURSOR);
-               if(yych == ' ') goto yy55;
-               if(yych == '=') goto yy53;
+       yych = *(YYMARKER = ++YYCURSOR);
+       switch(yych) {
+       case ' ':       goto yy55;
+       case '=':       goto yy53;
+       default:        goto yy49;
+       }
 yy49:
-#line 322 "ext/standard/url_scanner_ex.re"
-               { --YYCURSOR; goto state_next_arg_begin; }
-#line 723 "ext/standard/url_scanner_ex.c"
+#line 333 "ext/standard/url_scanner_ex.re"
+       { --YYCURSOR; goto state_next_arg_begin; }
+#line 784 "ext/standard/url_scanner_ex.c"
 yy50:
-               ++YYCURSOR;
-               yych = *YYCURSOR;
-               goto yy54;
+       ++YYCURSOR;
+       yych = *YYCURSOR;
+       goto yy54;
 yy51:
-#line 321 "ext/standard/url_scanner_ex.re"
-               { passthru(STD_ARGS); STATE = STATE_VAL; goto state_val; }
-#line 731 "ext/standard/url_scanner_ex.c"
+#line 332 "ext/standard/url_scanner_ex.re"
+       { passthru(STD_ARGS); STATE = STATE_VAL; goto state_val; }
+#line 792 "ext/standard/url_scanner_ex.c"
 yy52:
-               yych = *++YYCURSOR;
-               goto yy49;
+       yych = *++YYCURSOR;
+       goto yy49;
 yy53:
-               ++YYCURSOR;
-               if(YYLIMIT == YYCURSOR) YYFILL(1);
-               yych = *YYCURSOR;
+       ++YYCURSOR;
+       if(YYLIMIT == YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
 yy54:
-               if(yybm[0+yych] & 128) {
-                       goto yy53;
-               }
-               goto yy51;
+       switch(yych) {
+       case ' ':       goto yy53;
+       default:        goto yy51;
+       }
 yy55:
-               ++YYCURSOR;
-               if(YYLIMIT == YYCURSOR) YYFILL(1);
-               yych = *YYCURSOR;
-               if(yych == ' ') goto yy55;
-               if(yych == '=') goto yy53;
-               YYCURSOR = YYMARKER;
-               goto yy49;
+       ++YYCURSOR;
+       if(YYLIMIT == YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       switch(yych) {
+       case ' ':       goto yy55;
+       case '=':       goto yy53;
+       default:        goto yy57;
        }
+yy57:
+       YYCURSOR = YYMARKER;
+       goto yy49;
 }
-#line 323 "ext/standard/url_scanner_ex.re"
+#line 334 "ext/standard/url_scanner_ex.re"
 
 
 
 state_val:
        start = YYCURSOR;
+
+#line 825 "ext/standard/url_scanner_ex.c"
 {
-       static unsigned char yybm[] = {
-               248, 248, 248, 248, 248, 248, 248, 248, 
-               248, 160, 160, 248, 248, 160, 248, 248, 
-               248, 248, 248, 248, 248, 248, 248, 248, 
-               248, 248, 248, 248, 248, 248, 248, 248, 
-               160, 248,  56, 248, 248, 248, 248, 200, 
-               248, 248, 248, 248, 248, 248, 248, 248, 
-               248, 248, 248, 248, 248, 248, 248, 248, 
-               248, 248, 248, 248, 248, 248,   0, 248, 
-               248, 248, 248, 248, 248, 248, 248, 248, 
-               248, 248, 248, 248, 248, 248, 248, 248, 
-               248, 248, 248, 248, 248, 248, 248, 248, 
-               248, 248, 248, 248, 248, 248, 248, 248, 
-               248, 248, 248, 248, 248, 248, 248, 248, 
-               248, 248, 248, 248, 248, 248, 248, 248, 
-               248, 248, 248, 248, 248, 248, 248, 248, 
-               248, 248, 248, 248, 248, 248, 248, 248, 
-               248, 248, 248, 248, 248, 248, 248, 248, 
-               248, 248, 248, 248, 248, 248, 248, 248, 
-               248, 248, 248, 248, 248, 248, 248, 248, 
-               248, 248, 248, 248, 248, 248, 248, 248, 
-               248, 248, 248, 248, 248, 248, 248, 248, 
-               248, 248, 248, 248, 248, 248, 248, 248, 
-               248, 248, 248, 248, 248, 248, 248, 248, 
-               248, 248, 248, 248, 248, 248, 248, 248, 
-               248, 248, 248, 248, 248, 248, 248, 248, 
-               248, 248, 248, 248, 248, 248, 248, 248, 
-               248, 248, 248, 248, 248, 248, 248, 248, 
-               248, 248, 248, 248, 248, 248, 248, 248, 
-               248, 248, 248, 248, 248, 248, 248, 248, 
-               248, 248, 248, 248, 248, 248, 248, 248, 
-               248, 248, 248, 248, 248, 248, 248, 248, 
-               248, 248, 248, 248, 248, 248, 248, 248, 
-       };
-
-#line 796 "ext/standard/url_scanner_ex.c"
-       {
-               YYCTYPE yych;
-               if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
-               yych = *YYCURSOR;
-               if(yych <= ' ') {
-                       if(yych <= 0x0C) {
-                               if(yych <= 0x08) goto yy63;
-                               if(yych <= 0x0A) goto yy64;
-                               goto yy63;
-                       } else {
-                               if(yych <= 0x0D) goto yy64;
-                               if(yych <= 0x1F) goto yy63;
-                               goto yy64;
-                       }
-               } else {
-                       if(yych <= '&') {
-                               if(yych != '"') goto yy63;
-                       } else {
-                               if(yych <= '\'') goto yy62;
-                               if(yych == '>') goto yy64;
-                               goto yy63;
-                       }
-               }
-               yych = *(YYMARKER = ++YYCURSOR);
-               goto yy77;
+       YYCTYPE yych;
+       if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
+       yych = *YYCURSOR;
+       switch(yych) {
+       case 0x09:
+       case 0x0A:
+       case 0x0D:
+       case ' ':
+       case '>':       goto yy64;
+       case '"':       goto yy60;
+       case '\'':      goto yy62;
+       default:        goto yy63;
+       }
+yy60:
+       yych = *(YYMARKER = ++YYCURSOR);
+       goto yy77;
 yy61:
-#line 331 "ext/standard/url_scanner_ex.re"
-               { handle_val(STD_ARGS, 0, ' '); goto state_next_arg_begin; }
-#line 825 "ext/standard/url_scanner_ex.c"
+#line 342 "ext/standard/url_scanner_ex.re"
+       { handle_val(STD_ARGS, 0, ' '); goto state_next_arg_begin; }
+#line 846 "ext/standard/url_scanner_ex.c"
 yy62:
-               yych = *(YYMARKER = ++YYCURSOR);
-               goto yy69;
+       yych = *(YYMARKER = ++YYCURSOR);
+       goto yy69;
 yy63:
-               yych = *++YYCURSOR;
-               goto yy67;
+       yych = *++YYCURSOR;
+       goto yy67;
 yy64:
-               ++YYCURSOR;
-#line 332 "ext/standard/url_scanner_ex.re"
-               { passthru(STD_ARGS); goto state_next_arg_begin; }
-#line 836 "ext/standard/url_scanner_ex.c"
+       ++YYCURSOR;
+#line 343 "ext/standard/url_scanner_ex.re"
+       { passthru(STD_ARGS); goto state_next_arg_begin; }
+#line 857 "ext/standard/url_scanner_ex.c"
 yy66:
-               ++YYCURSOR;
-               if(YYLIMIT == YYCURSOR) YYFILL(1);
-               yych = *YYCURSOR;
+       ++YYCURSOR;
+       if(YYLIMIT == YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
 yy67:
-               if(yybm[0+yych] & 8) {
-                       goto yy66;
-               }
-               goto yy61;
+       switch(yych) {
+       case 0x09:
+       case 0x0A:
+       case 0x0D:
+       case ' ':
+       case '>':       goto yy61;
+       default:        goto yy66;
+       }
 yy68:
-               YYMARKER = ++YYCURSOR;
-               if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
-               yych = *YYCURSOR;
+       YYMARKER = ++YYCURSOR;
+       if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+       yych = *YYCURSOR;
 yy69:
-               if(yybm[0+yych] & 16) {
-                       goto yy68;
-               }
-               if(yych <= '&') goto yy72;
-               if(yych >= '(') goto yy61;
-               ++YYCURSOR;
-               if(yybm[0+(yych = *YYCURSOR)] & 8) {
-                       goto yy66;
-               }
+       switch(yych) {
+       case 0x09:
+       case 0x0A:
+       case 0x0D:
+       case ' ':       goto yy72;
+       case '\'':      goto yy70;
+       case '>':       goto yy61;
+       default:        goto yy68;
+       }
+yy70:
+       ++YYCURSOR;
+       switch((yych = *YYCURSOR)) {
+       case 0x09:
+       case 0x0A:
+       case 0x0D:
+       case ' ':
+       case '>':       goto yy71;
+       default:        goto yy66;
+       }
 yy71:
-#line 330 "ext/standard/url_scanner_ex.re"
-               { handle_val(STD_ARGS, 1, '\''); goto state_next_arg_begin; }
-#line 863 "ext/standard/url_scanner_ex.c"
+#line 341 "ext/standard/url_scanner_ex.re"
+       { handle_val(STD_ARGS, 1, '\''); goto state_next_arg_begin; }
+#line 898 "ext/standard/url_scanner_ex.c"
 yy72:
-               ++YYCURSOR;
-               if(YYLIMIT == YYCURSOR) YYFILL(1);
-               yych = *YYCURSOR;
-               if(yybm[0+yych] & 32) {
-                       goto yy72;
-               }
-               if(yych <= '=') goto yy75;
+       ++YYCURSOR;
+       if(YYLIMIT == YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       switch(yych) {
+       case '\'':      goto yy75;
+       case '>':       goto yy74;
+       default:        goto yy72;
+       }
 yy74:
-               YYCURSOR = YYMARKER;
-               goto yy61;
+       YYCURSOR = YYMARKER;
+       goto yy61;
 yy75:
-               yych = *++YYCURSOR;
-               goto yy71;
+       yych = *++YYCURSOR;
+       goto yy71;
 yy76:
-               YYMARKER = ++YYCURSOR;
-               if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
-               yych = *YYCURSOR;
+       YYMARKER = ++YYCURSOR;
+       if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+       yych = *YYCURSOR;
 yy77:
-               if(yybm[0+yych] & 64) {
-                       goto yy76;
-               }
-               if(yych <= '!') goto yy80;
-               if(yych >= '#') goto yy61;
-               ++YYCURSOR;
-               if(yybm[0+(yych = *YYCURSOR)] & 8) {
-                       goto yy66;
-               }
+       switch(yych) {
+       case 0x09:
+       case 0x0A:
+       case 0x0D:
+       case ' ':       goto yy80;
+       case '"':       goto yy78;
+       case '>':       goto yy61;
+       default:        goto yy76;
+       }
+yy78:
+       ++YYCURSOR;
+       switch((yych = *YYCURSOR)) {
+       case 0x09:
+       case 0x0A:
+       case 0x0D:
+       case ' ':
+       case '>':       goto yy79;
+       default:        goto yy66;
+       }
 yy79:
-#line 329 "ext/standard/url_scanner_ex.re"
-               { handle_val(STD_ARGS, 1, '"'); goto state_next_arg_begin; }
-#line 895 "ext/standard/url_scanner_ex.c"
+#line 340 "ext/standard/url_scanner_ex.re"
+       { handle_val(STD_ARGS, 1, '"'); goto state_next_arg_begin; }
+#line 941 "ext/standard/url_scanner_ex.c"
 yy80:
-               ++YYCURSOR;
-               if(YYLIMIT == YYCURSOR) YYFILL(1);
-               yych = *YYCURSOR;
-               if(yybm[0+yych] & 128) {
-                       goto yy80;
-               }
-               if(yych >= '>') goto yy74;
-               ++YYCURSOR;
-               yych = *YYCURSOR;
-               goto yy79;
+       ++YYCURSOR;
+       if(YYLIMIT == YYCURSOR) YYFILL(1);
+       yych = *YYCURSOR;
+       switch(yych) {
+       case '"':       goto yy82;
+       case '>':       goto yy74;
+       default:        goto yy80;
        }
+yy82:
+       ++YYCURSOR;
+       yych = *YYCURSOR;
+       goto yy79;
 }
-#line 333 "ext/standard/url_scanner_ex.re"
+#line 344 "ext/standard/url_scanner_ex.re"
 
 
 stop:
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/url_scanner_ex.re?r1=1.76.2.2.2.1&r2=1.76.2.2.2.1.2.1&diff_format=u
Index: php-src/ext/standard/url_scanner_ex.re
diff -u php-src/ext/standard/url_scanner_ex.re:1.76.2.2.2.1 
php-src/ext/standard/url_scanner_ex.re:1.76.2.2.2.1.2.1
--- php-src/ext/standard/url_scanner_ex.re:1.76.2.2.2.1 Wed Jun  6 00:00:27 2007
+++ php-src/ext/standard/url_scanner_ex.re      Wed Oct 10 00:34:40 2007
@@ -16,7 +16,7 @@
   +----------------------------------------------------------------------+
 */
 
-/* $Id: url_scanner_ex.re,v 1.76.2.2.2.1 2007/06/06 00:00:27 iliaa Exp $ */
+/* $Id: url_scanner_ex.re,v 1.76.2.2.2.1.2.1 2007/10/10 00:34:40 iliaa Exp $ */
 
 #include "php.h"
 
@@ -205,16 +205,29 @@
 
        if (ctx->form_app.len > 0) {
                switch (ctx->tag.len) {
-
-#define RECOGNIZE(x) do {      \
-       case sizeof(x)-1: \
-               if (strncasecmp(ctx->tag.c, x, sizeof(x)-1) == 0) \
-                       doit = 1; \
-               break; \
-} while (0)
-               
-                       RECOGNIZE("form");
-                       RECOGNIZE("fieldset");
+                       case sizeof("form") - 1:
+                               if (!strncasecmp(ctx->tag.c, "form", 
sizeof("form") - 1)) {
+                                       doit = 1;               
+                               }
+                               if (doit && ctx->val.c && ctx->lookup_data && 
*ctx->lookup_data) {
+                                       char *e, *p = zend_memnstr(ctx->val.c, 
"://", sizeof("://") - 1, ctx->val.c + ctx->val.len);
+                                       if (p) {
+                                               e = memchr(p, '/', (ctx->val.c 
+ ctx->val.len) - p);
+                                               if (!e) {
+                                                       e = ctx->val.c + 
ctx->val.len;
+                                               }
+                                               if ((e - p) && strncasecmp(p, 
ctx->lookup_data, (e - p))) {
+                                                       doit = 0;
+                                               }
+                                       }
+                               }
+                               break;
+
+                       case sizeof("fieldset") - 1:
+                               if (!strncasecmp(ctx->tag.c, "fieldset", 
sizeof("fieldset") - 1)) {
+                                       doit = 1;               
+                               }
+                               break;
                }
 
                if (doit)
@@ -222,8 +235,6 @@
        }
 }
 
-
-
 /*
  *  HANDLE_TAG copies the HTML Tag and checks whether we 
  *  have that tag in our table. If we might modify it,

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to