From 6fa58fcd80d1a16245a5ef736771368ca1d40f86 Mon Sep 17 00:00:00 2001 From: Fumitoshi UKAI Date: Tue, 29 Jan 2002 17:16:35 +0000 Subject: [w3m-dev 02927] mailto: POST method with w3mmail.cgi * file.c (loadGeneralFile): pass request even if SCM_UNKNOWN (for external URI loader) * scripts/w3mmail.cgi.in: support POST method From: SASAKI Takeshi --- ChangeLog | 9 ++++++++- file.c | 4 ++-- scripts/w3mmail.cgi.in | 38 +++++++++++++++++++++++++++++++++----- 3 files changed, 43 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 38f89b3..7d4fa0b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2002-01-30 SASAKI Takeshi + + * [w3m-dev 02927] mailto: POST method with w3mmail.cgi + * file.c (loadGeneralFile): pass request even if SCM_UNKNOWN + (for external URI loader) + * scripts/w3mmail.cgi.in: support POST method + 2002-01-30 Hironori Sakamoto * [w3m-dev 02926] fixed w3mmail.cgi @@ -2355,4 +2362,4 @@ * release-0-2-1 * import w3m-0.2.1 -$Id: ChangeLog,v 1.271 2002/01/29 16:31:09 ukai Exp $ +$Id: ChangeLog,v 1.272 2002/01/29 17:16:35 ukai Exp $ diff --git a/file.c b/file.c index bcc45a9..265f1c3 100644 --- a/file.c +++ b/file.c @@ -1,4 +1,4 @@ -/* $Id: file.c,v 1.47 2002/01/24 16:59:16 ukai Exp $ */ +/* $Id: file.c,v 1.48 2002/01/29 17:16:35 ukai Exp $ */ #include "fm.h" #include #include "myctype.h" @@ -1082,7 +1082,7 @@ loadGeneralFile(char *path, ParsedURL *volatile current, char *referer, case SCM_UNKNOWN: tmp = searchURIMethods(&pu); if (tmp != NULL) { - b = loadGeneralFile(tmp->ptr, NULL, NO_REFERER, 0, NULL); + b = loadGeneralFile(tmp->ptr, NULL, NO_REFERER, 0, request); if (b != NO_BUFFER) return b; } diff --git a/scripts/w3mmail.cgi.in b/scripts/w3mmail.cgi.in index 9cfe5a0..48aa567 100755 --- a/scripts/w3mmail.cgi.in +++ b/scripts/w3mmail.cgi.in @@ -1,6 +1,6 @@ #!@PERL@ -$rcsid = q$Id: w3mmail.cgi.in,v 1.8 2002/01/29 16:31:09 ukai Exp $; +$rcsid = q$Id: w3mmail.cgi.in,v 1.9 2002/01/29 17:16:35 ukai Exp $; ($id = $rcsid) =~ s/^.*,v ([\d\.]*).*/$1/; ($prog=$0) =~ s/.*\///; @@ -25,8 +25,16 @@ if ($query =~ s/^\w+://) { @to = ($to); push(@to, $opt{'to'}) if ($opt{'to'}); $opt{'to'} = join(',', @to); - $body = $opt{'body'}; - delete $opt{'body'}; + if ($ENV{'REQUEST_METHOD'} eq 'POST') { + sysread(STDIN, $body, $ENV{'CONTENT_LENGTH'}); + $content_type = $ENV{'CONTENT_TYPE'}; + if ($content_type =~ /^multipart\/form-data;\s+boundary=(.*)$/) { + $boundary = $1; + } + } else { + $body = $opt{'body'}; + delete $opt{'body'}; + } &lang_setup; print "Content-Type: text/html\r\n"; @@ -49,6 +57,10 @@ if ($query =~ s/^\w+://) { print "\u$h:\n"; delete $opt{$h}; } + if ($boundary) { + print "Content-Type:multipart/form-data; boundary=\"$boundary\"\n"; + print "\n"; + } foreach $h (keys %opt) { $qh = &html_quote($h); $v = &lang_html_quote($opt{$h}); @@ -80,6 +92,8 @@ if ($query =~ s/^\w+://) { delete $opt{'body'}; $act = $opt{'action'}; delete $opt{'action'}; + $boundary = $opt{'boundary'}; + delete $opt{'boundary'}; &lang_setup; if ($act eq "Preview") { @@ -103,7 +117,12 @@ if ($query =~ s/^\w+://) { } ($cs,$cte,$body) = &lang_body(&lang_html_quote($body), 0); print "Mime-Version: 1.0\n"; - print "Content-Type: text/plain; charset=$cs\n"; + if ($boundary) { + print "Content-Type: multipart/form-data;\n"; + print " boundary=\"$boundary\"\n"; + } else { + print "Content-Type: text/plain; charset=$cs\n"; + } # print "Content-Transfer-Encoding: $cte\n"; print "User-Agent: $ENV{'SERVER_SOFTWARE'} $prog/$id\n"; print "\n"; @@ -122,6 +141,10 @@ if ($query =~ s/^\w+://) { print "\u$h:\n"; delete $opt{$h}; } + if ($boundary) { + print "Content-Type:Content-Type: multipart/form-data; boundary=\"$boundary\"\n"; + print "\n"; + } foreach $h (keys %opt) { $qh = &html_quote($h); print "\u$qh:$v{$h}\n"; @@ -154,7 +177,12 @@ if ($query =~ s/^\w+://) { } ($cs,$cte,$body) = &lang_body($body, 1); print MAIL "Mime-Version: 1.0\n"; - print MAIL "Content-Type: text/plain; charset=$cs\n"; + if ($boundary) { + print MAIL "Content-Type: multipart/form-data;\n"; + print MAIL " boundary=\"$boundary\"\n"; + } else { + print MAIL "Content-Type: text/plain; charset=$cs\n"; + } print MAIL "Content-Transfer-Encoding: $cte\n"; print MAIL "User-Agent: $ENV{'SERVER_SOFTWARE'} $prog/$id\n"; print MAIL "\n"; -- cgit v1.2.3