TE
TechEcho
Home
24h Top
Newest
Best
Ask
Show
Jobs
English
GitHub
Twitter
Home
Chunked-transfer decoding from stdin yy045
1 points
by
textmode
over 2 years ago
1 comment
textmode
over 2 years ago
<p><pre><code> /* chunked transfer decoding */ #define echo do{if(fwrite(yytext,(size_t)yyleng,1,yyout)){}}while(0) #define jmp (yy_start) = 1 + 2 * int fileno (FILE *); int ischunked,chunksize,count; xa "\15"|"\12" xb "\15\12" xc "HTTP/0.9"|"HTTP/1.0"|"HTTP/1.1" xd [Cc][Hh][Uu][Nn][Kk][Ee][Dd] xe [0-9a-fA-F]+\r\n xf [0-9a-fA-F]*\r\n %option noyywrap nounput noinput %s xb xc xd xe xf %% ^{xc} echo;ischunked=0;jmp xc; <xc>^transfer-encoding: echo;jmp xb; <xb>\r\n\r\n echo;jmp xe; <xb>{xd} echo;ischunked=1; <xe>{xf}|{xe} { count=0; if(ischunked==1) {chunksize=strtol(yytext,NULL,16); jmp xd;}; }; <xd>{xb} jmp xf; <xd>. { count++; if(count==chunksize)jmp xe; echo; }; <xf>^[A-Fa-f0-9]+{xa} <xf>{xa}+[A-Fa-f0-9]+{xa} <xf>{xb}[A-Fa-f0-9]+{xb} %% int main(){ yylex();exit(0);}</code></pre>