mud/lib/lib/cgi.c
2020-09-06 05:43:07 -07:00

31 lines
901 B
C

#include <lib.h>
mapping ParsePost(string args){
object ob = previous_object();
string boundary = "--"+ ob->GetBoundary();
string file, junk;
string *tmp_arr;
mapping ret = ([]);
int start = 1;
if(last(args,2) == "--") args = truncate(args,2);
tmp_arr = explode(args,boundary);
foreach(string element in tmp_arr){
string name,data,junk1, junk2;
string *tmp_arr2;
sscanf(element,"%sname=\"%s\"%s",junk1, name, junk2);
if(!name) continue;
if(sscanf(element,"%sfilename=\"%s\"%s",junk1, file, junk2) == 3){
ret["filename"] = file;
}
tmp_arr2 = explode(element,"\n");
if(sizeof(tmp_arr2) > 1 && grepp(tmp_arr2[1],"Content-Type:")) start = 2;
data = implode(tmp_arr2[start..],"\n");
if(data[0..0] == "\n") data = data[1..];
ret[name] = data;
}
return ret;
}