diff options
author | Peter Schiffer <pschiffe@redhat.com> | 2014-01-23 13:21:41 +0000 |
---|---|---|
committer | Colin Watson <cjwatson@debian.org> | 2014-01-23 13:21:41 +0000 |
commit | f26aa9dc1836ef4fbc6bb0487b30e2be3bb4827f (patch) | |
tree | 52f044513e9d835d5228f5640de8fcb6e1627bbe | |
parent | ba94d52d226f9adf9c0f4e0345caf1f14e186c3b (diff) |
Add support for override directory in search path
* configure.ac: Add --with-override-dir option.
* include/manconfig.h.in (OVERRIDE_DIR): New definition.
* src/manp.c (insert_override_dir): New function.
(get_manpath_from_path): Call it before add_dir_to_list.
* src/tests/man-9: New file.
* src/tests/Makefile.am (TESTS_ENVIRONMENT): Set and export
OVERRIDE_DIR.
(ALL_TESTS): Add man-9.
* NEWS: Document this.
-rw-r--r-- | Makefile.in | 1 | ||||
-rw-r--r-- | NEWS | 6 | ||||
-rwxr-xr-x | configure | 19 | ||||
-rw-r--r-- | configure.ac | 10 | ||||
-rw-r--r-- | docs/Makefile.in | 1 | ||||
-rw-r--r-- | gnulib/lib/Makefile.in | 1 | ||||
-rw-r--r-- | include/manconfig.h.in | 4 | ||||
-rw-r--r-- | lib/Makefile.in | 1 | ||||
-rw-r--r-- | libdb/Makefile.in | 1 | ||||
-rw-r--r-- | man/Makefile.in | 1 | ||||
-rw-r--r-- | man/da/Makefile.in | 1 | ||||
-rw-r--r-- | man/de/Makefile.in | 1 | ||||
-rw-r--r-- | man/es/Makefile.in | 1 | ||||
-rw-r--r-- | man/fr/Makefile.in | 1 | ||||
-rw-r--r-- | man/id/Makefile.in | 1 | ||||
-rw-r--r-- | man/it/Makefile.in | 1 | ||||
-rw-r--r-- | man/ja/Makefile.in | 1 | ||||
-rw-r--r-- | man/nl/Makefile.in | 1 | ||||
-rw-r--r-- | man/pl/Makefile.in | 1 | ||||
-rw-r--r-- | man/po4a/Makefile.in | 1 | ||||
-rw-r--r-- | man/ru/Makefile.in | 1 | ||||
-rw-r--r-- | man/zh_CN/Makefile.in | 1 | ||||
-rw-r--r-- | manual/Makefile.in | 1 | ||||
-rw-r--r-- | src/Makefile.in | 1 | ||||
-rw-r--r-- | src/manp.c | 26 | ||||
-rw-r--r-- | src/tests/Makefile.am | 5 | ||||
-rw-r--r-- | src/tests/Makefile.in | 13 | ||||
-rwxr-xr-x | src/tests/man-9 | 44 | ||||
-rw-r--r-- | tools/Makefile.in | 1 |
29 files changed, 142 insertions, 6 deletions
diff --git a/Makefile.in b/Makefile.in index 56262b5e..c87637c3 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1282,6 +1282,7 @@ mkdir_p = @mkdir_p@ neqn = @neqn@ nroff = @nroff@ oldincludedir = @oldincludedir@ +override_dir = @override_dir@ pager = @pager@ pdfdir = @pdfdir@ pic = @pic@ @@ -23,6 +23,12 @@ Major changes since man-db 2.6.5: o Pass macro and hyphenation language tags to groff again (broken in 2.6.5). + Improvements: + ------------- + + o ./configure --with-override-dir=OVERRIDE arranges to look for + manual pages in DIR/OVERRIDE before each path element DIR. + man-db 2.6.5 (27 June 2013) =========================== @@ -1486,6 +1486,7 @@ browser cat WARN_CFLAGS ARFLAGS +override_dir sections config_file_dirname config_file_basename @@ -1631,6 +1632,7 @@ with_sections enable_automatic_create enable_automatic_update enable_cats +with_override_dir enable_largefile enable_threads with_browser @@ -2338,6 +2340,10 @@ Optional Packages: --with-sections=SECTIONS use manual page sections SECTIONS [1 n l 8 3 0 2 5 4 9 6 7] + --with-override-dir=OVERRIDE + use OVERRIDE as relative override dir inside the man + path - the first directory to be searched when + looking for man pages --with-browser=BROWSER use BROWSER as default web browser --with-pager=PAGER use PAGER as default pager --with-nroff=NROFF use NROFF as roff formatter for character devices @@ -13366,6 +13372,19 @@ $as_echo "#define MAN_CATS 1" >>confdefs.h fi +# Check whether --with-override-dir was given. +if test "${with_override_dir+set}" = set; then : + withval=$with_override_dir; if test "$withval" = "yes" || test "$withval" = "no" + then + as_fn_error $? "--with-override-dir requires an argument" "$LINENO" 5 + else + override_dir=$withval + fi +else + : ${override_dir=""} +fi + + # Finish the argument parsing. # Check $PATH for the following programs and append suitable options. diff --git a/configure.ac b/configure.ac index 33a397a9..5e14f26a 100644 --- a/configure.ac +++ b/configure.ac @@ -118,6 +118,15 @@ AC_ARG_ENABLE([cats], AC_DEFINE([MAN_CATS], [1], [Allow man to create/update cat files.]) fi], [AC_DEFINE([MAN_CATS], [1], [Allow man to create/update cat files.])]) +AC_ARG_WITH([override-dir], +[AS_HELP_STRING([--with-override-dir=OVERRIDE], [use OVERRIDE as relative override dir inside the man path - the first directory to be searched when looking for man pages])], + [if test "$withval" = "yes" || test "$withval" = "no" + then + AC_MSG_ERROR([--with-override-dir requires an argument]) + else + override_dir=$withval + fi], + [: ${override_dir=""}]) # Finish the argument parsing. AC_SUBST([man_owner])dnl @@ -126,6 +135,7 @@ AC_SUBST([config_file])dnl AC_SUBST([config_file_basename])dnl AC_SUBST([config_file_dirname])dnl AC_SUBST([sections])dnl +AC_SUBST([override_dir])dnl # Check $PATH for the following programs and append suitable options. AC_PROG_CC diff --git a/docs/Makefile.in b/docs/Makefile.in index 01fc1e56..295d3a02 100644 --- a/docs/Makefile.in +++ b/docs/Makefile.in @@ -1196,6 +1196,7 @@ mkdir_p = @mkdir_p@ neqn = @neqn@ nroff = @nroff@ oldincludedir = @oldincludedir@ +override_dir = @override_dir@ pager = @pager@ pdfdir = @pdfdir@ pic = @pic@ diff --git a/gnulib/lib/Makefile.in b/gnulib/lib/Makefile.in index 65897eca..1e40dc90 100644 --- a/gnulib/lib/Makefile.in +++ b/gnulib/lib/Makefile.in @@ -1327,6 +1327,7 @@ mkdir_p = @mkdir_p@ neqn = @neqn@ nroff = @nroff@ oldincludedir = @oldincludedir@ +override_dir = @override_dir@ pager = @pager@ pdfdir = @pdfdir@ pic = @pic@ diff --git a/include/manconfig.h.in b/include/manconfig.h.in index f4853123..99814437 100644 --- a/include/manconfig.h.in +++ b/include/manconfig.h.in @@ -166,6 +166,10 @@ # define PIC "@pic@" #endif +#ifndef OVERRIDE_DIR +# define OVERRIDE_DIR "@override_dir@" +#endif + /*------------------------------------------------------------------*/ /* The following definitions are best left alone by the uninitiated */ /*------------------------------------------------------------------*/ diff --git a/lib/Makefile.in b/lib/Makefile.in index a1809346..43c42547 100644 --- a/lib/Makefile.in +++ b/lib/Makefile.in @@ -1284,6 +1284,7 @@ mkdir_p = @mkdir_p@ neqn = @neqn@ nroff = @nroff@ oldincludedir = @oldincludedir@ +override_dir = @override_dir@ pager = @pager@ pdfdir = @pdfdir@ pic = @pic@ diff --git a/libdb/Makefile.in b/libdb/Makefile.in index 3167220d..34a39866 100644 --- a/libdb/Makefile.in +++ b/libdb/Makefile.in @@ -1280,6 +1280,7 @@ mkdir_p = @mkdir_p@ neqn = @neqn@ nroff = @nroff@ oldincludedir = @oldincludedir@ +override_dir = @override_dir@ pager = @pager@ pdfdir = @pdfdir@ pic = @pic@ diff --git a/man/Makefile.in b/man/Makefile.in index 571dab57..57fdeacd 100644 --- a/man/Makefile.in +++ b/man/Makefile.in @@ -1464,6 +1464,7 @@ mkdir_p = @mkdir_p@ neqn = @neqn@ nroff = @nroff@ oldincludedir = @oldincludedir@ +override_dir = @override_dir@ pager = @pager@ pdfdir = @pdfdir@ pic = @pic@ diff --git a/man/da/Makefile.in b/man/da/Makefile.in index 794ce501..8e2b2f0c 100644 --- a/man/da/Makefile.in +++ b/man/da/Makefile.in @@ -1405,6 +1405,7 @@ mkdir_p = @mkdir_p@ neqn = @neqn@ nroff = @nroff@ oldincludedir = @oldincludedir@ +override_dir = @override_dir@ pager = @pager@ pdfdir = @pdfdir@ pic = @pic@ diff --git a/man/de/Makefile.in b/man/de/Makefile.in index 27c14fd1..551882fe 100644 --- a/man/de/Makefile.in +++ b/man/de/Makefile.in @@ -1405,6 +1405,7 @@ mkdir_p = @mkdir_p@ neqn = @neqn@ nroff = @nroff@ oldincludedir = @oldincludedir@ +override_dir = @override_dir@ pager = @pager@ pdfdir = @pdfdir@ pic = @pic@ diff --git a/man/es/Makefile.in b/man/es/Makefile.in index c874ea22..27223d4c 100644 --- a/man/es/Makefile.in +++ b/man/es/Makefile.in @@ -1405,6 +1405,7 @@ mkdir_p = @mkdir_p@ neqn = @neqn@ nroff = @nroff@ oldincludedir = @oldincludedir@ +override_dir = @override_dir@ pager = @pager@ pdfdir = @pdfdir@ pic = @pic@ diff --git a/man/fr/Makefile.in b/man/fr/Makefile.in index 7b9ce2b2..efd115b6 100644 --- a/man/fr/Makefile.in +++ b/man/fr/Makefile.in @@ -1405,6 +1405,7 @@ mkdir_p = @mkdir_p@ neqn = @neqn@ nroff = @nroff@ oldincludedir = @oldincludedir@ +override_dir = @override_dir@ pager = @pager@ pdfdir = @pdfdir@ pic = @pic@ diff --git a/man/id/Makefile.in b/man/id/Makefile.in index 2c55b7c1..cdf898cc 100644 --- a/man/id/Makefile.in +++ b/man/id/Makefile.in @@ -1405,6 +1405,7 @@ mkdir_p = @mkdir_p@ neqn = @neqn@ nroff = @nroff@ oldincludedir = @oldincludedir@ +override_dir = @override_dir@ pager = @pager@ pdfdir = @pdfdir@ pic = @pic@ diff --git a/man/it/Makefile.in b/man/it/Makefile.in index 7dc785e1..329c6880 100644 --- a/man/it/Makefile.in +++ b/man/it/Makefile.in @@ -1405,6 +1405,7 @@ mkdir_p = @mkdir_p@ neqn = @neqn@ nroff = @nroff@ oldincludedir = @oldincludedir@ +override_dir = @override_dir@ pager = @pager@ pdfdir = @pdfdir@ pic = @pic@ diff --git a/man/ja/Makefile.in b/man/ja/Makefile.in index 708d5943..3681ea41 100644 --- a/man/ja/Makefile.in +++ b/man/ja/Makefile.in @@ -1405,6 +1405,7 @@ mkdir_p = @mkdir_p@ neqn = @neqn@ nroff = @nroff@ oldincludedir = @oldincludedir@ +override_dir = @override_dir@ pager = @pager@ pdfdir = @pdfdir@ pic = @pic@ diff --git a/man/nl/Makefile.in b/man/nl/Makefile.in index 3b232d8e..f487ac50 100644 --- a/man/nl/Makefile.in +++ b/man/nl/Makefile.in @@ -1405,6 +1405,7 @@ mkdir_p = @mkdir_p@ neqn = @neqn@ nroff = @nroff@ oldincludedir = @oldincludedir@ +override_dir = @override_dir@ pager = @pager@ pdfdir = @pdfdir@ pic = @pic@ diff --git a/man/pl/Makefile.in b/man/pl/Makefile.in index a417d834..7d73963b 100644 --- a/man/pl/Makefile.in +++ b/man/pl/Makefile.in @@ -1405,6 +1405,7 @@ mkdir_p = @mkdir_p@ neqn = @neqn@ nroff = @nroff@ oldincludedir = @oldincludedir@ +override_dir = @override_dir@ pager = @pager@ pdfdir = @pdfdir@ pic = @pic@ diff --git a/man/po4a/Makefile.in b/man/po4a/Makefile.in index bc253c52..64d3d4c6 100644 --- a/man/po4a/Makefile.in +++ b/man/po4a/Makefile.in @@ -1193,6 +1193,7 @@ mkdir_p = @mkdir_p@ neqn = @neqn@ nroff = @nroff@ oldincludedir = @oldincludedir@ +override_dir = @override_dir@ pager = @pager@ pdfdir = @pdfdir@ pic = @pic@ diff --git a/man/ru/Makefile.in b/man/ru/Makefile.in index 5b5a0fe5..c1ab225a 100644 --- a/man/ru/Makefile.in +++ b/man/ru/Makefile.in @@ -1405,6 +1405,7 @@ mkdir_p = @mkdir_p@ neqn = @neqn@ nroff = @nroff@ oldincludedir = @oldincludedir@ +override_dir = @override_dir@ pager = @pager@ pdfdir = @pdfdir@ pic = @pic@ diff --git a/man/zh_CN/Makefile.in b/man/zh_CN/Makefile.in index 51df198f..d3d2ca17 100644 --- a/man/zh_CN/Makefile.in +++ b/man/zh_CN/Makefile.in @@ -1405,6 +1405,7 @@ mkdir_p = @mkdir_p@ neqn = @neqn@ nroff = @nroff@ oldincludedir = @oldincludedir@ +override_dir = @override_dir@ pager = @pager@ pdfdir = @pdfdir@ pic = @pic@ diff --git a/manual/Makefile.in b/manual/Makefile.in index f97f7037..8abb3d6b 100644 --- a/manual/Makefile.in +++ b/manual/Makefile.in @@ -1196,6 +1196,7 @@ mkdir_p = @mkdir_p@ neqn = @neqn@ nroff = @nroff@ oldincludedir = @oldincludedir@ +override_dir = @override_dir@ pager = @pager@ pdfdir = @pdfdir@ pic = @pic@ diff --git a/src/Makefile.in b/src/Makefile.in index 616f633e..eeeec389 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -1360,6 +1360,7 @@ mkdir_p = @mkdir_p@ neqn = @neqn@ nroff = @nroff@ oldincludedir = @oldincludedir@ +override_dir = @override_dir@ pager = @pager@ pdfdir = @pdfdir@ pic = @pic@ @@ -931,6 +931,24 @@ static char *def_path (int flag) } /* + * If specified with configure, append OVERRIDE_DIR to dir param and add it + * to the lp list. + */ +static void insert_override_dir (char **lp, const char *dir) +{ + char *override_dir = NULL; + + if (!strlen (OVERRIDE_DIR)) { + return; + } + + if ((override_dir = xasprintf ("%s/%s", dir, OVERRIDE_DIR))) { + add_dir_to_list (lp, override_dir); + free (override_dir); + } +} + +/* * For each directory in the user's path, see if it is one of the * directories listed in the man_db.config file. If so, and it is * not already in the manpath, add it. If the directory is not listed @@ -977,6 +995,7 @@ char *get_manpath_from_path (const char *path, int mandatory) if (mandir_list) { debug ("is in the config file\n"); while (mandir_list) { + insert_override_dir(tmplist, mandir_list->cont); add_dir_to_list (tmplist, mandir_list->cont); mandir_list = iterate_over_list (mandir_list, p, MANPATH_MAP); @@ -994,7 +1013,8 @@ char *get_manpath_from_path (const char *path, int mandatory) debug ("but does have a ../man, man, " "../share/man, or share/man " "subdirectory\n"); - + + insert_override_dir(tmplist, t); add_dir_to_list (tmplist, t); free (t); } else @@ -1010,8 +1030,10 @@ char *get_manpath_from_path (const char *path, int mandatory) debug ("\nadding mandatory man directories\n\n"); for (list = namestore; list; list = list->next) - if (list->flag == MANDATORY) + if (list->flag == MANDATORY) { + insert_override_dir(tmplist, list->key); add_dir_to_list (tmplist, list->key); + } } len = 0; diff --git a/src/tests/Makefile.am b/src/tests/Makefile.am index fa1c2e94..df4afc3d 100644 --- a/src/tests/Makefile.am +++ b/src/tests/Makefile.am @@ -22,12 +22,13 @@ TESTS_ENVIRONMENT = PATH=..:$$PATH; export PATH; \ DBTYPE=$(DBTYPE); export DBTYPE; \ MANDIR_LAYOUT=$(MANDIR_LAYOUT); export MANDIR_LAYOUT; \ top_builddir=$(top_builddir); export top_builddir; \ - @LOCALCHARSET_TESTS_ENVIRONMENT@; export CHARSETALIASDIR; + @LOCALCHARSET_TESTS_ENVIRONMENT@; export CHARSETALIASDIR; \ + OVERRIDE_DIR="@override_dir@"; export OVERRIDE_DIR; # Each test must use the configure-detected shell, not necessarily /bin/sh. AM_LOG_FLAGS = $(SHELL) ALL_TESTS = \ lexgrog-1 \ - man-1 man-2 man-3 man-4 man-5 man-6 man-7 man-8 \ + man-1 man-2 man-3 man-4 man-5 man-6 man-7 man-8 man-9 \ manconv-1 manconv-2 manconv-3 \ mandb-1 mandb-2 mandb-3 mandb-4 mandb-5 mandb-6 \ whatis-1 \ diff --git a/src/tests/Makefile.in b/src/tests/Makefile.in index 4c2a3ba4..ecaeebe6 100644 --- a/src/tests/Makefile.in +++ b/src/tests/Makefile.in @@ -1398,6 +1398,7 @@ mkdir_p = @mkdir_p@ neqn = @neqn@ nroff = @nroff@ oldincludedir = @oldincludedir@ +override_dir = @override_dir@ pager = @pager@ pdfdir = @pdfdir@ pic = @pic@ @@ -1429,13 +1430,14 @@ TESTS_ENVIRONMENT = PATH=..:$$PATH; export PATH; \ DBTYPE=$(DBTYPE); export DBTYPE; \ MANDIR_LAYOUT=$(MANDIR_LAYOUT); export MANDIR_LAYOUT; \ top_builddir=$(top_builddir); export top_builddir; \ - @LOCALCHARSET_TESTS_ENVIRONMENT@; export CHARSETALIASDIR; + @LOCALCHARSET_TESTS_ENVIRONMENT@; export CHARSETALIASDIR; \ + OVERRIDE_DIR="@override_dir@"; export OVERRIDE_DIR; # Each test must use the configure-detected shell, not necessarily /bin/sh. AM_LOG_FLAGS = $(SHELL) ALL_TESTS = \ lexgrog-1 \ - man-1 man-2 man-3 man-4 man-5 man-6 man-7 man-8 \ + man-1 man-2 man-3 man-4 man-5 man-6 man-7 man-8 man-9 \ manconv-1 manconv-2 manconv-3 \ mandb-1 mandb-2 mandb-3 mandb-4 mandb-5 mandb-6 \ whatis-1 \ @@ -1694,6 +1696,13 @@ man-8.log: man-8 --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) +man-9.log: man-9 + @p='man-9'; \ + b='man-9'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) manconv-1.log: manconv-1 @p='manconv-1'; \ b='manconv-1'; \ diff --git a/src/tests/man-9 b/src/tests/man-9 new file mode 100755 index 00000000..9d3eda11 --- /dev/null +++ b/src/tests/man-9 @@ -0,0 +1,44 @@ +#! /bin/sh + +# Testing override dir. This test covers both use cases - when override dir is +# enabled and when it's not. +# + +: ${srcdir=.} +. "$srcdir/testlib.sh" + +: ${MAN=man} + +if [ -n "$OVERRIDE_DIR" ]; then + OVERRIDE=$OVERRIDE_DIR +else + OVERRIDE="override" +fi + +init +fake_config /usr/share/man +mkdir -p "${tmpdir}/usr/share/man/${OVERRIDE}/man1" + + +write_page abc 1 "${tmpdir}/usr/share/man/man1/abc.1" \ + UTF-8 '' '' 'abc \- top-level test page' +write_page abc 1 "${tmpdir}/usr/share/man/${OVERRIDE}/man1/abc.1" \ + UTF-8 '' '' 'abc \- modified test page' + +if [ -n "$OVERRIDE_DIR" ]; then +cat >"$tmpdir/1.exp" <<EOF +$(pwd -P)/${tmpdir}/usr/share/man/${OVERRIDE}/man1/abc.1 +$(pwd -P)/${tmpdir}/usr/share/man/man1/abc.1 +EOF +else +cat >"$tmpdir/1.exp" <<EOF +$(pwd -P)/${tmpdir}/usr/share/man/man1/abc.1 +EOF +fi + + +run $MAN -C "$tmpdir/manpath.config" -aw abc >"$tmpdir/1.out" +expect_pass 'testing override dir' \ + 'diff -u "$tmpdir/1.exp" "$tmpdir/1.out"' + +finish diff --git a/tools/Makefile.in b/tools/Makefile.in index 129d21fd..aab52c54 100644 --- a/tools/Makefile.in +++ b/tools/Makefile.in @@ -1200,6 +1200,7 @@ mkdir_p = @mkdir_p@ neqn = @neqn@ nroff = @nroff@ oldincludedir = @oldincludedir@ +override_dir = @override_dir@ pager = @pager@ pdfdir = @pdfdir@ pic = @pic@ |