diff options
| author | Fumitoshi UKAI <ukai@debian.or.jp> | 2002-01-29 17:16:35 +0000 | 
|---|---|---|
| committer | Fumitoshi UKAI <ukai@debian.or.jp> | 2002-01-29 17:16:35 +0000 | 
| commit | 6fa58fcd80d1a16245a5ef736771368ca1d40f86 (patch) | |
| tree | 3d2ddbfc2fd82e6591a290324ddb25d97aa16bd1 /scripts | |
| parent | [w3m-dev 02926] fixed w3mmail.cgi (diff) | |
| download | w3m-6fa58fcd80d1a16245a5ef736771368ca1d40f86.tar.gz w3m-6fa58fcd80d1a16245a5ef736771368ca1d40f86.zip | |
[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 (limited to 'scripts')
| -rwxr-xr-x | scripts/w3mmail.cgi.in | 38 | 
1 files changed, 33 insertions, 5 deletions
| 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 "<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"; | 
