[w3m-dev 03721] PATH_INFO support of local CGI

* local.c (CGIFN_DROOT): deleted
	(CGIFN_LIBDIR): added
	(CGIFN_MODE): deleted
	(CGIFN_CONTAIN_SLASH): deleted
	(check_local_cgi): rewrite
	(cgi_filename): rewrite
	(localcgi_post): support PATH_INFO
* url.c (openURL): rewrite
* Bonus/smb.cgi: use PATH_INFO
From: Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp>
This commit is contained in:
Fumitoshi UKAI
2003-01-31 16:25:02 +00:00
parent 1ecacc5ad1
commit 92fc697f22
4 changed files with 108 additions and 121 deletions

View File

@@ -3,9 +3,12 @@
# Workgroup list: file:/$LIB/smb.cgi
# Server list: file:/$LIB/smb.cgi?workgroup
# Sahre list: file:/$LIB/smb.cgi?//server
# file:/$LIB/smb.cgi/server
# Directory: file:/$LIB/smb.cgi?//server/share
# file:/$LIB/smb.cgi?//server/share/dir...
# file:/$LIB/smb.cgi/server/share
# Get file: file:/$LIB/smb.cgi?//server/share/dir.../file
# file:/$LIB/smb.cgi/server/share/dir.../file
#
# ----- ~/.w3m/smb -----
# workgroup = <workgroup>
@@ -64,9 +67,22 @@ $FILE = "F000";
$CGI = "file://" . &file_encode($ENV{"SCRIPT_NAME"} || $0);
$QUERY = $ENV{"QUERY_STRING"};
$PATH_INFO = $ENV{"PATH_INFO"};
$_ = &file_decode($QUERY);
$DEBUG && print "DEBUG: QUERY_STRING=\"$_\"\n";
if ($PATH_INFO =~ m@^/@) {
$_ = $PATH_INFO;
if (! m@^//@) {
$_ = "/$_";
}
s@[\r\n\0\\"]@@g;
$DEBUG && print "DEBUG: PATH_INFO=\"$_\"\n";
$Q = "";
}
else {
$_ = &file_decode($QUERY);
$DEBUG && print "DEBUG: QUERY_STRING=\"$_\"\n";
$Q = "?";
}
if (s@^//([^/]+)@@) {
$server = $1;
# if (!$USE_OPT_A && !defined($PASSWD)) {
@@ -138,7 +154,7 @@ $DEBUG && print "DEBUG: $_";
$c = $&;
s/^ //;
$_ eq "." && next;
print "<a href=\"$CGI?$service"
print "<a href=\"$CGI$Q$service"
. &cleanup("$file/" . &file_encode($_)) . "\">"
. &html_quote($_) . "</a>"
. &html_quote($c) . "\n";
@@ -183,7 +199,7 @@ sub share_list {
for (sort @share) {
($_, $d, @c) = split(" ");
if ($d eq 'Disk') {
print "<tr><td>+ <a href=\"$CGI?//$server/"
print "<tr><td>+ <a href=\"$CGI$Q//$server/"
. &file_encode($_) . "\">"
. &html_quote($_) . "</a>";
} else {
@@ -213,7 +229,7 @@ sub server_list {
print "<tr><td colspan=3><b>$group</b>\n";
for (sort @server) {
($_, @c) = split(" ");
print "<tr><td>+ <a href=\"$CGI?//"
print "<tr><td>+ <a href=\"$CGI$Q//"
. &file_encode($_) . "\">"
. &html_quote($_) . "</a><td><td>"
. &html_quote("@c") . "\n";
@@ -335,7 +351,7 @@ sub print_form {
Content-Type: text/html
<h1>$q</h1>
<form action="$CGI?$_" method=POST>
<form action="$CGI$Q$_" method=POST>
<table>
<tr><td>Workgroup <td>User <td>Password
<tr><td><input type=text size=8 name=group value="$WORKGROUP">