diff options
author | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2008-02-07 14:39:07 +0000 |
---|---|---|
committer | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2008-02-07 14:39:07 +0000 |
commit | 4c59a67b32dc7d20205d9e260b0b5faefdbda40c (patch) | |
tree | be2adbbe565ac570c2d0c1816059f08e1c4fbf54 /pkgs/tools/misc/man | |
parent | f21f531e4eada63726f3e3e71cdb685d8c4b64d2 (diff) | |
download | nixlib-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.nix | 26 | ||||
-rw-r--r-- | pkgs/tools/misc/man/share.patch | 116 |
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); ++ } ++ + } + } + |