summary refs log tree commit diff
path: root/pkgs/tools/misc/man-db
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2008-02-07 13:38:44 +0000
committerEelco Dolstra <eelco.dolstra@logicblox.com>2008-02-07 13:38:44 +0000
commitf21f531e4eada63726f3e3e71cdb685d8c4b64d2 (patch)
tree120d68e874d3000569f7ebc5cf7395645583f5d5 /pkgs/tools/misc/man-db
parent3918ffc86d4d6d67aac0265d66a0349783b012de (diff)
downloadnixpkgs-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.nix32
-rw-r--r--pkgs/tools/misc/man-db/share.patch110
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;