Add man -F, which allows you to display files directly.
authorSimon Schubert <corecode@dragonflybsd.org>
Sat, 9 Sep 2006 16:12:25 +0000 (16:12 +0000)
committerSimon Schubert <corecode@dragonflybsd.org>
Sat, 9 Sep 2006 16:12:25 +0000 (16:12 +0000)
gnu/usr.bin/man/man/man.c
gnu/usr.bin/man/man/man.man

index d298873..4b574e0 100644 (file)
@@ -14,7 +14,7 @@
  * Austin, Texas  78712
  *
  * $FreeBSD: src/gnu/usr.bin/man/man/man.c,v 1.37.2.10 2003/02/14 15:38:51 ru Exp $
- * $DragonFly: src/gnu/usr.bin/man/man/man.c,v 1.3 2004/02/03 19:22:59 dillon Exp $
+ * $DragonFly: src/gnu/usr.bin/man/man/man.c,v 1.4 2006/09/09 16:12:25 corecode Exp $
  */
 
 #define MAN_MAIN
@@ -24,6 +24,7 @@
 #include <sys/param.h>
 #include <ctype.h>
 #include <errno.h>
+#include <libgen.h>
 #ifdef __DragonFly__
 #include <locale.h>
 #include <langinfo.h>
@@ -84,6 +85,7 @@ static char *longsec;
 static char *colon_sep_section_list;
 static char **section_list;
 static char *roff_directive;
+static int manfile;
 static int apropos;
 static int whatis;
 static int findall;
@@ -113,15 +115,15 @@ int debug;
 
 #ifdef HAS_TROFF
 #ifdef __DragonFly__
-static char args[] = "M:P:S:adfhkm:op:tw?";
+static char args[] = "FM:P:S:adfhkm:op:tw?";
 #else
-static char args[] = "M:P:S:adfhkm:p:tw?";
+static char args[] = "FM:P:S:adfhkm:p:tw?";
 #endif
 #else
 #ifdef __DragonFly__
-static char args[] = "M:P:S:adfhkm:op:w?";
+static char args[] = "FM:P:S:adfhkm:op:w?";
 #else
-static char args[] = "M:P:S:adfhkm:p:w?";
+static char args[] = "FM:P:S:adfhkm:p:w?";
 #endif
 #endif
 
@@ -207,6 +209,15 @@ main (argc, argv)
        do_whatis (nextarg);
        status = (status ? 0 : 1); /* reverts status, see below */
       }
+      else if (manfile) {
+       char *bn = basename(nextarg);
+       char *dn = dirname(nextarg);
+        status = format_and_display(dn, bn, NULL);
+       if (status == 0) {
+         fprintf(stderr, "Unable to display %s/%s\n", dn, bn);
+         fflush(stderr);
+       }
+      }
       else
        {
          status = man (nextarg);
@@ -227,27 +238,28 @@ usage ()
 #ifdef HAS_TROFF
 #ifdef __DragonFly__
   static char s1[] =
-    "usage: %s [-adfhkotw] [section] [-M path] [-P pager] [-S list]\n\
+    "usage: %s [-adFfhkotw] [section] [-M path] [-P pager] [-S list]\n\
            [-m machine] [-p string] name ...\n\n";
 #else
   static char s1[] =
-    "usage: %s [-adfhktw] [section] [-M path] [-P pager] [-S list]\n\
+    "usage: %s [-adFfhktw] [section] [-M path] [-P pager] [-S list]\n\
            [-m machine] [-p string] name ...\n\n";
 #endif
 #else
 #ifdef __DragonFly__
   static char s1[] =
-    "usage: %s [-adfhkow] [section] [-M path] [-P pager] [-S list]\n\
+    "usage: %s [-adFfhkow] [section] [-M path] [-P pager] [-S list]\n\
            [-m machine] [-p string] name ...\n\n";
 #else
   static char s1[] =
-    "usage: %s [-adfhkw] [section] [-M path] [-P pager] [-S list]\n\
+    "usage: %s [-adFfhkw] [section] [-M path] [-P pager] [-S list]\n\
            [-m machine] [-p string] name ...\n\n";
 #endif
 #endif
 
 static char s2[] = "  a : find all matching entries\n\
   d : print gobs of debugging information\n\
+  F : display specified file instead of searching\n\
   f : same as whatis(1)\n\
   h : print this help message\n\
   k : same as apropos(1)\n";
@@ -334,6 +346,9 @@ man_getopt (argc, argv)
     {
       switch (c)
        {
+       case 'F':
+         manfile++;
+         break;
        case 'M':
          manp = strdup (optarg);
          break;
@@ -1358,6 +1373,9 @@ format_and_display (path, man_file, cat_file)
   if (access (man_file, R_OK) != 0)
     return 0;
 
+  if (cat_file == NULL)
+    goto format_and_display;
+
   if (troff)
     {
       roff_command = make_roff_command (man_file);
@@ -1440,6 +1458,7 @@ format_and_display (path, man_file, cat_file)
                   * Couldn't create cat file.  Just format it and
                   * display it through the pager.
                   */
+format_and_display:
                  roff_command = make_roff_command (man_file);
                  if (roff_command == NULL)
                    return 0;
index 0025c45..984a90e 100644 (file)
@@ -13,7 +13,7 @@
 .\" Austin, Texas  78712
 .\"
 .\" $FreeBSD: src/gnu/usr.bin/man/man/man.man,v 1.10.2.8 2002/06/25 00:02:55 eric Exp $
-.\" $DragonFly: src/gnu/usr.bin/man/man/man.man,v 1.2 2003/06/17 04:25:46 dillon Exp $
+.\" $DragonFly: src/gnu/usr.bin/man/man/man.man,v 1.3 2006/09/09 16:12:25 corecode Exp $
 .\"
 .Dd January 5, 1991
 .Dt MAN 1
@@ -23,7 +23,7 @@
 .Nd format and display the on-line manual pages
 .Sh SYNOPSIS
 .Nm
-.Op Fl adfhkotw
+.Op Fl adFfhkotw
 .Op Fl m Ar machine
 .Op Fl p Ar string
 .Op Fl M Ar path
@@ -90,6 +90,8 @@ not just the first.
 .It Fl d
 Don't actually display the man pages, but do print gobs of debugging
 information.
+.It Fl F
+Don't search for man pages, instead interpret the arguments directly as files.
 .It Fl f
 Equivalent to
 .Nm whatis .