about summary refs log tree commit diff
path: root/pkgs/tools/misc/man
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2008-02-07 14:39:07 +0000
committerEelco Dolstra <eelco.dolstra@logicblox.com>2008-02-07 14:39:07 +0000
commit4c59a67b32dc7d20205d9e260b0b5faefdbda40c (patch)
treebe2adbbe565ac570c2d0c1816059f08e1c4fbf54 /pkgs/tools/misc/man
parentf21f531e4eada63726f3e3e71cdb685d8c4b64d2 (diff)
downloadnixlib-4c59a67b32dc7d20205d9e260b0b5faefdbda40c.tar
nixlib-4c59a67b32dc7d20205d9e260b0b5faefdbda40c.tar.gz
nixlib-4c59a67b32dc7d20205d9e260b0b5faefdbda40c.tar.bz2
nixlib-4c59a67b32dc7d20205d9e260b0b5faefdbda40c.tar.lz
nixlib-4c59a67b32dc7d20205d9e260b0b5faefdbda40c.tar.xz
nixlib-4c59a67b32dc7d20205d9e260b0b5faefdbda40c.tar.zst
nixlib-4c59a67b32dc7d20205d9e260b0b5faefdbda40c.zip
* A more pure man implementation.
svn path=/nixpkgs/trunk/; revision=10547
Diffstat (limited to 'pkgs/tools/misc/man')
-rw-r--r--pkgs/tools/misc/man/default.nix26
-rw-r--r--pkgs/tools/misc/man/share.patch116
2 files changed, 142 insertions, 0 deletions
diff --git a/pkgs/tools/misc/man/default.nix b/pkgs/tools/misc/man/default.nix
new file mode 100644
index 000000000000..490aa4606abb
--- /dev/null
+++ b/pkgs/tools/misc/man/default.nix
@@ -0,0 +1,26 @@
+{stdenv, fetchurl, groff, less}:
+ 
+stdenv.mkDerivation {
+  name = "man-1.6f";
+  
+  src = fetchurl {
+    url = http://primates.ximian.com/~flucifredi/man/man-1.6f.tar.gz;
+    sha256 = "0v2z6ywhy8kd2fa3ywkqayhjdivbaqn6qvhx93a1ldw135z8q84z";
+  };
+  
+  buildInputs = [groff less];
+
+  preBuild = ''
+    makeFlagsArray=(bindir=$out/bin sbindir=$out/sbin libdir=$out/lib mandir=$out/share/man)
+  '';
+
+  patches = [
+    # Search in "share/man" relative to each path in $PATH (in addition to "man").
+    ./share.patch
+  ];
+
+  meta = {
+    homepage = http://primates.ximian.com/~flucifredi/man/;
+    description = "Tool to read online Unix documentation";
+  };
+}
diff --git a/pkgs/tools/misc/man/share.patch b/pkgs/tools/misc/man/share.patch
new file mode 100644
index 000000000000..837786e28eba
--- /dev/null
+++ b/pkgs/tools/misc/man/share.patch
@@ -0,0 +1,116 @@
+diff -rc man-1.6f-orig/src/manpath.c man-1.6f/src/manpath.c
+*** man-1.6f-orig/src/manpath.c	2006-08-03 23:18:33.000000000 +0200
+--- man-1.6f/src/manpath.c	2008-02-07 15:31:43.000000000 +0100
+***************
+*** 109,121 ****
+   * or ../man or ../man1 or ../man8 subdirectories. 
+   */
+  static char *
+! find_man_subdir (char *p) {
+       int len;
+       char *t, *sp;
+  
+       len = strlen (p);
+  
+!      t = my_malloc ((unsigned) len + 20);
+  
+       memcpy (t, p, len);
+       strcpy (t + len, "/man");
+--- 109,121 ----
+   * or ../man or ../man1 or ../man8 subdirectories. 
+   */
+  static char *
+! find_man_subdir (char *p, char * maybe_share) {
+       int len;
+       char *t, *sp;
+  
+       len = strlen (p);
+  
+!      t = my_malloc ((unsigned) len + 30);
+  
+       memcpy (t, p, len);
+       strcpy (t + len, "/man");
+***************
+*** 139,159 ****
+       }
+  
+       /* look for the situation with packagedir/bin and packagedir/man */
+!      strcpy (t + len, "/man");
+  
+       if (is_directory (t) == 1)
+  	  return t;
+  
+       /* look for the situation with pkg/bin and pkg/man1 or pkg/man8 */
+       /* (looking for all man[1-9] would probably be a waste of stats) */
+!      strcpy (t + len, "/man1");
+  
+       if (is_directory (t) == 1) {
+  	  t[len] = 0;
+  	  return t;
+       }
+  
+!      strcpy (t + len, "/man8");
+  
+       if (is_directory (t) == 1) {
+  	  t[len] = 0;
+--- 139,159 ----
+       }
+  
+       /* look for the situation with packagedir/bin and packagedir/man */
+!      sprintf (t + len, "%s/man", maybe_share);
+  
+       if (is_directory (t) == 1)
+  	  return t;
+  
+       /* look for the situation with pkg/bin and pkg/man1 or pkg/man8 */
+       /* (looking for all man[1-9] would probably be a waste of stats) */
+!      sprintf (t + len, "%s/man1", maybe_share);
+  
+       if (is_directory (t) == 1) {
+  	  t[len] = 0;
+  	  return t;
+       }
+  
+!      sprintf (t + len, "%s/man8", maybe_share);
+  
+       if (is_directory (t) == 1) {
+  	  t[len] = 0;
+***************
+*** 341,347 ****
+          if (debug)
+              gripe (IS_NOT_IN_CONFIG);
+            
+!         t = find_man_subdir (dir);
+          if (t != NULL) {
+              if (debug)
+                  gripe (MAN_NEARBY);
+--- 341,347 ----
+          if (debug)
+              gripe (IS_NOT_IN_CONFIG);
+            
+!         t = find_man_subdir (dir, "");
+          if (t != NULL) {
+              if (debug)
+                  gripe (MAN_NEARBY);
+***************
+*** 352,357 ****
+--- 352,370 ----
+              if (debug)
+                  gripe (NO_MAN_NEARBY);
+          }
++ 
++         t = find_man_subdir (dir, "/share");
++         if (t != NULL) {
++             if (debug)
++                 gripe (MAN_NEARBY);
++               
++             add_to_mandirlist (t, perrs);
++             free (t);
++         } else {
++             if (debug)
++                 gripe (NO_MAN_NEARBY);
++         }
++ 
+      }
+  }
+