commit ff70c10125353071d15116197b7bedc8ca55199e
parent 205967d0654850921226a6f6a5d9edea67e9092f
Author: inu <inu>
Date: Fri, 7 Apr 2006 15:33:56 +0000
Add w3mman -l <file> command line argument for viewing of local man files.
Diffstat:
3 files changed, 46 insertions(+), 17 deletions(-)
diff --git a/scripts/w3mman/w3mman.1.in b/scripts/w3mman/w3mman.1.in
@@ -1,4 +1,4 @@
-.TH W3MMAN 1 "Mar 14, 2002"
+.TH W3MMAN 1 "Nov 5, 2005"
.\" Please adjust this date whenever revising the manpage.
.\"
.\" Some roff macros, for reference:
@@ -19,6 +19,9 @@ w3mman \- an interface to the on-line reference manuals by w3m(1)
.br
.B w3mman
.RI "[-M " path "] -k " keyword
+.br
+.B w3mman
+.RI -l " file
.SH DESCRIPTION
.B w3mman
is the system's manual pager by
@@ -31,9 +34,13 @@ Specify
.I path
as MANPATH.
.TP
-.B \-k " keyword"
+.BI \-k " keyword"
Specify
.I keyword.
+.TP
+.BI \-l " file"
+Specify a
+.I file.
.SH ENVIRONMENT
.TP
.B W3MMAN_W3M
diff --git a/scripts/w3mman/w3mman.in b/scripts/w3mman/w3mman.in
@@ -8,6 +8,7 @@ sub usage {
($_ = $0) =~ s@.*/@@;
print STDERR "$_ [-M <path>] [[<section>] <command>]\n";
print STDERR "$_ [-M <path>] [-k <keyword>]\n";
+ print STDERR "$_ [-l <file>]\n";
exit 1;
}
@@ -20,6 +21,10 @@ while (@ARGV) {
} elsif (/^-k$/) {
@ARGV || &usage();
$query = "?keyword=" . &form_encode(shift @ARGV);
+ } elsif (/^-l$/) {
+ @ARGV || &usage();
+ $query = "?quit=ok&local=" . &form_encode(shift @ARGV);
+ $query .= "&pwd=" . &form_encode($ENV{'PWD'});
} elsif (/^-/) {
&usage();
} elsif (/^\d/ || $_ eq 'n') {
diff --git a/scripts/w3mman/w3mman2html.cgi.in b/scripts/w3mman/w3mman2html.cgi.in
@@ -19,7 +19,7 @@ if ($QUERY =~ /\=/) {
$query{"man"} = &form_decode($QUERY);
}
-if (! $query{"man"}) {
+if ((! $query{"man"}) && (! $query{"local"})) {
if ($query{"keyword"}) {
$keyword = $query{"keyword"};
$k = &html_quote($keyword);
@@ -71,21 +71,29 @@ 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)";
+if ($query{"local"}) {
+ $file = $query{"local"};
+ if (! ($file =~ /^\//)) {
+ $file = $query{"pwd"} . '/' . $file;
+ }
+ open(F, "$MAN -l $file 2> /dev/null |");
} else {
- $section = "";
- $man_section = "$man";
-}
+ $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\200-\377.,])::g;
-$man =~ s:([^-\w\200-\377.,])::g;
-open(F, "$MAN $section $man 2> /dev/null |");
+ $section =~ s:([^-\w\200-\377.,])::g;
+ $man =~ s:([^-\w\200-\377.,])::g;
+ open(F, "$MAN $section $man 2> /dev/null |");
+}
$ok = 0;
undef $header;
$blank = -1;
@@ -176,6 +184,11 @@ if ($prev) {
close(F);
if (! $ok) {
if ($query{'quit'}) {
+ if ($query{'local'}) {
+ print STDERR "File $file not found.\n";
+ } else {
+ print STDERR "No manual entry for $man_section.\n";
+ }
print STDERR "No manual entry for $man_section.\n";
print <<EOF;
w3m-control: EXIT
@@ -190,7 +203,11 @@ Content-Type: text/html
<body>
<pre>
EOF
- print "No manual entry for <B>$man_section</B>.\n";
+ if ($query{'local'}) {
+ print "File <B>$file</B> not found.\n";
+ } else {
+ print "No manual entry for <B>$man_section</B>.\n";
+ }
}
print <<EOF;
</pre>