remove autogenerated files
rename scripts/dirlist.in to scripts/dirlist.cgi.in
This commit is contained in:
@@ -1,3 +1,11 @@
|
||||
2001-11-21 Fumitoshi UKAI <ukai@debian.or.jp>
|
||||
|
||||
* XMakefile: update scripts/dirlist.cgi generation
|
||||
* scripts/multipart/multipart.cgi: removed
|
||||
* scripts/w3mman/w3mman scripts/w3mman/w3mman2html.cgi: removed
|
||||
* scripts/dirlist.in scripts/dirlist.cgi: removed
|
||||
* scripts/dirlist.cgi.in: added
|
||||
|
||||
2001-11-21 Fumitoshi UKAI <ukai@debian.or.jp>
|
||||
|
||||
* add rcsids
|
||||
|
7
configure
vendored
7
configure
vendored
@@ -1,5 +1,5 @@
|
||||
#!/bin/sh
|
||||
# $Id: configure,v 1.7 2001/11/20 17:49:23 ukai Exp $
|
||||
# $Id: configure,v 1.8 2001/11/21 03:58:32 ukai Exp $
|
||||
# Configuration.
|
||||
#
|
||||
|
||||
@@ -1927,13 +1927,14 @@ END_OF_CONFIG_H
|
||||
echo ''
|
||||
echo 'config.h is created. See config.h for further configuration.'
|
||||
echo ''
|
||||
echo 'Generating dirlist.cgi'
|
||||
echo 'Generating scripts/dirlist.cgi'
|
||||
|
||||
perl=`./which perl`
|
||||
if [ `expr "$perl" : 'not found'` != 0 ]; then
|
||||
perl=/usr/local/bin/perl
|
||||
fi
|
||||
sed -e "s;@PERL@;$perl;" \
|
||||
scripts/dirlist.in > scripts/dirlist.cgi
|
||||
scripts/dirlist.cgi.in > scripts/dirlist.cgi
|
||||
chmod +x scripts/dirlist.cgi
|
||||
|
||||
echo 'Configuration done. Just type "make".'
|
||||
|
@@ -1,532 +0,0 @@
|
||||
#!/usr/bin/perl
|
||||
#
|
||||
# Directory list CGI by Hironori Sakamoto (hsaka@mth.biglobe.ne.jp)
|
||||
#
|
||||
|
||||
if ( $^O =~ /^(ms)?(dos|win(32|nt)?)/i ) {
|
||||
$WIN32 = 1;
|
||||
$CYGPATH = 1;
|
||||
}
|
||||
elsif ( $^O =~ /cygwin|os2/i ) {
|
||||
$WIN32 = 1;
|
||||
$CYGPATH = 0;
|
||||
}
|
||||
else {
|
||||
$WIN32 = 0;
|
||||
$CYGPATH = 0;
|
||||
}
|
||||
$RC_DIR = '~/.w3m/';
|
||||
|
||||
$RC_DIR =~ s@^~/@$ENV{'HOME'}/@;
|
||||
if ($CYGPATH) {
|
||||
$RC_DIR = &cygwin_pathconv("$RC_DIR");
|
||||
}
|
||||
$CONFIG = "$RC_DIR/dirlist";
|
||||
$CGI = $ENV{'SCRIPT_NAME'} || $0;
|
||||
$CGI = "file://" . &file_encode("$CGI");
|
||||
|
||||
$AFMT = '<a href="%s"><nobr>%s</nobr></a>';
|
||||
$NOW = time();
|
||||
|
||||
@OPT = &init_option($CONFIG);
|
||||
|
||||
$query = $ENV{'QUERY_STRING'};
|
||||
$cmd = '';
|
||||
$cgi = 0;
|
||||
if ($query eq '') {
|
||||
$_ = `pwd`;
|
||||
chop;
|
||||
s/\r$//;
|
||||
$dir = $_;
|
||||
$cgi = 0;
|
||||
} elsif ($query =~ /^(opt\d+|dir|cmd)=/) {
|
||||
foreach(split(/\&/, $query)) {
|
||||
if (s/^dir=//) {
|
||||
$dir = &form_decode($_);
|
||||
} elsif (s/^opt(\d+)=//) {
|
||||
$OPT[$1] = $_;
|
||||
} elsif (s/^cmd=//) {
|
||||
$cmd = $_;
|
||||
}
|
||||
}
|
||||
$cgi = 1;
|
||||
} else {
|
||||
$dir = $query;
|
||||
if (($dir !~ m@^/@) &&
|
||||
($WIN32 && $dir !~ /^[a-z]:/i)) {
|
||||
$_ = `pwd`;
|
||||
chop;
|
||||
s/\r$//;
|
||||
$dir = "$_/$dir";
|
||||
}
|
||||
$cgi = -1;
|
||||
}
|
||||
if ($dir !~ m@/$@) {
|
||||
$dir .= '/';
|
||||
}
|
||||
if ($dir =~ m@^/@ && $CYGPATH) {
|
||||
$dir = &cygwin_pathconv("$dir");
|
||||
}
|
||||
$ROOT = '';
|
||||
if ($WIN32) {
|
||||
if (($dir =~ s@^//[^/]+@@) || ($dir =~ s@^[a-z]:@@i)) {
|
||||
$ROOT = $&;
|
||||
}
|
||||
if ($CYGPATH) {
|
||||
$ROOT = &cygwin_pathconv("$ROOT");
|
||||
}
|
||||
}
|
||||
if ($cgi) {
|
||||
$dir = &cleanup($dir);
|
||||
}
|
||||
|
||||
$TYPE = $OPT[$OPT_TYPE];
|
||||
$FORMAT = $OPT[$OPT_FORMAT];
|
||||
$SORT = $OPT[$OPT_SORT];
|
||||
if ($cmd) {
|
||||
&update_option($CONFIG);
|
||||
}
|
||||
|
||||
$qdir = "$ROOT" . &html_quote("$dir");
|
||||
$edir = "$ROOT" . &file_encode("$dir");
|
||||
if (! opendir(DIR, "$ROOT$dir")) {
|
||||
print <<EOF;
|
||||
Content-Type: text/html
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<title>Directory list of $qdir</title>
|
||||
</head>
|
||||
<body>
|
||||
<b>$qdir</b>: $! !
|
||||
</body>
|
||||
</html>
|
||||
EOF
|
||||
exit 1;
|
||||
}
|
||||
|
||||
# ($cgi > 0) && print <<EOF;
|
||||
# w3m-control: DELETE_PREVBUF
|
||||
# EOF
|
||||
print <<EOF;
|
||||
Content-Type: text/html
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<title>Directory list of $qdir</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Directory list of $qdir</h1>
|
||||
EOF
|
||||
&print_form($edir, @OPT);
|
||||
print <<EOF;
|
||||
<hr>
|
||||
EOF
|
||||
$dir =~ s@/$@@;
|
||||
@sdirs = split('/', $dir);
|
||||
$_ = $sdirs[0];
|
||||
if ($_ eq '') {
|
||||
$_ = '/';
|
||||
}
|
||||
if ($TYPE eq $TYPE_TREE) {
|
||||
print <<EOF;
|
||||
<table hborder width="640">
|
||||
<tr valign=top><td width="160">
|
||||
<pre>
|
||||
EOF
|
||||
$q = "$ROOT". &html_quote("$_");
|
||||
$e = "$ROOT" . &file_encode("$_");
|
||||
if ($dir =~ m@^$@) {
|
||||
$n = "\" name=\"current";
|
||||
} else {
|
||||
$n = '';
|
||||
}
|
||||
printf("$AFMT\n", "$e$n", "<b>$q</b>");
|
||||
$N = 0;
|
||||
$SKIPLINE = "";
|
||||
|
||||
&left_dir('', @sdirs);
|
||||
|
||||
print <<EOF;
|
||||
</pre>
|
||||
</td><td width="400">
|
||||
<pre>$SKIPLINE
|
||||
EOF
|
||||
} else {
|
||||
print <<EOF;
|
||||
<pre>
|
||||
EOF
|
||||
}
|
||||
|
||||
&right_dir($dir);
|
||||
|
||||
if ($TYPE eq $TYPE_TREE) {
|
||||
print <<EOF;
|
||||
</pre>
|
||||
</td></tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
EOF
|
||||
} else {
|
||||
print <<EOF;
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
||||
EOF
|
||||
}
|
||||
|
||||
sub left_dir {
|
||||
local($pre, $dir, @sdirs) = @_;
|
||||
local($ok) = (@sdirs == 0);
|
||||
local(@cdirs) = ();
|
||||
local($_, $dir0, $d, $qdir, $q, $edir, $e);
|
||||
|
||||
$dir0 = "$dir/";
|
||||
$dir = "$dir0";
|
||||
opendir(DIR, "$ROOT$dir") || return;
|
||||
|
||||
foreach(sort readdir(DIR)) {
|
||||
-d "$ROOT$dir$_" || next;
|
||||
/^\.$/ && next;
|
||||
/^\.\.$/ && next;
|
||||
push(@cdirs, $_);
|
||||
}
|
||||
closedir(DIR);
|
||||
|
||||
$qdir = "$ROOT" . &html_quote($dir);
|
||||
$edir = "$ROOT" . &file_encode($dir);
|
||||
while(@cdirs) {
|
||||
$_ = shift @cdirs;
|
||||
$q = &html_quote($_);
|
||||
$e = &file_encode($_);
|
||||
$N++;
|
||||
if (!$ok && $_ eq $sdirs[0]) {
|
||||
$d = $dir0 . shift @sdirs;
|
||||
if (!@sdirs) {
|
||||
$n = "\" name=\"current";
|
||||
$SKIPLINE = "\n" x $N;
|
||||
} else {
|
||||
$n = '';
|
||||
}
|
||||
printf("${pre}o-$AFMT\n", "$edir$e$n", "<b>$q</b>");
|
||||
&left_dir(@cdirs ? "$pre| " : "$pre ", $d, @sdirs);
|
||||
$ok = 1;
|
||||
} else {
|
||||
printf("${pre}+-$AFMT\n", "$edir$e", $q);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sub right_dir {
|
||||
local($dir) = @_;
|
||||
local(@list);
|
||||
local($_, $qdir, $q, $edir, $e, $f, $max, @d, $type, $u, $g);
|
||||
local($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
|
||||
$atime,$mtime,$ctime,$blksize,$blocks);
|
||||
local(%sizes, %ctimes, %prints);
|
||||
|
||||
$dir = "$dir/";
|
||||
opendir(DIR, "$ROOT$dir") || return;
|
||||
|
||||
$qdir = "$ROOT" . &html_quote($dir);
|
||||
$edir = "$ROOT" . &file_encode($dir);
|
||||
if ($TYPE eq $TYPE_TREE) {
|
||||
print "<b>$qdir</b>\n";
|
||||
}
|
||||
@list = ();
|
||||
$max = 0;
|
||||
foreach(readdir(DIR)) {
|
||||
/^\.$/ && next;
|
||||
# if ($TYPE eq $TYPE_TREE) {
|
||||
# /^\.\.$/ && next;
|
||||
# }
|
||||
$f = "$ROOT$dir$_";
|
||||
(($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
|
||||
$atime,$mtime,$ctime,$blksize,$blocks) = lstat($f)) || next;
|
||||
push(@list, $_);
|
||||
$sizes{$_} = $size;
|
||||
$ctimes{$_} = $ctime;
|
||||
|
||||
if ($FORMAT eq $FORMAT_COLUMN) {
|
||||
if (length($_) > $max) {
|
||||
$max = length($_);
|
||||
}
|
||||
next;
|
||||
}
|
||||
$type = &utype($mode);
|
||||
if ($FORMAT eq $FORMAT_SHORT) {
|
||||
$prints{$_} = sprintf("%-6s ", "[$type]");
|
||||
next;
|
||||
}
|
||||
if ($type =~ /^[CB]/) {
|
||||
$size = sprintf("%3u, %3u", ($rdev >> 8) & 0xff, $rdev & 0xffff00ff);
|
||||
}
|
||||
if ($FORMAT eq $FORMAT_LONG) {
|
||||
$u = $USER{$uid} || ($USER{$uid} = getpwuid($uid) || $uid);
|
||||
$g = $GROUP{$gid} || ($GROUP{$gid} = getgrgid($gid) || $gid);
|
||||
$prints{$_} = sprintf( "%s %-8s %-8s %8s %s ",
|
||||
&umode($mode), $u, $g, $size, &utime($ctime));
|
||||
# } elsif ($FORMAT eq $FORMAT_STANDARD) {
|
||||
} else {
|
||||
$prints{$_} = sprintf("%-6s %8s %s ", "[$type]", $size, &utime($ctime));
|
||||
}
|
||||
}
|
||||
closedir(DIR);
|
||||
if ($SORT eq $SORT_SIZE) {
|
||||
@list = sort { $sizes{$b} <=> $sizes{$a} || $a <=> $b } @list;
|
||||
} elsif ($SORT eq $SORT_TIME) {
|
||||
@list = sort { $ctimes{$b} <=> $ctimes{$a} || $a <=> $b } @list;
|
||||
} else {
|
||||
@list = sort @list;
|
||||
}
|
||||
if ($FORMAT eq $FORMAT_COLUMN) {
|
||||
local($COLS, $l, $nr, $n);
|
||||
if ($TYPE eq $TYPE_TREE) {
|
||||
$COLS = 60;
|
||||
} else {
|
||||
$COLS = 80;
|
||||
}
|
||||
$l = int($COLS / ($max + 2)) || 1;
|
||||
$nr = int($#list / $l + 1);
|
||||
$n = 0;
|
||||
print "<table>\n<tr valign=top>";
|
||||
foreach(@list) {
|
||||
$f = "$ROOT$dir$_";
|
||||
$q = &html_quote($_);
|
||||
$e = &file_encode($_);
|
||||
if ($n % $nr == 0) {
|
||||
print "<td>";
|
||||
}
|
||||
if (-d $f) {
|
||||
printf($AFMT, "$edir$e", "$q/");
|
||||
} else {
|
||||
printf($AFMT, "$edir$e", $q);
|
||||
}
|
||||
$n++;
|
||||
if ($n % $nr == 0) {
|
||||
print "</td>\n";
|
||||
} else {
|
||||
print "<br>\n";
|
||||
}
|
||||
}
|
||||
print "</tr></table>\n";
|
||||
return;
|
||||
}
|
||||
foreach(@list) {
|
||||
$f = "$ROOT$dir$_";
|
||||
$q = &html_quote($_);
|
||||
$e = &file_encode($_);
|
||||
print $prints{$_};
|
||||
if (-d $f) {
|
||||
printf($AFMT, "$edir$e", "$q/");
|
||||
} else {
|
||||
printf($AFMT, "$edir$e", $q);
|
||||
}
|
||||
if (-l $f) {
|
||||
print " -> ", &html_quote(readlink($f));
|
||||
}
|
||||
print "\n";
|
||||
}
|
||||
}
|
||||
|
||||
sub init_option {
|
||||
local($config) = @_;
|
||||
$OPT_TYPE = 0;
|
||||
$OPT_FORMAT = 1;
|
||||
$OPT_SORT = 2;
|
||||
$TYPE_TREE = 't';
|
||||
$TYPE_STANDARD = 'd';
|
||||
$FORMAT_SHORT = 's';
|
||||
$FORMAT_STANDARD = 'd';
|
||||
$FORMAT_LONG = 'l';
|
||||
$FORMAT_COLUMN = 'c';
|
||||
$SORT_NAME = 'n';
|
||||
$SORT_SIZE = 's';
|
||||
$SORT_TIME = 't';
|
||||
local(@opt) = ($TYPE_TREE, $FORMAT_STANDARD, $SORT_NAME);
|
||||
local($_);
|
||||
|
||||
open(CONFIG, "< $config") || return @opt;
|
||||
while(<CONFIG>) {
|
||||
chop;
|
||||
s/^\s+//;
|
||||
tr/A-Z/a-z/;
|
||||
if (/^type\s+(\S)/i) {
|
||||
$opt[$OPT_TYPE] = $1;
|
||||
} elsif (/^format\s+(\S)/i) {
|
||||
$opt[$OPT_FORMAT] = $1
|
||||
} elsif (/^sort\s+(\S)/i) {
|
||||
$opt[$OPT_SORT] = $1;
|
||||
}
|
||||
}
|
||||
close(CONFIG);
|
||||
return @opt;
|
||||
}
|
||||
|
||||
sub update_option {
|
||||
local($config) = @_;
|
||||
|
||||
open(CONFIG, "> $config") || return;
|
||||
print CONFIG <<EOF;
|
||||
type $TYPE
|
||||
format $FORMAT
|
||||
sort $SORT
|
||||
EOF
|
||||
close(CONFIG);
|
||||
}
|
||||
|
||||
sub print_form {
|
||||
local($d, @OPT) = @_;
|
||||
local(@disc) = ('Type', 'Format', 'Sort');
|
||||
local(@val) = (
|
||||
"('t', 'd')",
|
||||
"('s', 'd', 'c')",
|
||||
"('n', 's', 't')",
|
||||
);
|
||||
local(@opt) = (
|
||||
"('Tree', 'Standard')",
|
||||
"('Short', 'Standard', 'Column')",
|
||||
"('By Name', 'By Size', 'By Time')"
|
||||
);
|
||||
local($_, @vs, @os, $v, $o);
|
||||
|
||||
print <<EOF;
|
||||
<form action=\"$CGI\">
|
||||
<center>
|
||||
<table>
|
||||
<tr valign=top>
|
||||
EOF
|
||||
foreach(0 .. 2) {
|
||||
print "<td align> $disc[$_]</td>\n";
|
||||
}
|
||||
print "</tr><tr>\n";
|
||||
foreach(0 .. 2) {
|
||||
print "<td><select name=opt$_>\n";
|
||||
eval "\@vs = $val[$_]";
|
||||
eval "\@os = $opt[$_]";
|
||||
foreach $v (@vs) {
|
||||
$o = shift(@os);
|
||||
if ($v eq $OPT[$_]) {
|
||||
print "<option value=$v selected>$o\n";
|
||||
} else {
|
||||
print "<option value=$v>$o\n";
|
||||
}
|
||||
}
|
||||
print "</select></td>\n";
|
||||
}
|
||||
print <<EOF;
|
||||
<td><input type=submit name=cmd value="Update"></td>
|
||||
</tr>
|
||||
</table>
|
||||
</center>
|
||||
<input type=hidden name=dir value="$d">
|
||||
</form>
|
||||
EOF
|
||||
}
|
||||
|
||||
sub html_quote {
|
||||
local($_) = @_;
|
||||
local(%QUOTE) = (
|
||||
'<', '<',
|
||||
'>', '>',
|
||||
'&', '&',
|
||||
'"', '"',
|
||||
);
|
||||
s/[<>&"]/$QUOTE{$&}/g;
|
||||
return $_;
|
||||
}
|
||||
sub file_encode {
|
||||
local($_) = @_;
|
||||
s/[\000-\040\+:#?&%<>"\177-\377]/sprintf('%%%02X', unpack('C', $&))/eg;
|
||||
return $_;
|
||||
}
|
||||
|
||||
sub form_decode {
|
||||
local($_) = @_;
|
||||
s/\+/ /g;
|
||||
s/%([\da-f][\da-f])/pack('C', hex($1))/egi;
|
||||
return $_;
|
||||
}
|
||||
|
||||
sub cleanup {
|
||||
local($_) = @_;
|
||||
|
||||
s@//+@/@g;
|
||||
s@/\./@/@g;
|
||||
while(m@/\.\./@) {
|
||||
s@^/(\.\./)+@/@;
|
||||
s@/[^/]+/\.\./@/@;
|
||||
}
|
||||
return $_;
|
||||
}
|
||||
|
||||
sub utype {
|
||||
local($_) = @_;
|
||||
local(%T) = (
|
||||
0010000, 'PIPE',
|
||||
0020000, 'CHR',
|
||||
0040000, 'DIR',
|
||||
0060000, 'BLK',
|
||||
0100000, 'FILE',
|
||||
0120000, 'LINK',
|
||||
0140000, 'SOCK',
|
||||
);
|
||||
return $T{($_ & 0170000)} || 'FILE';
|
||||
}
|
||||
|
||||
sub umode {
|
||||
local($_) = @_;
|
||||
local(%T) = (
|
||||
0010000, 'p',
|
||||
0020000, 'c',
|
||||
0040000, 'd',
|
||||
0060000, 'b',
|
||||
0100000, '-',
|
||||
0120000, 'l',
|
||||
0140000, 's',
|
||||
);
|
||||
|
||||
return ($T{($_ & 0170000)} || '-')
|
||||
. (($_ & 00400) ? 'r' : '-')
|
||||
. (($_ & 00200) ? 'w' : '-')
|
||||
. (($_ & 04000) ? 's' :
|
||||
(($_ & 00100) ? 'x' : '-'))
|
||||
. (($_ & 00040) ? 'r' : '-')
|
||||
. (($_ & 00020) ? 'w' : '-')
|
||||
. (($_ & 02000) ? 's' :
|
||||
(($_ & 00010) ? 'x' : '-'))
|
||||
. (($_ & 00004) ? 'r' : '-')
|
||||
. (($_ & 00002) ? 'w' : '-')
|
||||
. (($_ & 01000) ? 't' :
|
||||
(($_ & 00001) ? 'x' : '-'));
|
||||
}
|
||||
|
||||
sub utime {
|
||||
local($_) = @_;
|
||||
local(@MON) = (
|
||||
'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
|
||||
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'
|
||||
);
|
||||
local($sec,$min,$hour,$mday,$mon,
|
||||
$year,$wday,$yday,$isdst) = localtime($_);
|
||||
|
||||
if ($_ > $NOW - 182*24*60*60 && $_ < $NOW + 183*24*60*60) {
|
||||
return sprintf("%3s %2d %.2d:%.2d", $MON[$mon], $mday, $hour, $min);
|
||||
} else {
|
||||
return sprintf("%3s %2d %5d", $MON[$mon], $mday, 1900+$year);
|
||||
}
|
||||
}
|
||||
|
||||
sub cygwin_pathconv {
|
||||
local($_) = @_;
|
||||
local(*CYGPATH);
|
||||
|
||||
open(CYGPATH, '-|') or exec('cygpath', '-w', $_);
|
||||
$_ = <CYGPATH>;
|
||||
close(CYGPATH);
|
||||
s/\r?\n$//;
|
||||
s!\\!/!g;
|
||||
s!/$!!;
|
||||
return $_;
|
||||
}
|
@@ -1,272 +0,0 @@
|
||||
#!/usr/local/bin/perl
|
||||
|
||||
if ($use_NKF = eval "use NKF;") {
|
||||
$CONV = "-e";
|
||||
$MIME_DECODE = "-m -e";
|
||||
} else {
|
||||
# $CONV = "w3m -dump -e";
|
||||
$CONV = "/usr/local/bin/nkf -e";
|
||||
$MIME_DECODE = "/usr/local/bin/nkf -m -e";
|
||||
}
|
||||
$MIME_TYPE = "$ENV{'HOME'}/.mime.types";
|
||||
|
||||
if (defined($ENV{'QUERY_STRING'})) {
|
||||
for (split('&', $ENV{'QUERY_STRING'})) {
|
||||
s/^([^=]*)=//;
|
||||
$v{$1} = $_;
|
||||
}
|
||||
$file = &form_decode($v{'file'});
|
||||
$boundary = &form_decode($v{'boundary'});
|
||||
} else {
|
||||
$file = $ARGV[0];
|
||||
if (@ARGV >= 2) {
|
||||
$boundary = $ARGV[1];
|
||||
}
|
||||
$CGI = "file:///\$LIB/multipart.cgi?file=" . &html_quote($file);
|
||||
}
|
||||
|
||||
open(F, $file);
|
||||
$end = 0;
|
||||
$mbody = '';
|
||||
if (defined($boundary)) {
|
||||
while(<F>) {
|
||||
s/\r?\n$//;
|
||||
($_ eq "--$boundary") && last;
|
||||
($_ eq "--$boundary--") && ($end = 1, last);
|
||||
$mbody .= "$_\n";
|
||||
}
|
||||
} else {
|
||||
while(<F>) {
|
||||
s/\r?\n$//;
|
||||
if (s/^\-\-//) {
|
||||
$boundary = $_;
|
||||
last;
|
||||
}
|
||||
$mbody .= "$_\n";
|
||||
}
|
||||
}
|
||||
$CGI .= "&boundary=" . &html_quote($boundary);
|
||||
|
||||
if (defined($v{'count'})) {
|
||||
$count = 0;
|
||||
while($count < $v{'count'}) {
|
||||
while(<F>) {
|
||||
s/\r?\n$//;
|
||||
($_ eq "--$boundary") && last;
|
||||
}
|
||||
eof(F) && exit;
|
||||
$count++;
|
||||
}
|
||||
|
||||
%header = ();
|
||||
$hbody = '';
|
||||
while(<F>) {
|
||||
/^\s*$/ && last;
|
||||
$x = $_;
|
||||
s/\r?\n$//;
|
||||
if (/=\?/) {
|
||||
$_ = &decode($_, $MIME_DECODE);
|
||||
}
|
||||
if (s/^(\S+)\s*:\s*//) {
|
||||
$hbody .= "$&$_\n";
|
||||
$p = $1;
|
||||
$p =~ tr/A-Z/a-z/;
|
||||
$header{$p} = $_;
|
||||
} elsif (s/^\s+//) {
|
||||
chop $hbody;
|
||||
$hbody .= "$_\n";
|
||||
$header{$p} .= $_;
|
||||
}
|
||||
}
|
||||
$type = $header{"content-type"};
|
||||
$dispos = $header{"content-disposition"};
|
||||
if ($type =~ /application\/octet-stream/) {
|
||||
if ($type =~ /type\=gzip/) {
|
||||
print "Content-Encoding: x-gzip\n";
|
||||
}
|
||||
if ($type =~ /name=\"?([^\"]+)\"?/ ||
|
||||
$dispos =~ /filename=\"?([^\"]+)\"?/) {
|
||||
$type = &guess_type($1);
|
||||
if ($type) {
|
||||
print "Content-Type: $type; name=\"$1\"\n";
|
||||
} else {
|
||||
print "Content-Type: text/plain; name=\"$1\"\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
print $hbody;
|
||||
print "\n";
|
||||
while(<F>) {
|
||||
$x = $_;
|
||||
s/\r?\n$//;
|
||||
($_ eq "--$boundary") && last;
|
||||
if ($_ eq "--$boundary--") {
|
||||
last;
|
||||
}
|
||||
print $x;
|
||||
}
|
||||
close(F);
|
||||
exit;
|
||||
}
|
||||
|
||||
if ($mbody =~ /\S/) {
|
||||
$_ = $mbody;
|
||||
s/\&/\&/g;
|
||||
s/\</\</g;
|
||||
s/\>/\>/g;
|
||||
print "<pre>\n";
|
||||
print $_;
|
||||
print "</pre>\n";
|
||||
}
|
||||
|
||||
$count = 0;
|
||||
while(! $end) {
|
||||
%header = ();
|
||||
$hbody = '';
|
||||
while(<F>) {
|
||||
/^\s*$/ && last;
|
||||
s/\r?\n$//;
|
||||
if (/=\?/) {
|
||||
$_ = &decode($_, $MIME_DECODE);
|
||||
}
|
||||
if (s/^(\S+)\s*:\s*//) {
|
||||
$hbody .= "$&$_\n";
|
||||
$p = $1;
|
||||
$p =~ tr/A-Z/a-z/;
|
||||
$header{$p} = $_;
|
||||
} elsif (s/^\s+//) {
|
||||
chop $hbody;
|
||||
$hbody .= "$_\n";
|
||||
$header{$p} .= $_;
|
||||
}
|
||||
}
|
||||
$type = $header{"content-type"};
|
||||
$dispos = $header{"content-disposition"};
|
||||
if ((! $type || $type =~ /^text\/plain/i) &&
|
||||
(! $dispos || $dispos =~ /^inline/i)) {
|
||||
$plain = 1;
|
||||
} else {
|
||||
$plain = 0;
|
||||
}
|
||||
$body = '';
|
||||
while(<F>) {
|
||||
s/\r?\n$//;
|
||||
($_ eq "--$boundary") && last;
|
||||
if ($_ eq "--$boundary--") {
|
||||
$end = 1;
|
||||
last;
|
||||
}
|
||||
if ($plain) {
|
||||
$body .= "$_\n";
|
||||
}
|
||||
}
|
||||
$| = 1;
|
||||
print "<hr>\n";
|
||||
{
|
||||
$_ = $hbody;
|
||||
s/\&/\&/g;
|
||||
s/\</\</g;
|
||||
s/\>/\>/g;
|
||||
print "<pre>\n";
|
||||
print $_;
|
||||
if ($type =~ /name=\"?([^\"]+)\"?/ ||
|
||||
$dispos =~ /filename=\"?([^\"]+)\"?/) {
|
||||
$name = $1;
|
||||
} else {
|
||||
$name = "[Content]";
|
||||
}
|
||||
print "\n<a href=\"$CGI&count=$count\">", &html_quote($name), "</a>";
|
||||
print "\n\n</pre>\n";
|
||||
}
|
||||
if ($plain) {
|
||||
$body = &decode($body, $CONV);
|
||||
$_ = $body;
|
||||
s/\&/\&/g;
|
||||
s/\</\</g;
|
||||
s/\>/\>/g;
|
||||
print "<pre>\n";
|
||||
print $_;
|
||||
print "</pre>\n";
|
||||
}
|
||||
eof(F) && last;
|
||||
$count++;
|
||||
}
|
||||
close(F);
|
||||
|
||||
sub decode {
|
||||
if ($use_NKF) {
|
||||
local($body, $opt) = @_;
|
||||
return nkf($opt, $body);
|
||||
}
|
||||
local($body, @cmd) = @_;
|
||||
local($_);
|
||||
|
||||
$| = 1;
|
||||
pipe(R, W2);
|
||||
pipe(R2, W);
|
||||
if (! fork()) {
|
||||
close(F);
|
||||
close(R);
|
||||
close(W);
|
||||
open(STDIN, "<&R2");
|
||||
open(STDOUT, ">&W2");
|
||||
exec @cmd;
|
||||
die;
|
||||
}
|
||||
close(R2);
|
||||
close(W2);
|
||||
print W $body;
|
||||
close(W);
|
||||
$body = '';
|
||||
while(<R>) {
|
||||
$body .= $_;
|
||||
}
|
||||
close(R);
|
||||
return $body;
|
||||
}
|
||||
|
||||
sub html_quote {
|
||||
local($_) = @_;
|
||||
local(%QUOTE) = (
|
||||
'<', '<',
|
||||
'>', '>',
|
||||
'&', '&',
|
||||
'"', '"',
|
||||
);
|
||||
s/[<>&"]/$QUOTE{$&}/g;
|
||||
return $_;
|
||||
}
|
||||
|
||||
sub form_decode {
|
||||
local($_) = @_;
|
||||
s/\+/ /g;
|
||||
s/%([\da-f][\da-f])/pack('c', hex($1))/egi;
|
||||
return $_;
|
||||
}
|
||||
|
||||
sub guess_type {
|
||||
local($_) = @_;
|
||||
|
||||
/\.(\w+)$/ || next;
|
||||
$_ = $1;
|
||||
tr/A-Z/a-z/;
|
||||
%mime_type = &load_mime_type($MIME_TYPE);
|
||||
$mime_type{$_};
|
||||
}
|
||||
|
||||
sub load_mime_type {
|
||||
local($file) = @_;
|
||||
local(%m, $a, @b, $_);
|
||||
|
||||
open(M, $file) || return ();
|
||||
while(<M>) {
|
||||
/^#/ && next;
|
||||
chop;
|
||||
(($a, @b) = split(" ")) >= 2 || next;
|
||||
for(@b) {
|
||||
$m{$_} = $a;
|
||||
}
|
||||
}
|
||||
close(M);
|
||||
return %m;
|
||||
}
|
@@ -1,41 +0,0 @@
|
||||
#!/usr/local/bin/perl
|
||||
|
||||
@W3M = split(' ', 'w3m');
|
||||
$ENV{'MAN'} = 'man';
|
||||
$SCRIPT = 'file:///$LIB/w3mman2html.cgi';
|
||||
|
||||
sub usage {
|
||||
($_ = $0) =~ s@.*/@@;
|
||||
print STDERR "$_ [-M <path>] [[<section>] <command>]\n";
|
||||
print STDERR "$_ [-M <path>] [-k <keyword>]\n";
|
||||
exit 1;
|
||||
}
|
||||
|
||||
$query = "";
|
||||
while (@ARGV) {
|
||||
$_ = shift @ARGV;
|
||||
if (/^-M$/) {
|
||||
@ARGV || &usage();
|
||||
$ENV{'MANPATH'} = shift @ARGV;
|
||||
} elsif (/^-k$/) {
|
||||
@ARGV || &usage();
|
||||
$query = "?keyword=" . &form_encode(shift @ARGV);
|
||||
} elsif (/^-/) {
|
||||
&usage();
|
||||
} elsif (/^\d/ || $_ eq 'n') {
|
||||
@ARGV || &usage();
|
||||
$query = "?quit=ok&man=" . &form_encode(shift @ARGV);
|
||||
$query .= "§ion=" . &form_encode($_);
|
||||
} else {
|
||||
$query = "?quit=ok&man=" . &form_encode($_);
|
||||
}
|
||||
}
|
||||
|
||||
exec @W3M, "$SCRIPT$query";
|
||||
|
||||
sub form_encode {
|
||||
local($_) = @_;
|
||||
s/[\000-\040\+:#?&%<>"\177-\377]/sprintf('%%%02X', unpack('C', $&))/eg;
|
||||
return $_;
|
||||
}
|
||||
|
@@ -1,252 +0,0 @@
|
||||
#!/usr/local/bin/perl
|
||||
|
||||
$MAN = $ENV{'MAN'} || 'man';
|
||||
$QUERY = $ENV{'QUERY_STRING'} || $ARGV[0];
|
||||
$SCRIPT_NAME = $ENV{'SCRIPT_NAME'} || $0;
|
||||
$CGI = "file://$SCRIPT_NAME";
|
||||
$CGI2 = "file:";
|
||||
# $CGI2 = "file:///\$LIB/hlink.cgi?";
|
||||
$SQUEEZE = 1;
|
||||
|
||||
if ($QUERY =~ /\=/) {
|
||||
for (split('&', $QUERY)) {
|
||||
($v, $q) = split('=', $_, 2);
|
||||
$query{$v} = &form_decode($q);
|
||||
}
|
||||
} else {
|
||||
$QUERY =~ s/^man=//;
|
||||
$query{"man"} = &form_decode($QUERY);
|
||||
}
|
||||
|
||||
if (! $query{"man"}) {
|
||||
if ($query{"keyword"}) {
|
||||
$keyword = $query{"keyword"};
|
||||
$k = &html_quote($keyword);
|
||||
print <<EOF;
|
||||
Content-Type: text/html
|
||||
|
||||
<html>
|
||||
<head><title>man -k $k</title></head>
|
||||
<body>
|
||||
<h2>man -k <b>$k</b></h2>
|
||||
<ul>
|
||||
EOF
|
||||
$keyword =~ s:([^\w./]):\\$1:g;
|
||||
open(F, "$MAN -k $keyword 2> /dev/null |");
|
||||
@line = ();
|
||||
while(<F>) {
|
||||
chop;
|
||||
$_ = &html_quote($_);
|
||||
s/(\s+-.*)$//;
|
||||
$title = $1;
|
||||
s@(\w[\w.\-]*(\s*\,\s*\w[\w.\-]*)*)\s*(\([\dn]\w*\))@&keyword_ref($1, $3)@ge;
|
||||
print "<li>$_$title\n";
|
||||
}
|
||||
close(F);
|
||||
print <<EOF;
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
||||
EOF
|
||||
exit;
|
||||
}
|
||||
print <<EOF;
|
||||
Content-Type: text/html
|
||||
|
||||
<html>
|
||||
<head><title>man</title></head>
|
||||
<body>
|
||||
<form action="$CGI">
|
||||
<table>
|
||||
<tr><td>Manual:<td><input name=man>
|
||||
<tr><td>Section:<td><input name=section>
|
||||
<tr><td>Keyword:<td><input name=keyword>
|
||||
<tr><td><td><input type=submit> <input type=reset>
|
||||
</table>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
||||
EOF
|
||||
exit;
|
||||
}
|
||||
|
||||
$man = $query{"man"};
|
||||
if ($man =~ s/\((\w+)\)$//) {
|
||||
$section = $1;
|
||||
$man_section = "$man($1)";
|
||||
} elsif ($query{"section"}) {
|
||||
$section = $query{"section"};
|
||||
$man_section = "$man($section)";
|
||||
} else {
|
||||
$section = "";
|
||||
$man_section = "$man";
|
||||
}
|
||||
|
||||
$section =~ s:([^\w./]):\\$1:g;
|
||||
$man =~ s:([^\w./]):\\$1:g;
|
||||
open(F, "$MAN $section $man 2> /dev/null |");
|
||||
$ok = 0;
|
||||
undef $header;
|
||||
$blank = -1;
|
||||
while(<F>) {
|
||||
if (! defined($header)) {
|
||||
/^\s*$/ && next;
|
||||
$header = $_;
|
||||
$space = $header;
|
||||
chop $space;
|
||||
$space =~ s/\S.*//;
|
||||
} elsif ($_ eq $header) { # delete header
|
||||
$blank = -1;
|
||||
next;
|
||||
} elsif (!/\010/ && /^$space[\w\200-\377].*\s\S/o) { # delete footer
|
||||
$blank = -1;
|
||||
next;
|
||||
}
|
||||
if ($SQUEEZE) {
|
||||
if (/^\s*$/) {
|
||||
$blank || $blank++;
|
||||
next;
|
||||
} elsif ($blank) {
|
||||
$blank > 0 && print "\n";
|
||||
$blank = 0;
|
||||
}
|
||||
}
|
||||
|
||||
s/\&/\&/g;
|
||||
s/\</\</g;
|
||||
s/\>/\>/g;
|
||||
|
||||
s@([\200-\377].)(\010{1,2}\1)+@<b>$1</b>@g;
|
||||
s@(\&\w+;|.)(\010\1)+@<b>$1</b>@g;
|
||||
s@__\010{1,2}((\<b\>)?[\200-\377].(\</b\>)?)@<u>$1</u>@g;
|
||||
s@_\010((\<b\>)?(\&\w+\;|.)(\</b\>)?)@<u>$1</u>@g;
|
||||
s@((\<b\>)?[\200-\377].(\</b\>)?)\010{1,2}__@<u>$1</u>@g;
|
||||
s@((\<b\>)?(\&\w+\;|.)(\</b\>)?)\010_@<u>$1</u>@g;
|
||||
s@.\010(.)@$1@g;
|
||||
|
||||
s@\</b\>\</u\>\<b\>_\</b\>\<u\>\<b\>@_@g;
|
||||
s@\</u\>\<b\>_\</b\>\<u\>@_@g;
|
||||
s@\</u\>\<u\>@@g;
|
||||
s@\</b\>\<b\>@@g;
|
||||
|
||||
if (! $ok) {
|
||||
/^No/ && last;
|
||||
print <<EOF;
|
||||
Content-Type: text/html
|
||||
|
||||
<html>
|
||||
<head><title>man $man_section</title></head>
|
||||
<body>
|
||||
<pre>
|
||||
EOF
|
||||
print;
|
||||
$ok = 1;
|
||||
next;
|
||||
}
|
||||
|
||||
s@(http|ftp)://[\w.\-/~]+[\w/]@<a href="$&">$&</a>@g;
|
||||
s@(\W)(mailto:)?(\w[\w.\-]*\@\w[\w.\-]*\.[\w.\-]*\w)@$1<a href="mailto:$3">$2$3</a>@g;
|
||||
s@(\W)(\~?/[\w.][/\w.\-]*)@$1 . &file_ref($2)@ge;
|
||||
s@(include(<\/?[bu]\>|\s)*\<)([/\w.\-]+)@$1 . &include_ref($3)@ge;
|
||||
s@(\w[\w.\-]*)((\</[bu]\>)*)(\([\dm]\w*\))@<a href="$CGI?$1$4">$1</a>$2$4@g;
|
||||
print;
|
||||
}
|
||||
close(F);
|
||||
if (! $ok) {
|
||||
if ($query{'quit'}) {
|
||||
print STDERR "No manual entry for $man_section.\n";
|
||||
print <<EOF;
|
||||
w3m-control: EXIT
|
||||
EOF
|
||||
exit 1;
|
||||
}
|
||||
print <<EOF;
|
||||
Content-Type: text/html
|
||||
|
||||
<html>
|
||||
<head><title>man $man_section</title></head>
|
||||
<body>
|
||||
<pre>
|
||||
EOF
|
||||
print "No manual entry for <B>$man_section</B>.\n";
|
||||
}
|
||||
print <<EOF;
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
||||
EOF
|
||||
|
||||
sub is_command {
|
||||
local($_) = @_;
|
||||
local($p);
|
||||
|
||||
(! -d && -x) || return 0;
|
||||
if (! defined(%PATH)) {
|
||||
for $p (split(":", $ENV{'PATH'})) {
|
||||
$p =~ s@/+$@@;
|
||||
$PATH{$p} = 1;
|
||||
}
|
||||
}
|
||||
s@/[^/]*$@@;
|
||||
return defined($PATH{$_});
|
||||
}
|
||||
|
||||
sub file_ref {
|
||||
local($_) = @_;
|
||||
|
||||
if (&is_command($_)) {
|
||||
($man = $_) =~ s@.*/@@;
|
||||
return "<a href=\"$CGI?$man\">$_</a>";
|
||||
}
|
||||
if (/^\~/ || -f || -d) {
|
||||
return "<a href=\"$CGI2$_\">$_</a>";
|
||||
}
|
||||
return $_;
|
||||
}
|
||||
|
||||
sub include_ref {
|
||||
local($_) = @_;
|
||||
local($d);
|
||||
|
||||
for $d (
|
||||
"/usr/include",
|
||||
"/usr/local/include",
|
||||
"/usr/X11R6/include",
|
||||
"/usr/X11/include",
|
||||
"/usr/X/include",
|
||||
"/usr/include/X11"
|
||||
) {
|
||||
-f "$d/$_" && return "<a href=\"$CGI2$d/$_\">$_</a>";
|
||||
}
|
||||
return $_;
|
||||
}
|
||||
|
||||
sub keyword_ref {
|
||||
local($_, $s) = @_;
|
||||
local(@a) = ();
|
||||
|
||||
for (split(/\s*,\s*/)) {
|
||||
push(@a, "<a href=\"$CGI?$_$s\">$_</a>");
|
||||
}
|
||||
return join(", ", @a) . $s;
|
||||
}
|
||||
|
||||
sub html_quote {
|
||||
local($_) = @_;
|
||||
local(%QUOTE) = (
|
||||
'<', '<',
|
||||
'>', '>',
|
||||
'&', '&',
|
||||
'"', '"',
|
||||
);
|
||||
s/[<>&"]/$QUOTE{$&}/g;
|
||||
return $_;
|
||||
}
|
||||
|
||||
sub form_decode {
|
||||
local($_) = @_;
|
||||
s/\+/ /g;
|
||||
s/%([\da-f][\da-f])/pack('c', hex($1))/egi;
|
||||
return $_;
|
||||
}
|
||||
|
Reference in New Issue
Block a user