From 438763b6e231410b95b5e352feb65c63cd54de6a Mon Sep 17 00:00:00 2001 From: Julien Cristau Date: Fri, 7 Nov 2014 16:19:57 +0000 Subject: [PATCH] If we have man-db, don't try and emulate man's pipeline Just let man itself do the formatting / zsoelim / ... dance. Debian bug#764792 Signed-off-by: Julien Cristau --- xman/configure.ac | 5 +++++ xman/misc.c | 8 ++++++++ 2 files changed, 13 insertions(+) diff --git a/xman/configure.ac b/xman/configure.ac index 9a80cbb..8bb44f2 100644 --- a/xman/configure.ac +++ b/xman/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/xman/misc.c b/xman/misc.c index 06891cd..da8744a 100644 --- a/xman/misc.c +++ b/xman/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.1