package w3m
tag patch
--

A patch which enables w3mman -l to work :-)

Karsten Schölzel
diff --git a/scripts/w3mman/README b/scripts/w3mman/README
index 3bcbb3b..174b8b1 100644
--- a/scripts/w3mman/README
+++ b/scripts/w3mman/README
@@ -10,6 +10,7 @@ w3mman
     w3mman <command>[(<section>)]
     w3mman [<section>] <command>
     w3mman -k <keyword>
+    w3mman -l <filename>
 
 �Ķ��ѿ�
 
@@ -34,6 +35,7 @@ w3mman2html.cgi
     w3m file:///$LIB/w3mman2html.cgi?<command>[(<section>)]
     w3m file:///$LIB/w3mman2html.cgi?man=<command>[&section=<section>]
     w3m file:///$LIB/w3mman2html.cgi?keyword=<keyword>
+    w3m file:///$LIB/w3mman2html.cgi?local=<filename>
 
 ���󥹥ȡ���
 
diff --git a/scripts/w3mman/w3mman.1.in b/scripts/w3mman/w3mman.1.in
index eb30237..1c0361d 100644
--- 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 re
 .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
index 6c6f65d..6a27e70 100644
--- a/scripts/w3mman/w3mman.in
+++ b/scripts/w3mman/w3mman.in
@@ -8,6 +8,7 @@ sub usage {
   ($_ = $0) =~ [EMAIL PROTECTED]/@@;
   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
index f41d487..3cb105d 100644
--- 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>

Reply via email to