commit 4d9cf5aa7261654688e49276349b7bed5214d695
parent 1d6d142db1822664cb6ae61c72d8a9711ec9d7f4
Author: ukai <ukai>
Date: Tue, 29 Jan 2002 17:16:35 +0000
[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 <sasaki@ct.sakura.ne.jp>
Diffstat:
3 files changed, 40 insertions(+), 5 deletions(-)
diff --git a/ChangeLog b/ChangeLog
@@ -1,3 +1,10 @@
+2002-01-30 SASAKI Takeshi <sasaki@ct.sakura.ne.jp>
+
+ * [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 <hsaka@mth.biglobe.ne.jp>
* [w3m-dev 02926] fixed w3mmail.cgi
diff --git a/file.c b/file.c
@@ -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
@@ -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 "<tr><td>\u$h:<td><input type='text' name=\"$h\" value=\"$v\">\n";
delete $opt{$h};
}
+ if ($boundary) {
+ print "<tr><td>Content-Type:<td>multipart/form-data; boundary=\"$boundary\"\n";
+ print "<input type='hidden' name='boundary' value=\"$boundary\">\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 "<tr><td>\u$h:<td><input type='text' name=\"$h\" value=\"$v{$h}\">\n";
delete $opt{$h};
}
+ if ($boundary) {
+ print "<tr><td>Content-Type:<td>Content-Type: multipart/form-data; boundary=\"$boundary\"\n";
+ print "<input type='hidden' name=\"boundary\" value=\"$boundary\">\n";
+ }
foreach $h (keys %opt) {
$qh = &html_quote($h);
print "<tr><td>\u$qh:<td>$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";