X-Git-Url: http://www.dolda2000.com/gitweb/?a=blobdiff_plain;f=src%2Fcallcgi.c;h=70a97ddf2cb7586649e1b8e06cee9e5d01efa647;hb=bac8c1f95369efe4802bd9b41a7deba9468d1dd4;hp=dcd681948acccc7641d0dc83fa6e66079990028b;hpb=f812ea037b5c693977e83ace9ed7ac2515a4a6d0;p=ashd.git diff --git a/src/callcgi.c b/src/callcgi.c index dcd6819..70a97dd 100644 --- a/src/callcgi.c +++ b/src/callcgi.c @@ -52,6 +52,17 @@ static void passdata(FILE *in, FILE *out) free(buf); } +static char *absolutify(char *file) +{ + char cwd[1024]; + + if(*file != '/') { + getcwd(cwd, sizeof(cwd)); + return(sprintf2("%s/%s", cwd, file)); + } + return(sstrdup(file)); +} + static void forkchild(int inpath, char *prog, char *file, char *method, char *url, char *rest, int *infd, int *outfd) { int i; @@ -103,7 +114,7 @@ static void forkchild(int inpath, char *prog, char *file, char *method, char *ur * This is (understandably) missing from the CGI * specification, but PHP seems to require it. */ - putenv(sprintf2("SCRIPT_FILENAME=%s", file)); + putenv(sprintf2("SCRIPT_FILENAME=%s", absolutify(file))); if(inpath) execlp(prog, prog, file, NULL); else