diff options
author | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2008-02-07 13:38:44 +0000 |
---|---|---|
committer | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2008-02-07 13:38:44 +0000 |
commit | f21f531e4eada63726f3e3e71cdb685d8c4b64d2 (patch) | |
tree | 120d68e874d3000569f7ebc5cf7395645583f5d5 /pkgs/tools/misc/man-db | |
parent | 3918ffc86d4d6d67aac0265d66a0349783b012de (diff) | |
download | nixpkgs-f21f531e4eada63726f3e3e71cdb685d8c4b64d2.tar nixpkgs-f21f531e4eada63726f3e3e71cdb685d8c4b64d2.tar.gz nixpkgs-f21f531e4eada63726f3e3e71cdb685d8c4b64d2.tar.bz2 nixpkgs-f21f531e4eada63726f3e3e71cdb685d8c4b64d2.tar.lz nixpkgs-f21f531e4eada63726f3e3e71cdb685d8c4b64d2.tar.xz nixpkgs-f21f531e4eada63726f3e3e71cdb685d8c4b64d2.tar.zst nixpkgs-f21f531e4eada63726f3e3e71cdb685d8c4b64d2.zip |
* man -> man-db.
svn path=/nixpkgs/trunk/; revision=10543
Diffstat (limited to 'pkgs/tools/misc/man-db')
-rw-r--r-- | pkgs/tools/misc/man-db/default.nix | 32 | ||||
-rw-r--r-- | pkgs/tools/misc/man-db/share.patch | 110 |
2 files changed, 142 insertions, 0 deletions
diff --git a/pkgs/tools/misc/man-db/default.nix b/pkgs/tools/misc/man-db/default.nix new file mode 100644 index 00000000000..54367e671ea --- /dev/null +++ b/pkgs/tools/misc/man-db/default.nix @@ -0,0 +1,32 @@ +{stdenv, fetchurl, db4, groff}: + +stdenv.mkDerivation { + name = "man-db-2.5.1"; + + src = fetchurl { + url = http://download.savannah.nongnu.org/releases/man-db/man-db-2.5.1.tar.gz; + sha256 = "178w1fk23ffh8vabj29cn0yyg5ps7bwy1zrrrcsw8aypbh3sfjy3"; + }; + + buildInputs = [db4 groff]; + + configureFlags = '' + --disable-setuid + --with-nroff=${groff}/bin/nroff + --with-tbl=${groff}/bin/tbl + --with-eqn=${groff}/bin/eqn + --with-neqn=${groff}/bin/neqn + ''; + + troff = "${groff}/bin/troff"; + + patches = [ + # Search in "share/man" relative to each path in $PATH (in addition to "man"). + ./share.patch + ]; + + meta = { + homepage = http://www.nongnu.org/man-db/; + description = "An implementation of the standard Unix documentation system accessed using the man command"; + }; +} diff --git a/pkgs/tools/misc/man-db/share.patch b/pkgs/tools/misc/man-db/share.patch new file mode 100644 index 00000000000..95582a50269 --- /dev/null +++ b/pkgs/tools/misc/man-db/share.patch @@ -0,0 +1,110 @@ +diff -rc man-db-2.5.1-orig/src/manp.c man-db-2.5.1/src/manp.c +*** man-db-2.5.1-orig/src/manp.c 2008-01-07 03:23:11.000000000 +0100 +--- man-db-2.5.1/src/manp.c 2008-02-07 14:20:20.000000000 +0100 +*************** +*** 96,102 **** + + static void mkcatdirs (const char *mandir, const char *catdir); + static inline char *get_manpath_from_path (const char *path); +! static inline char *has_mandir (const char *p); + static inline char *fsstnd (const char *path); + static char *def_path (int flag); + static void add_dir_to_list (char **lp, const char *dir); +--- 96,102 ---- + + static void mkcatdirs (const char *mandir, const char *catdir); + static inline char *get_manpath_from_path (const char *path); +! static inline char *has_mandir (const char *p, const char *mandir); + static inline char *fsstnd (const char *path); + static char *def_path (int flag); + static void add_dir_to_list (char **lp, const char *dir); +*************** +*** 928,934 **** + } else { + debug ("is not in the config file\n"); + +! t = has_mandir (p); + if (t) { + debug ("but does have a ../man or man " + "subdirectory\n"); +--- 928,934 ---- + } else { + debug ("is not in the config file\n"); + +! t = has_mandir (p, "man"); + if (t) { + debug ("but does have a ../man or man " + "subdirectory\n"); +*************** +*** 938,943 **** +--- 938,952 ---- + } else + debug ("and doesn't have ../man or man " + "subdirectories\n"); ++ ++ t = has_mandir (p, "share/man"); ++ if (t) { ++ debug ("but does have a ../share/man or share/man subdirectory\n"); ++ ++ add_dir_to_list (tmplist, t); ++ free (t); ++ } else ++ debug ("and doesn't have ../share/man or share/man subdirectories\n"); + } + } + +*************** +*** 1013,1019 **** + + /* path does not exist in config file: check to see if path/../man or + path/man exist. If so return it, if not return NULL. */ +! static inline char *has_mandir (const char *path) + { + char *newpath = NULL; + +--- 1022,1028 ---- + + /* path does not exist in config file: check to see if path/../man or + path/man exist. If so return it, if not return NULL. */ +! static inline char *has_mandir (const char *path, const char *mandir) + { + char *newpath = NULL; + +*************** +*** 1023,1031 **** + char *subdir = strrchr (path, '/'); + if (subdir) { + const int prefix_len = subdir + 1 - path; +! newpath = xmalloc (prefix_len + sizeof ("man") + 1); + strncpy (newpath, path, prefix_len); +! strcpy (newpath + prefix_len, "man"); + + if (is_directory (newpath) == 1) + return newpath; +--- 1032,1040 ---- + char *subdir = strrchr (path, '/'); + if (subdir) { + const int prefix_len = subdir + 1 - path; +! newpath = xmalloc (prefix_len + strlen (mandir) + 2); + strncpy (newpath, path, prefix_len); +! strcpy (newpath + prefix_len, mandir); + + if (is_directory (newpath) == 1) + return newpath; +*************** +*** 1033,1039 **** + *newpath = '\0'; + } + +! newpath = appendstr (newpath, path, "/man", NULL); + + if (is_directory (newpath) == 1) + return newpath; +--- 1042,1048 ---- + *newpath = '\0'; + } + +! newpath = appendstr (newpath, path, "/", mandir, NULL); + + if (is_directory (newpath) == 1) + return newpath; |