|
|
|
@ -1,4 +1,4 @@ |
|
|
|
/* Generated by re2c 0.5 on Tue Sep 19 19:28:00 2000 */ |
|
|
|
/* Generated by re2c 0.5 on Tue Sep 19 20:00:09 2000 */ |
|
|
|
#line 1 "/home/sas/src/php4/ext/standard/url_scanner_ex.re" |
|
|
|
/* |
|
|
|
+----------------------------------------------------------------------+ |
|
|
|
@ -62,7 +62,7 @@ static inline void smart_str_free(smart_str *s) |
|
|
|
free(s->c); |
|
|
|
s->c = NULL; |
|
|
|
} |
|
|
|
s->len = 0; |
|
|
|
s->a = s->len = 0; |
|
|
|
} |
|
|
|
|
|
|
|
static inline void smart_str_copyl(smart_str *dest, const char *src, size_t len) |
|
|
|
@ -83,12 +83,17 @@ static inline void smart_str_appendl(smart_str *dest, const char *src, size_t le |
|
|
|
smart_str_append(dest, &s); |
|
|
|
} |
|
|
|
|
|
|
|
static inline void smart_str_appends(smart_str *dest, char *src) |
|
|
|
static inline void smart_str_appends(smart_str *dest, const char *src) |
|
|
|
{ |
|
|
|
smart_str_appendl(dest, src, strlen(src)); |
|
|
|
} |
|
|
|
|
|
|
|
static inline void attach_url(smart_str *url, smart_str *name, smart_str *val, char *separator) |
|
|
|
static inline void smart_str_copys(smart_str *dest, const char *src) |
|
|
|
{ |
|
|
|
smart_str_copyl(dest, src, strlen(src)); |
|
|
|
} |
|
|
|
|
|
|
|
static inline void attach_url(smart_str *url, smart_str *name, smart_str *val, const char *separator) |
|
|
|
{ |
|
|
|
if (strchr(url->c, ':')) return; |
|
|
|
|
|
|
|
@ -131,10 +136,10 @@ static inline void tag_arg(url_adapt_state_t *ctx PLS_DC) |
|
|
|
smart_str_appends(&ctx->result, "\""); |
|
|
|
} |
|
|
|
|
|
|
|
#line 131 |
|
|
|
#line 139 |
|
|
|
|
|
|
|
|
|
|
|
#define NEXT goto nextiter |
|
|
|
#define NEXT continue |
|
|
|
|
|
|
|
#define COPY_ALL \ |
|
|
|
smart_str_appendl(&ctx->result, start, YYCURSOR - start); \ |
|
|
|
@ -169,7 +174,7 @@ enum { |
|
|
|
static void mainloop(url_adapt_state_t *ctx, smart_str *newstuff) |
|
|
|
{ |
|
|
|
char *para_start, *arg_start, *tag_start; |
|
|
|
char *start; |
|
|
|
char *start = NULL; |
|
|
|
char *cursor, *marker; |
|
|
|
PLS_FETCH(); |
|
|
|
|
|
|
|
@ -182,7 +187,9 @@ static void mainloop(url_adapt_state_t *ctx, smart_str *newstuff) |
|
|
|
while (YYCURSOR < YYLIMIT) { |
|
|
|
start = YYCURSOR; |
|
|
|
|
|
|
|
// printf("state %d:%s'\n", ctx->state, YYCURSOR); |
|
|
|
#ifdef SCANNER_DEBUG |
|
|
|
printf("state %d:%s'\n", ctx->state, YYCURSOR); |
|
|
|
#endif |
|
|
|
switch (ctx->state) { |
|
|
|
|
|
|
|
case STATE_PLAIN: |
|
|
|
@ -231,17 +238,17 @@ yy0: |
|
|
|
if(yybm[0+yych] & 128) goto yy4; |
|
|
|
yy2: yych = *++YYCURSOR; |
|
|
|
yy3: |
|
|
|
#line 186 |
|
|
|
#line 196 |
|
|
|
{ tag_start = YYCURSOR; GO(STATE_TAG); COPY_ALL;} |
|
|
|
yy4: ++YYCURSOR; |
|
|
|
if(YYLIMIT == YYCURSOR) YYFILL(1); |
|
|
|
yych = *YYCURSOR; |
|
|
|
yy5: if(yybm[0+yych] & 128) goto yy4; |
|
|
|
yy6: |
|
|
|
#line 187 |
|
|
|
#line 197 |
|
|
|
{ COPY_ALL; } |
|
|
|
} |
|
|
|
#line 188 |
|
|
|
#line 198 |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
@ -298,7 +305,7 @@ yy9: yyaccept = 0; |
|
|
|
if(yych == ' ') goto yy12; |
|
|
|
if(yych == '>') goto yy12; |
|
|
|
yy10: |
|
|
|
#line 203 |
|
|
|
#line 213 |
|
|
|
{ |
|
|
|
YYCURSOR--; |
|
|
|
GO(STATE_PLAIN); |
|
|
|
@ -309,12 +316,12 @@ yy11: yych = *++YYCURSOR; |
|
|
|
goto yy10; |
|
|
|
yy12: yych = *++YYCURSOR; |
|
|
|
yy13: |
|
|
|
#line 193 |
|
|
|
#line 203 |
|
|
|
{ |
|
|
|
YYCURSOR--; |
|
|
|
arg_start = YYCURSOR; |
|
|
|
smart_str_copyl(&ctx->tag, start, YYCURSOR - start); |
|
|
|
#ifdef DEBUG |
|
|
|
#ifdef SCANNER_DEBUG |
|
|
|
printf("TAG(%s)\n", ctx->tag.c); |
|
|
|
#endif |
|
|
|
GO(STATE_NEXT_ARG); |
|
|
|
@ -331,7 +338,7 @@ yy16: YYCURSOR = YYMARKER; |
|
|
|
case 0: goto yy10; |
|
|
|
} |
|
|
|
} |
|
|
|
#line 209 |
|
|
|
#line 219 |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
@ -385,14 +392,14 @@ yy19:yy20: ++YYCURSOR; |
|
|
|
yych = *YYCURSOR; |
|
|
|
yy21: if(yybm[0+yych] & 128) goto yy20; |
|
|
|
yy22: |
|
|
|
#line 214 |
|
|
|
#line 224 |
|
|
|
{ |
|
|
|
GO(STATE_ARG); |
|
|
|
NEXT; |
|
|
|
} |
|
|
|
yy23: yych = *++YYCURSOR; |
|
|
|
yy24: |
|
|
|
#line 218 |
|
|
|
#line 228 |
|
|
|
{ |
|
|
|
HANDLE_FORM; |
|
|
|
GO(STATE_PLAIN); |
|
|
|
@ -400,7 +407,7 @@ yy24: |
|
|
|
COPY_ALL; |
|
|
|
} |
|
|
|
} |
|
|
|
#line 224 |
|
|
|
#line 234 |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
@ -453,7 +460,7 @@ yy25: |
|
|
|
if(yych <= '<') goto yy30; |
|
|
|
if(yych >= '?') goto yy30; |
|
|
|
yy27: |
|
|
|
#line 239 |
|
|
|
#line 252 |
|
|
|
{ |
|
|
|
arg_start = YYCURSOR; |
|
|
|
ctx->state--; |
|
|
|
@ -492,10 +499,13 @@ yy35: ++YYCURSOR; |
|
|
|
yych = *YYCURSOR; |
|
|
|
yy36: if(yych == ' ') goto yy35; |
|
|
|
yy37: |
|
|
|
#line 230 |
|
|
|
#line 240 |
|
|
|
{ |
|
|
|
smart_str_copyl(&ctx->arg, start, YYCURSOR - start - 1); |
|
|
|
#ifdef DEBUG |
|
|
|
char *p; |
|
|
|
|
|
|
|
for (p = start; isalpha(*p); p++); |
|
|
|
smart_str_copyl(&ctx->arg, start, p - start); |
|
|
|
#ifdef SCANNER_DEBUG |
|
|
|
printf("ARG(%s)\n", ctx->arg.c); |
|
|
|
#endif |
|
|
|
para_start = YYCURSOR; |
|
|
|
@ -503,7 +513,7 @@ yy37: |
|
|
|
COPY_ALL; |
|
|
|
} |
|
|
|
} |
|
|
|
#line 244 |
|
|
|
#line 257 |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
@ -566,7 +576,7 @@ yy40: yyaccept = 0; |
|
|
|
yych = *(YYMARKER = ++YYCURSOR); |
|
|
|
if(yych != '^') goto yy51; |
|
|
|
yy41: |
|
|
|
#line 273 |
|
|
|
#line 286 |
|
|
|
{ |
|
|
|
YYCURSOR--; |
|
|
|
ctx->state = 2; |
|
|
|
@ -580,12 +590,12 @@ yy43: yych = *++YYCURSOR; |
|
|
|
goto yy41; |
|
|
|
yy44: yych = *++YYCURSOR; |
|
|
|
yy45: |
|
|
|
#line 261 |
|
|
|
#line 274 |
|
|
|
{ |
|
|
|
YYCURSOR--; |
|
|
|
para_start = NULL; |
|
|
|
smart_str_copyl(&ctx->para, start, YYCURSOR - start); |
|
|
|
#ifdef DEBUG |
|
|
|
#ifdef SCANNER_DEBUG |
|
|
|
printf("PARA(%s)\n", ctx->para.c); |
|
|
|
#endif |
|
|
|
tag_arg(ctx PLS_CC); |
|
|
|
@ -621,12 +631,12 @@ yy52: yych = *++YYCURSOR; |
|
|
|
if(yych != '>') goto yy47; |
|
|
|
yy53: yych = *++YYCURSOR; |
|
|
|
yy54: |
|
|
|
#line 249 |
|
|
|
#line 262 |
|
|
|
{ |
|
|
|
YYCURSOR--; |
|
|
|
para_start = NULL; |
|
|
|
smart_str_copyl(&ctx->para, start + 1, YYCURSOR - start - 2); |
|
|
|
#ifdef DEBUG |
|
|
|
#ifdef SCANNER_DEBUG |
|
|
|
printf("PARA(%s)\n", ctx->para.c); |
|
|
|
#endif |
|
|
|
tag_arg(ctx PLS_CC); |
|
|
|
@ -647,7 +657,7 @@ yy57: if(yybm[0+yych] & 128) goto yy56; |
|
|
|
yy58: yych = *++YYCURSOR; |
|
|
|
goto yy54; |
|
|
|
} |
|
|
|
#line 278 |
|
|
|
#line 291 |
|
|
|
|
|
|
|
break; |
|
|
|
} |
|
|
|
@ -677,15 +687,13 @@ finish: |
|
|
|
smart_str_free(&ctx->work); |
|
|
|
} |
|
|
|
|
|
|
|
#ifdef DEBUG |
|
|
|
#ifdef SCANNER_DEBUG |
|
|
|
if (ctx->work.c) { |
|
|
|
printf("PRESERVING %s'\n", ctx->work.c); |
|
|
|
} |
|
|
|
#endif |
|
|
|
} |
|
|
|
|
|
|
|
#define smart_str_copys(a,b) smart_str_copyl(a,b,strlen(b)) |
|
|
|
|
|
|
|
char *url_adapt_ext(const char *src, size_t srclen, const char *name, const char *value, size_t *newlen) |
|
|
|
{ |
|
|
|
smart_str str = {0,0}; |
|
|
|
|