diff options
| author | Fumitoshi UKAI <ukai@debian.or.jp> | 2003-02-08 18:23:52 +0000 | 
|---|---|---|
| committer | Fumitoshi UKAI <ukai@debian.or.jp> | 2003-02-08 18:23:52 +0000 | 
| commit | d779a33d23b2add6e08d40f56e1f92def0f7691f (patch) | |
| tree | 2794fa43fbeecfd537ce43b8b6ee2ee950cc72dc | |
| parent | [w3m-dev 03736] dirlist sort (diff) | |
| download | w3m-d779a33d23b2add6e08d40f56e1f92def0f7691f.tar.gz w3m-d779a33d23b2add6e08d40f56e1f92def0f7691f.zip | |
[w3m-dev 03737] local-CGI POST
* local.c (localcgi_post): use tmp file
From: Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp>
| -rw-r--r-- | ChangeLog | 7 | ||||
| -rw-r--r-- | local.c | 27 | 
2 files changed, 22 insertions, 12 deletions
| @@ -1,3 +1,8 @@ +2003-02-09  Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp> + +	* [w3m-dev 03737] local-CGI POST +	* local.c (localcgi_post): use tmp file +  2003-02-08  Hiroyuki Ito <hito@crl.go.jp>  	* [w3m-dev 03736] dirlist sort @@ -7123,4 +7128,4 @@ a	* [w3m-dev 03276] compile error on EWS4800  	* release-0-2-1  	* import w3m-0.2.1 -$Id: ChangeLog,v 1.743 2003/02/07 15:06:15 ukai Exp $ +$Id: ChangeLog,v 1.744 2003/02/08 18:23:52 ukai Exp $ @@ -1,4 +1,4 @@ -/* $Id: local.c,v 1.27 2003/01/31 16:26:41 ukai Exp $ */ +/* $Id: local.c,v 1.28 2003/02/08 18:23:53 ukai Exp $ */  #include "fm.h"  #include <string.h>  #include <stdio.h> @@ -344,26 +344,27 @@ localcgi_post(char *uri, char *qstr, FormList *request, char *referer)      FILE *fr = NULL, *fw = NULL;      int status;      pid_t pid; -    char *file = uri, *name = uri, *path_info = NULL; +    char *file = uri, *name = uri, *path_info = NULL, *tmpf = NULL;      status = cgi_filename(uri, &file, &name, &path_info);      if (check_local_cgi(file, status) < 0)  	return NULL;      writeLocalCookie(); -    if (request && request->enctype != FORM_ENCTYPE_MULTIPART) -	pid = open_pipe_rw(&fr, &fw); -    else -	pid = open_pipe_rw(&fr, NULL); +    if (request && request->enctype != FORM_ENCTYPE_MULTIPART) { +	tmpf = tmpfname(TMPF_DFL, NULL)->ptr; +	fw = fopen(tmpf, "w"); +	if (!fw) +	    return NULL; +    } +    pid = open_pipe_rw(&fr, NULL);      if (pid < 0)  	return NULL;      else if (pid) { -	if (fw) { -	    fwrite(request->body, sizeof(char), request->length, fw); +	if (fw)  	    fclose(fw); -	}  	return fr;      } -    setup_child(TRUE, 2, -1); +    setup_child(TRUE, 2, fw ? fileno(fw) : -1);      if (qstr)  	uri = Strnew_m_charp(uri, "?", qstr, NULL)->ptr; @@ -383,8 +384,12 @@ localcgi_post(char *uri, char *qstr, FormList *request, char *referer)  				request->boundary)->ptr);  	    freopen(request->body, "r", stdin);  	} -	else +	else {  	    set_environ("CONTENT_TYPE", "application/x-www-form-urlencoded"); +	    fwrite(request->body, sizeof(char), request->length, fw); +	    fclose(fw); +	    freopen(tmpf, "r", stdin); +	}      }      else {  	set_environ("REQUEST_METHOD", "GET"); | 
