diff --git a/pkgs/tools/misc/man/default.nix b/pkgs/tools/misc/man/default.nix index deb0f83ad8ad..54367e671ea4 100644 --- a/pkgs/tools/misc/man/default.nix +++ b/pkgs/tools/misc/man/default.nix @@ -1,15 +1,32 @@ {stdenv, fetchurl, db4, groff}: stdenv.mkDerivation { - name = "man-2.4.3"; + name = "man-db-2.5.1"; + src = fetchurl { - url = http://savannah.nongnu.org/download/man-db/man-db-2.4.3.tar.gz; - md5 = "30814a47f209f43b152659ba51fc7937"; + url = http://download.savannah.nongnu.org/releases/man-db/man-db-2.5.1.tar.gz; + sha256 = "178w1fk23ffh8vabj29cn0yyg5ps7bwy1zrrrcsw8aypbh3sfjy3"; }; + buildInputs = [db4 groff]; - configureFlags = "--disable-setuid"; + + 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/share.patch b/pkgs/tools/misc/man/share.patch index 3367f4ceb61d..95582a50269d 100644 --- a/pkgs/tools/misc/man/share.patch +++ b/pkgs/tools/misc/man/share.patch @@ -1,79 +1,77 @@ -diff -rc man-db-2.4.3/src/manp.c man-db-2.4.3-new/src/manp.c -*** man-db-2.4.3/src/manp.c Mon Nov 8 10:06:03 2004 ---- man-db-2.4.3-new/src/manp.c Tue Jan 9 17:08:31 2007 +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 *************** -*** 101,107 **** +*** 96,102 **** static void mkcatdirs (const char *mandir, const char *catdir); - static __inline__ char *get_manpath (char *path); -! static __inline__ char *has_mandir (const char *p); - static __inline__ char *fsstnd (const char *path); + 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); ---- 101,107 ---- +--- 96,102 ---- static void mkcatdirs (const char *mandir, const char *catdir); - static __inline__ char *get_manpath (char *path); -! static __inline__ char *has_mandir (const char *p, const char *mandir); - static __inline__ char *fsstnd (const char *path); + 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); *************** -*** 885,891 **** - if (debug) - fputs ("is not in the config file\n", stderr); +*** 928,934 **** + } else { + debug ("is not in the config file\n"); ! t = has_mandir (p); if (t) { - if (debug) - fprintf (stderr, "but does have a ../man or man subdirectory\n"); ---- 885,891 ---- - if (debug) - fputs ("is not in the config file\n", stderr); + 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) { - if (debug) - fprintf (stderr, "but does have a ../man or man subdirectory\n"); + debug ("but does have a ../man or man " + "subdirectory\n"); *************** -*** 895,900 **** ---- 895,911 ---- +*** 938,943 **** +--- 938,952 ---- } else - if (debug) - fprintf (stderr, "and doesn't have ../man or man subdirectories\n"); -+ -+ t = has_mandir (p, "share/man"); -+ if (t) { -+ if (debug) -+ fprintf (stderr, "but does have a ../share/man or share/man subdirectory\n"); -+ -+ add_dir_to_list (tmplist, t); -+ free (t); -+ } -+ if (debug) -+ fprintf (stderr, "and doesn't have ../share/man or share/man subdirectories\n"); + 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"); } } *************** -*** 973,979 **** +*** 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) +! static inline char *has_mandir (const char *path) { char *newpath = NULL; ---- 984,990 ---- +--- 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) +! static inline char *has_mandir (const char *path, const char *mandir) { char *newpath = NULL; *************** -*** 983,991 **** +*** 1023,1031 **** char *subdir = strrchr (path, '/'); if (subdir) { const int prefix_len = subdir + 1 - path; @@ -83,7 +81,7 @@ diff -rc man-db-2.4.3/src/manp.c man-db-2.4.3-new/src/manp.c if (is_directory (newpath) == 1) return newpath; ---- 994,1002 ---- +--- 1032,1040 ---- char *subdir = strrchr (path, '/'); if (subdir) { const int prefix_len = subdir + 1 - path; @@ -94,20 +92,19 @@ diff -rc man-db-2.4.3/src/manp.c man-db-2.4.3-new/src/manp.c if (is_directory (newpath) == 1) return newpath; *************** -*** 993,999 **** +*** 1033,1039 **** *newpath = '\0'; } -! newpath = strappend (newpath, path, "/man", NULL); +! newpath = appendstr (newpath, path, "/man", NULL); if (is_directory (newpath) == 1) return newpath; ---- 1004,1010 ---- +--- 1042,1048 ---- *newpath = '\0'; } -! newpath = strappend (newpath, path, "/", mandir, NULL); +! newpath = appendstr (newpath, path, "/", mandir, NULL); if (is_directory (newpath) == 1) return newpath; -Only in man-db-2.4.3-new/src: manp.c~