- awk -v "bnd=$1" '{
- if ($0 == "--"bnd"\r") { st=1; }
- if ($0 == "--"bnd"--\r") { st=0; }
- if (st == 2) { print $0; }
- if ($0 == "\r" && st == 1) { st=2; }
- }' | head -c -2 | head -c $((128*1024))
- # Remove trailing ^M's that come with CGI
- # Limit size to 128K
+ bnd="${CONTENT_TYPE/*boundary\=/}"
+ awk -v "want=$1" -v "bnd=$bnd" '
+ BEGIN { RS="\r\n" }
+
+ # reset based on boundaries
+ $0 == "--"bnd"" { st=1; next; }
+ $0 == "--"bnd"--" { st=0; next; }
+ $0 == "--"bnd"--\r" { st=0; next; }
+
+ # search for wanted file
+ st == 1 && $0 ~ "^Content-Disposition:.* name=\""want"\"" { st=2; next; }
+ st == 1 && $0 == "" { st=9; next; }
+
+ # wait for newline, then start printing
+ st == 2 && $0 == "" { st=3; next; }
+ st == 3 { print $0 }
+ ' | head -c $((128*1024)) # Limit size to 128K