[PATCH xman] If we have man-db, don't try and emulate man's pipeline

Julien Cristau jcristau at debian.org
Thu Apr 30 14:38:10 PDT 2015


Just let man itself do the formatting / zsoelim / ... dance.  This
became necessary with man-db 2.7.0 moving zsoelim out of $PATH.

Debian bug#764792 <https://bugs.debian.org/764792>

Signed-off-by: Julien Cristau <jcristau at debian.org>
---
 configure.ac | 5 +++++
 misc.c       | 8 ++++++++
 2 files changed, 13 insertions(+)

diff --git a/configure.ac b/configure.ac
index 0ee3cb1..6294a58 100644
--- a/configure.ac
+++ b/configure.ac
@@ -44,6 +44,11 @@ if test "x$GROFF" = "xfound" ; then
    AC_DEFINE([HAS_GROFF], 1, [Define to 1 if you have the groff package.])
 fi
 
+AC_CHECK_PROG([MANDB], [mandb], [yes], [no])
+if test x"$MANDB" = xyes; then
+	AC_DEFINE([HAVE_MANDB], 1, [Define if the man implementation is man-db])
+fi
+
 AC_CHECK_FUNCS([mkstemp])
 
 AC_ARG_WITH(helpdir,
diff --git a/misc.c b/misc.c
index 06891cd..da8744a 100644
--- a/misc.c
+++ b/misc.c
@@ -661,6 +661,13 @@ static Boolean
 ConstructCommand(char *cmdbuf, const char *path,
                  const char *filename, const char *tempfile)
 {
+#ifdef HAVE_MANDB
+    int used = snprintf(cmdbuf, BUFSIZ, "man -l %s > %s 2>/dev/null",
+                        filename, tempfile);
+    if (used >= BUFSIZ - 1)
+	return FALSE;
+    return TRUE;
+#else
     /* The original code did the following to produce a command line:
      *   sprintf(cmdbuf,"cd %s ; %s %s %s > %s %s", path, TBL,
      *      filename, FORMAT, man_globals->tempfile, "2> /dev/null");
@@ -783,6 +790,7 @@ ConstructCommand(char *cmdbuf, const char *path,
         return (FALSE);
 
     return (TRUE);
+#endif /* man-db */
 }
 #endif                          /* HANDLE_ROFFSEQ */
 
-- 
2.1.4



More information about the xorg-devel mailing list