diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-27 10:49:50 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-27 10:49:50 +0000 |
commit | 74b60c5712f2a84904b95d008953c140a9bd5dd2 (patch) | |
tree | dd12cc58c6d4cfb5e2c1183f47757295ce3b5662 /ChangeLog | |
parent | Initial commit. (diff) | |
download | man-db-upstream.tar.xz man-db-upstream.zip |
Adding upstream version 2.9.4.upstream/2.9.4upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'ChangeLog')
-rw-r--r-- | ChangeLog | 5179 |
1 files changed, 5179 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 0000000..65e7855 --- /dev/null +++ b/ChangeLog @@ -0,0 +1,5179 @@ +2021-02-08 Colin Watson <cjwatson@debian.org> + + Release man-db 2.9.4 + +2021-02-08 Colin Watson <cjwatson@debian.org> + + Fix distribution of Romanian manual page translation + + Accidentally omitted from 1c7b46aecbed76c9833e0a5c833fc2ffd1a7a85a. + + * man/Makefile.am (DIST_SUBDIRS): Add ro. + +2021-02-08 Мирослав Николић <miroslavnikolic@rocketmail.com> + + Update Serbian manual page translation + + * man/po4a/po/sr.po: Update from Translation Project. + +2020-12-11 Mario Blättermann <mario.blaettermann@gmail.com> + + Update German manual page translation + + * man/po4a/po/de.po: Update from Translation Project. + +2020-09-13 Colin Watson <cjwatson@debian.org> + + Handle \[en] escapes in NAME section + + Fixes Debian bug #970122. + + * src/lexgrog.l (MAN_NAME): Treat "\[en]" (and similar) as another + synonym for "\-", and thus as a separator. (This spelling is + groff-specific; the older "\(en" spelling was already accepted.) + * NEWS: Document this. + +2020-08-22 Colin Watson <cjwatson@debian.org> + + Fix gcc -Wzero-length-bounds warning + + * lib/orderfiles.c (order_files): Avoid accessing an element of a + zero-length array. + +2020-08-22 S. Gilles <sgilles@umd.edu> + + Allow clock_gettime64; return ENOSYS so libcs can engage fallbacks + + libcs such as musl expect ENOSYS to be returned (not EPERM) in their + fallback code, so change the seccomp filter to be more agreeable to + them. + + At the same time, clock_gettime is permitted in the filter, so permit + clock_gettime64 as well -- it will be needed by 2038 in any case. + + * lib/sandbox.c (make_seccomp_filter): Set default action to + SCMP_ACT_ERRNO (ENOSYS). Allow clock_gettime64. + * NEWS: Document this. + +2020-07-04 Colin Watson <cjwatson@debian.org> + + Add Romanian manual page translation + + * man/po4a/po/ro.po: New from Translation Project (thanks, Florentina + Mușat). + * configure.ac (AC_CONFIG_FILES): Add man/ro/Makefile. + * man/LINGUAS.po4a: Add ro. + * man/Makefile.am (DIST_SUBDIRS): Add ro. + * man/ro/Makefile.am, man/ro/translator.add: New files. + * man/po4a/Makefile.am (POFILES): Add po/ro.po. + * man/po4a/po4a.cfg (po4a_langs): Add ro. + * man/THANKS: Update translator credit. + * .gitignore: Add man/ro/man1, man/ro/man5, and man/ro/man8. + +2020-07-04 Colin Watson <cjwatson@debian.org> + + Remove "Type" column from DB table in mandb(8) + + The database types table in mandb(8) has always been a bit + dubiously-placed; it's really more about how man-db is configured, and + as such makes more sense in manual/db.me (which indeed has an extended + version of the same table). It causes particular problems in translated + versions of this page, where it's very easy for it to become too wide + and cause "make check" failures. + + A proper fix for this would probably require updating existing + translations, but an easy improvement is to remove the "Type" column: it + has negligible relevance here, and removing it makes it much easier for + translated versions to stay within page width limits. + + * man/man8/mandb.man8 (DATABASE CACHES): Remove "Type" column from + table. + +2020-07-03 Colin Watson <cjwatson@debian.org> + + Recognise Romanian translations of NAME + + * src/lexgrog.l (ro_name): Add. + (name): Add ro_name. + * NEWS: Document this. + +2020-06-24 Florentina Mușat <florentina.musat.28@gmail.com> + + Update Romanian translation + + * po/ro.po: Update from Translation Project. + * man/THANKS: Add translator credit. + +2020-06-22 Colin Watson <cjwatson@debian.org> + + Release man-db 2.9.3 + +2020-06-22 Colin Watson <cjwatson@debian.org> + + Avoid po4a confusion with \c + + po4a >= 0.58 (I think) changes its handling of \c slightly, resulting in + incorrect output for the admittedly awkward uses of \c in man(1). + Rearrange markup to avoid this. + + * man/man1/man.man1 (OVERVIEW): Recast description of the syntax of + locale environment variables using \f[BIR] rather than .B/.RI and \c. + (Controlling formatted output): Coalesce markup for the default prompt + into a single .BI macro, avoiding the need for \c. Unfuzzy most + translations. + * NEWS: Document this. + +2020-06-22 Colin Watson <cjwatson@debian.org> + + Fix po4a version comparison + + po4a's versions don't quite conform to Perl's standard versioning + arrangements, producing very confusing results when trying to compare + two-component and three-component versions (because "0.47" is equivalent + to "v0.470.0"). Perhaps we should use some other version comparison + system instead, but in the meantime patch things up so that what we + currently use behaves more sensibly. + + * man/po4a/Locale/Po4a/Manext.pm (_parse_version): New subroutine. + (shiftline, pushline, translate): Use _parse_version, and always use a + leading "v" on the right-hand side. + +2020-06-01 Colin Watson <cjwatson@debian.org> + + Clarify description of zstd in configure + + Suggested by crabbed halo ablution in Savannah bug #57558. + + * configure.ac: Describe zstd as "LZ77/entropy-coding compression + utility". + +2020-06-01 Colin Watson <cjwatson@debian.org> + + Release man-db 2.9.2 + +2020-06-01 Colin Watson <cjwatson@debian.org> + + Update to Gnulib 20200531 + + * bootstrap: Sync to Gnulib d4429157c13b49d1749f5ea18fb30e24ffa646aa. + * bootstrap.conf (GNULIB_REVISION): Set to + d4429157c13b49d1749f5ea18fb30e24ffa646aa. + +2020-06-01 Bernhard Rosenkränzer <bero@lindev.ch> + + Add support for zstd-compressed manual pages + + * configure.ac: Check for zstd. + * include/comp_src.h.in (comp_list): Add zstd. + * include/manconfig.h.in: Define UNZSTD. + * NEWS: Document this. + +2020-05-31 Colin Watson <cjwatson@debian.org> + + Fix configure logic for enabling COMP_CAT + + Only enable COMP_CAT if a compressor is defined. (We don't have all + possible decompression utilities set up to be compressors too.) + + * configure.ac: Only enable COMP_CAT if $compressor is non-empty. + +2020-05-31 Colin Watson <cjwatson@debian.org> + + Make gxditview work with seccomp sandbox + + "man -X" and friends used to work by running groff with -X, causing it + to run gxditview itself. This didn't work with the seccomp sandbox: the + sorts of system calls that a text processor needs to make are not very + much related to the sorts of system calls that an X client needs to + make. + + Instead, run groff with -X -Z to pass the appropriate options to troff + but stop it from running gxditview, and then run gxditview ourselves + without sandboxing. This also lets us set a better window title. + + * src/man.c (make_roff_command): In gxditview mode, run groff with -Z as + well as -X. + (make_display_command): In gxditview mode, add an appropriate gxditview + process. + (display): In gxditview mode, call the ordinary "display formatted page" + logic, without saving a cat page. + +2020-05-31 Colin Watson <cjwatson@debian.org> + + * NEWS: Move misplaced entry to "Fixes". + +2020-05-31 Colin Watson <cjwatson@debian.org> + + Fix document font size for -X75-12 and -X100-12 + + Reported by Konrad Schwarz. + + * src/man.c (make_roff_command): Add the "-rS12" argument if the + argument to -X contains "-12". + * NEWS: Document this. + +2020-05-17 Stéphane Aulery <lkppo@free.fr> + + Update French manual page translation + + * man/po4a/po/fr.po: Update from Translation Project. + * man/THANKS: Update translator credit. + +2020-04-12 Mario Blättermann <mario.blaettermann@gmail.com> + + Update German manual page translation + + Fixes Debian bug #955320. + + * man/po4a/po/de.po: Update from Translation Project. + +2020-04-12 Colin Watson <cjwatson@debian.org> + + NEWS: Remove superfluous ")" + +2020-04-04 Boyuan Yang <073plan@gmail.com> + + Update Simplified Chinese manual page translation + + * man/po4a/po/zh_CN.po: Update from Translation Project. + +2020-04-02 Мирослав Николић <miroslavnikolic@rocketmail.com> + + Update Serbian translation + + * po/sr.po: Update from Translation Project. + +2020-03-29 Colin Watson <cjwatson@debian.org> + + Add bug tracker link to manual pages + + Fixes Savannah bug #58039. + + * man/man1/apropos.man1 (BUGS), man/man1/lexgrog.man1 (BUGS), + man/man1/man-recode.man1 (BUGS), man/man1/man.man1 (BUGS), + man/man1/manconv.man1 (BUGS), man/man1/manpath.man1 (BUGS), + man/man1/whatis.man1 (BUGS), man/man1/zsoelim.man1 (BUGS), + man/man8/accessdb.man8 (BUGS), man/man8/catman.man8 (BUGS), + man/man8/mandb.man8 (BUGS): New section, containing a link to the bug + tracker. + * man/man5/manpath.man5 (BUGS): Add a link to the bug tracker. + * NEWS: Document this. + +2020-03-28 Bjarni Ingi Gislason <bjarniig@rhi.hi.is> + + man/man8/*: Fix misuse of two-fonts macros + + Correct the misuse of a two-fonts macro, which function is to + + 1) use the first font for each odd numbered argument and the second + font for all others. + + 2) join (output) the arguments without an intervening space. + + Fixes Debian bug #955187. + + * man/man8/accessdb.man8 (OPTIONS): Use a one-font macro when there is + only a single argument. + * man/man8/catman.man8 (OPTIONS): Likewise. + * man/man8/mandb.man8 (OPTIONS): Likewise. + +2020-03-28 Bjarni Ingi Gislason <bjarniig@rhi.hi.is> + + man/man1/*: Fix misuse of two-fonts macros + + Correct the misuse of a two-fonts macro, which function is to + + 1) use the first font for each odd numbered argument and the second + font for all others. + + 2) join (output) the arguments without an intervening space. + + Fixes Debian bug #955185. + + * man/man1/lexgrog.man1 (OPTIONS): Use a one-font macro when there is + only a single argument. + * man/man1/man-recode.man1 (OPTIONS): Likewise. + * man/man1/man.man1 (DESCRIPTION): Likewise. + * man/man1/whatis.man1 (OPTIONS): Likewise. + * man/man1/zsoelim.man1 (DESCRIPTION): Likewise. + +2020-02-25 Colin Watson <cjwatson@debian.org> + + Release man-db 2.9.1 + +2020-02-25 Colin Watson <cjwatson@debian.org> + + Update to Gnulib 20200224 + + * bootstrap: Sync to Gnulib d279bc6d9f9323e19ad8c32b6d12ff96dfb0f5ba. + * bootstrap.conf (GNULIB_REVISION): Set to + d279bc6d9f9323e19ad8c32b6d12ff96dfb0f5ba. + (gnulib_modules): Add havelib, needed for AM_GNU_GETTEXT in + configure.ac. + +2020-01-27 Colin Watson <cjwatson@debian.org> + + Add cat path configuration for /snap/man + + Add MANDB_MAP entry mapping the prospective /snap/man directory to + /var/cache/man/snap, as discussed with the snapd team. + + * src/man_db.conf.in: Add "MANDB_MAP /snap/man /var/cache/man/snap". + * NEWS: Document this. + +2019-12-26 Felipe Castro <fefcas@gmail.com> + + Update Esperanto translation + + * po/eo.po: Update from Translation Project. + +2019-12-26 Sebastian Rasmussen <sebras@gmail.com> + + Update Swedish manual page translation + + * man/po4a/po/sv.po: Update from Translation Project. + +2019-12-26 Sebastian Rasmussen <sebras@gmail.com> + + Update Swedish translation + + * po/sv.po: Update from Translation Project. + +2019-11-23 Colin Watson <cjwatson@debian.org> + + Drop fdutimens patch for GNU/Hurd + + The bug (https://bugs.debian.org/762677) that this was working around + was fixed in glibc 2.28, or Debian glibc 2.27-2. + + * patches/fdutimens-hurd.patch: Remove. + * bootstrap.conf (bootstrap_post_import_hook): Stop applying + patches/fdutimens-hurd.patch. + * Makefile.am (EXTRA_DIST): Remove patches/fdutimens-hurd.patch. + * NEWS: Document this. + +2019-10-23 Colin Watson <cjwatson@debian.org> + + Release man-db 2.9.0 + +2019-10-23 Antonio Ceballos Roa <aceballos@gmail.com> + + Update Spanish manual page translation + + * man/po4a/po/es.po: Update from Translation Project. + +2019-10-18 Antonio Ceballos Roa <aceballos@gmail.com> + + Update Spanish manual page translation + + * man/po4a/po/es.po: Update from Translation Project. + +2019-10-11 Mario Blättermann <mario.blaettermann@gmail.com> + + Update German manual page translation + + * man/po4a/po/de.po: Update from Translation Project. + +2019-10-10 Antonio Ceballos Roa <aceballos@gmail.com> + + Update Spanish manual page translation + + * man/po4a/po/es.po: Update from Translation Project. + +2019-10-07 Antonio Ceballos Roa <aceballos@gmail.com> + + Update Spanish manual page translation + + * man/po4a/po/es.po: Update from Translation Project. + +2019-10-05 Antonio Ceballos Roa <aceballos@gmail.com> + + Update Spanish manual page translation + + * man/po4a/po/es.po: Update from Translation Project. + * man/THANKS: Update translator credit. + +2019-10-05 Yuri Kozlov <yuray@komyakino.ru> + + Update Russian manual page translation + + * man/po4a/po/ru.po: Update from Translation Project. + +2019-10-05 Pedro Albuquerque <palbuquerque73@gmail.com> + + Update Portuguese manual page translation + + * man/po4a/po/pt.po: Update from Translation Project. + +2019-10-05 Pedro Albuquerque <palbuquerque73@gmail.com> + + Update Portuguese translation + + * po/pt.po: Update from Translation Project. + +2019-10-05 Rafael Fontenelle <rafaelff@gnome.org> + + Update Brazilian Portuguese manual page translation + + * man/po4a/po/pt_BR.po: Update from Translation Project. + +2019-10-03 Colin Watson <cjwatson@debian.org> + + Fix language/territory candidate comparison logic + + When I extracted the COMPARE_LOCALE_ELEMENTS macro, I apparently left in + an explicit reference to territory that should have been the "elt" + parameter. As a result, some cases of language and territory comparison + went wrong, in particular resulting in pt_BR users seeing pt pages ahead + of pt_BR pages. + + Reported by Rafael Fontenelle. + + * src/man.c (compare_candidates): Fix incorrect territory-specific + comparison in COMPARE_LOCALE_ELEMENTS. + * NEWS: Document this. + +2019-10-03 Stéphane Aulery <lkppo@free.fr> + + Update French translation + + * po/fr.po: Update from Translation Project. + * man/THANKS: Add translator credit. + +2019-10-03 Mario Blättermann <mario.blaettermann@gmail.com> + + Update German translation + + * po/de.po: Update from Translation Project. + +2019-10-03 Yuri Kozlov <yuray@komyakino.ru> + + Update Russian translation + + * po/ru.po: Update from Translation Project. + +2019-10-03 Boyuan Yang <073plan@gmail.com> + + Update Simplified Chinese translation + + * po/zh_CN.po: Update from Translation Project. + +2019-10-03 Antonio Ceballos Roa <aceballos@gmail.com> + + Update Spanish translation + + * po/es.po: Update from Translation Project. + * man/THANKS: Add translator credit. + +2019-10-03 pan93412 <pan93412@gmail.com> + + Update Traditional Chinese translation + + * po/zh_TW.po: Update from Translation Project. + +2019-10-03 Rafael Fontenelle <rafaelff@gnome.org> + + Update Brazilian Portuguese translation + + * po/pt_BR.po: Update from Translation Project. + +2019-10-01 Colin Watson <cjwatson@debian.org> + + Release man-db 2.9.0-pre1 + +2019-09-30 Colin Watson <cjwatson@debian.org> + + Add a new man-recode program + + This has an interface designed for bulk conversion, and so can be much + faster than running "man --recode" on each page. + + Fixes Debian bug #933576. + + * bootstrap.conf (gnulib_modules): Add renameat, tempname, and unlinkat. + * src/man-recode.c: New file. + * src/Makefile.am (bin_PROGRAMS): Add man-recode. + (man_recode_LDADD, man_recode_SOURCES): Add. + * src/tests/man-recode-in-place, src/tests/man-recode-suffix: New files. + * src/tests/Makefile.am (ALL_TESTS): Add man-recode-in-place and + man-recode-suffix. + * .gitignore: Add src/man-recode. + * po/POTFILES.in: Add src/man-recode.c. + + * m4/man-trans-subst.m4 (MAN_TRANS_SUBST): Adjust to support program + names containing dashes. + * configure.ac: Add substitutions for man-recode. + + * man/man1/man-recode.man1: New file. + * man/man1/man.man1 (Main modes of operation): Add a note to the + description of --recode suggesting man-recode instead. + * man/man1/manconv.man1 (SEE ALSO): Add reference to man-recode(1). + * man/Makefile.am (man1_MANS): Add man1/man-recode.1. + * man/da/Makefile.am (man1_MANS): Likewise. + * man/de/Makefile.am (man1_MANS): Likewise. + * man/es/Makefile.am (man1_MANS): Likewise. + * man/fr/Makefile.am (man1_MANS): Likewise. + * man/id/Makefile.am (man1_MANS): Likewise. + * man/ja/Makefile.am (man1_MANS): Likewise. + * man/nl/Makefile.am (man1_MANS): Likewise. + * man/pl/Makefile.am (man1_MANS): Likewise. + * man/pt/Makefile.am (man1_MANS): Likewise. + * man/pt_BR/Makefile.am (man1_MANS): Likewise. + * man/ru/Makefile.am (man1_MANS): Likewise. + * man/sr/Makefile.am (man1_MANS): Likewise. + * man/sv/Makefile.am (man1_MANS): Likewise. + * man/tr/Makefile.am (man1_MANS): Likewise. + * man/zh_CN/Makefile.am (man1_MANS): Likewise. + * man/po4a/po4a.cfg: Add support for man-recode. + * man/replace.sin.in: Substitute %man_recode% and %thman_recode%. + + * NEWS: Document this. + +2019-09-30 Colin Watson <cjwatson@debian.org> + + manconv: Guess input encoding if necessary + + * src/manconv_main.c (args_doc): Mark -f option as optional. + (parse_opt): Don't fail if no input encoding was specified. + (main): If no input encoding was specified, guess it from the file name + in the same way that man does. + * man/man1/manconv.man1 (SYNOPSIS): Mark -f option as optional. + (OPTIONS): Describe new default behaviour for -f. + * configure.ac: Disable -Winline; we don't care about gl_list_add_last + not always being inlined. + * NEWS: Document this. + +2019-09-30 Colin Watson <cjwatson@debian.org> + + lexgrog, zsoelim: Suppress more compiler warnings + + -Wsuggest-attribute=malloc was added in GCC 8, so don't try to ignore it + with earlier versions. + + * src/lexgrog.l: Guard '#pragma GCC diagnostic ignored + "-Wsuggest-attribute=malloc"' so that it is only invoked with GCC >= 8. + * src/zsoelim.l: Likewise. + +2019-09-11 Colin Watson <cjwatson@debian.org> + + apropos(1), whatis(1): Fix typo + + Already fixed in man(1) by commit + 68ef9f324832c790a7e3565f726fa1bc9a6d0178. + + * man/man1/apropos.man1 (ENVIRONMENT): an -> and. + * man/man1/whatis.man1 (ENVIRONMENT): Likewise. + +2019-09-09 Colin Watson <cjwatson@debian.org> + + man: Accept "page(section)" form on command line + + Suggested by Tanguy Ortolo and Paul Wise. Fixes Debian bug #677350. + + * src/man.c (split_page_name): Accept "page(section)" form as well as + "page.section". + * src/tests/man-suffixed-extension: Test the "page(section)" form. + * man/man1/man.man1 (SYNOPSIS): Don't mention the "page.section" form + here; it gets too unwieldy to try to express all the possibilities in a + synopsis. + (EXAMPLES): Document "page(section)" form. + (OPTIONS): Hyphenate "Non-argument options" thus. + * NEWS: Document this. + +2019-09-08 Colin Watson <cjwatson@debian.org> + + Make some debugging output less verbose + + Also indent some sections of debugging output, which allows removing + some blank lines. + + Fixes Debian bug #863920. + + * src/catman.c (main): Remove unnecessary debugging output of manp + before calling create_pathlist. + * src/manp.c (main): Likewise. + * src/mandb.c (main): Likewise. + + * src/man.c (main): Remove debugging output of ruid and euid, which was + redundant with init_security. Remove extra newline before "using %s as + pager". + * src/manp.c (describe_flag, print_list): Remove: everything that adds + items to this list already emits a more human-friendly debugging + message. Remove caller of print_list. + (add_sections): Squash debugging output onto one line, and indent it by + two spaces. + (add_def, add_manpath_map, add_mandb_map, add_mandatory): Indent + debugging output by two spaces. + (read_config_file): Remove extra newline after "From the config file + %s:". + (get_manpath_from_path): Remove extra newlines before "path directory + %s" and "adding mandatory man directories". + (add_expanded_dir_to_list): Remove noisy "%s is already in the manpath" + debugging output. Indent "adding %s to manpath" by two spaces. + (add_man_subdirs): Remove noisy "and doesn't have ../man, man, + ../share/man, or share/man subdirectories" debugging output. + +2019-09-08 Colin Watson <cjwatson@debian.org> + + Refactor deduplication in create_pathlist + + This is more efficient, and also has the useful side-effect of reducing + noise in debug output. + + * src/manp.c (struct canonicalized_path): New structure. + (canonicalized_path_new, canonicalized_path_equals, + canonicalized_path_hash, canonicalized_path_free): New functions. + (add_dir_to_path_list): Canonicalize the given path and (if it exists) + add both the original and canonicalized versions as a pair. + (create_pathlist): Simplify: rather than doing a second quadratic-time + pass to eliminate duplicates, we now avoid inserting them in linear time + as we go along. + +2019-09-08 Colin Watson <cjwatson@debian.org> + + man(1): Explain interactions between -w/-W and -a + + Reported by Bjarni Ingi Gislason. Fixes Debian bug #803712. + + * man/man1/man.man1 (Main modes of operation): Explain that the -w and + -W options only print a single match by default, but that -a can be used + to print all matches. + +2019-09-08 Colin Watson <cjwatson@debian.org> + + Suggest "man man" if run with no arguments + + Fixes Debian bug #869798. + + * src/man.c (gripe_no_name): Suggest running "man man". + * NEWS: Document this. + +2019-09-08 Colin Watson <cjwatson@debian.org> + + * NEWS: Document recent manual page improvements. + +2019-09-08 Colin Watson <cjwatson@debian.org> + + Mention where other manual pages come from + + * man/man1/man.man1 (OVERVIEW): Explain that individual manual pages + normally come with whatever they document. + +2019-09-08 Colin Watson <cjwatson@debian.org> + + Revamp man(1) to be a more accessible introduction + + Fixes Savannah bug #53050. + + * man/man1/man.man1 (SYNOPSIS): Delete details of most options, as it + had got much too long and indigestible. The OPTIONS section below + remains, and is better-organised and easier to read. Delete the "man + -c" form entirely, as it's only for internal use by catman. + (DESCRIPTION): Move list of default sections to ... + (DEFAULTS): ... here. + (EXAMPLES): Use a real example rather than the peculiar "alias" + terminology for "man -t". + (OVERVIEW): Various minor editorial improvements. Remove discussion of + index database caches: it's mostly irrelevant to users, and is already + better-documented in mandb(8), apropos(1), and whatis(1). Simplify + discussion of where pages are stored. Briefly describe what cat pages + are. Rewrite description of localisation support to read more fluently + and to take into account that most users will already have a suitable + locale set up. Drop discussion of translations of this package's own + messages: this should be standard rather than something that we + explicitly need to call out here, and the term "message catalogues" was + opaque. + (DEFAULTS): Remove discussion of index database caches, as above. + Remove discussion of cat pages, since this is an implementation detail + and confused matters here too much. + (Finding manual pages): Tighten up language in description of + --sections. Simplify description of --update, and tell readers that it + is normally better to run mandb(8) instead. + (FILES): Remove mention of index database caches from here. While + man(1) does use them, they're an implementation detail and are + better-documented elsewhere. + (SEE ALSO): Remove overly-detailed cross-references to setlocale(3), + ascii(7), latin1(7), the man-db manual, and the FSSTND. Add a paragraph + mentioning documentation in other formats, such as info(1) or HTML. + * man/man5/manpath.man5 (FORMAT): Remove stray quote before the FSSTND + keyword. + * man/man8/mandb.man8 (DESCRIPTION): Remove claim that index database + caches are usually maintained by man(1). + + * man/man1/man.man1, man/man1/manpath.man1: Use the "..." style of + quoting rather than the `...' style. + +2019-09-08 Colin Watson <cjwatson@debian.org> + + Improve documentation of MANROFFOPT + + Reported by Bjarni Ingi Gislason. Fixes Debian bug #914938. + + * man/man1/man.man1 (ENVIRONMENT): Rephrase description of MANROFFOPT to + make it clear that it is added to the formatter's command line, rather + than to man's command line. + +2019-09-08 Colin Watson <cjwatson@debian.org> + + Remove confusing use of "on-line" + + Nowadays "on-line" tends to be understood as "on the internet" rather + than "on a screen", so avoid the term. + + Reported by Dan Jacobson. Fixes Debian bug #774402. + + * docs/man-db.lsm: Say "system help files" rather than "on-line help + files". + * man/man1/man.man1 (NAME): Say "system reference manuals" rather than + "on-line reference manuals". + * manual/intro.me (Introduction): Say "information" rather than "online + information". + * manual/man_db.me: Say "manual page system" rather than "online manual + page system". + + * man/man1/lexgrog.man1 (EXAMPLES): Update examples quoting man(1)'s + description. + * manual/db.me (Example database): Likewise. + * manual/intro.me (Introduction): Likewise. + * src/tests/man-mandatory-manpath: Update test quoting man(1)'s + description. + +2019-09-08 Colin Watson <cjwatson@debian.org> + + Tidy up formatting of Wilf's name + + Based on similar changes elsewhere by Bjarni Ingi Gislason. + + * man/man1/lexgrog.man1 (AUTHOR): Protect "." with "\&" if it is + followed by a space and does not mean the end of a sentence. + * man/man1/manpath.man1 (AUTHOR): Likewise. + * man/man1/whatis.man1 (AUTHOR): Likewise. + * man/man1/zsoelim.man1 (AUTHOR): Likewise. + * man/man8/accessdb.man8 (AUTHOR): Likewise. + * man/man8/catman.man8 (AUTHOR): Likewise. + * man/man8/mandb.man8 (AUTHOR): Likewise. + +2019-09-08 Bjarni Ingi Gislason <bjarniig@rhi.hi.is> + + manpath(1): Correct some typographic mistakes + + Fixes Debian bug #927452. + + * man/man1/manpath.man1 (DESCRIPTION): Use \(en for a dash where + appropriate. + (OPTIONS): Change .BR to .B if there is only one argument. + +2019-09-08 Bjarni Ingi Gislason <bjarniig@rhi.hi.is> + + apropos(1): Minor typographic changes + + Fixes Debian bug #892421. + + * man/man1/apropos.man1 (DESCRIPTION): Use "\e" to print the escape + character instead of "\\" (which is interpreted in copy mode). + (OPTIONS): Change .BR to .B if there is only one argument. + (FILES): Add a space around "|" to increase readability. + (AUTHOR): Protect "." with "\&" if it is followed by a space and does + not mean the end of a sentence. + +2019-09-08 Colin Watson <cjwatson@debian.org> + + Apply italic corrections + + Partly based on suggestions from Bjarni Ingi Gislason in Debian + bug #892421, although I had to take a slightly different approach to + avoid confusing po4a. + + * man/man1/apropos.man1 (OPTIONS): Apply italic corrections to + descriptions of --sections and --systems. Simplify three-font handling + for --systems. + * man/man1/man.man1 (Finding manual pages): Likewise. + * man/man1/whatis.man1 (OPTIONS): Likewise. + * man/man1/manpath.man1 (OPTIONS): Apply italic corrections to + description of --systems, and simplify three-font handling. + +2019-09-07 Colin Watson <cjwatson@debian.org> + + man(1): Adjust description of section 5 + + * man/man1/man.man1 (DESCRIPTION): Add a comma before "e.g.". + +2019-09-07 Bjarni Ingi Gislason <bjarniig@rhi.hi.is> + + man(1): Minor typographic changes + + Fixes Debian bug #892230. + + * man/man1/man.man1 (DESCRIPTION, HISTORY): Protect "." with "\&" if it + is followed by a space and does not mean the end of a sentence. + (EXAMPLES): Use a macro to change to the italic font instead of \fI if + possible. The macros have the italic corrections. + (EXAMPLES, Controlling formatted output, Getting help, SEE ALSO): Change + .BR/.IR to .B/.I if there is only one argument, or else separate the + second argument from the first if needed. + (DEFAULTS): Begin each sentence on a new line. + (FILES): Add a space around "|" to increase readability. + +2019-09-07 Colin Watson <cjwatson@debian.org> + + Make long lines in man(1) less likely + + Fixes part of Debian bug #892230. + + * man/man1/man.man1 (DESCRIPTION, ENVIRONMENT): Put the expansion of + %sections% on its own line. + +2019-09-07 Colin Watson <cjwatson@debian.org> + + Escape %troff% expansion correctly in manual pages + + Fixes part of Debian bug #892230. + + * configure.ac: Substitute troff_as_troff_input, which is the same as + troff but with suitable escaping so that "groff -mandoc" turns into + "groff \-mandoc". + * man/replace.sin.in (%troff%): Substitute @troff_as_troff_input@ rather + than @troff@. + +2019-09-07 Colin Watson <cjwatson@debian.org> + + Remove trailing whitespace from manual pages + + * man/man1/apropos.man1, man/man1/lexgrog.man1, man/man1/man.man1, + man/man1/manpath.man1, man/man1/whatis.man1, man/man1/zsoelim.man1, + man/man5/manpath.man5, man/man8/accessdb.man8, man/man8/catman.man8, + man/man8/mandb.man8: Remove trailing whitespace. + +2019-09-07 Sebastian Rasmussen <sebras@gmail.com> + + Fix trivial typo in man manpage + + Fixes Savannah bug #48663. + + * man/man1/man.man1: an -> and. + +2019-09-07 Colin Watson <cjwatson@debian.org> + + Remove stray words from man(1) + + Reported by Bjarni Ingi Gislason. Fixes Debian bug #939599. + + * man/man1/man.man1 (DEFAULTS): Remove two stray words from the + description of how the pager is specified. + +2019-09-06 Colin Watson <cjwatson@debian.org> + + Adjust encoding declarations when recoding + + * lib/encodings.c (check_preprocessor_encoding): Return a modified + encoding declaration in *modified_line if the new to_encoding and + modified_line parameters are non-NULL. + * lib/encodings.h (check_preprocessor_encoding): Update prototype. + * src/man.c (make_roff_command): Pass NULL as to_encoding and + modified_line arguments to check_preprocessor_encoding. + * src/manconv.c (manconv): Output a modified encoding declaration if + necessary. + * src/tests/manconv-coding-tags: Adjust for new expected output. Add a + test for the case where the coding tag matches the target encoding. + * src/tests/manconv-odd-combinations: Adjust for new expected output. + * NEWS: Document this. + +2019-09-05 Colin Watson <cjwatson@debian.org> + + Give test cases more meaningful names + + * src/tests/lexgrog-1: Rename to ... + * src/tests/lexgrog-basic: ... this. + * src/tests/lexgrog-2: Rename to ... + * src/tests/lexgrog-multiple-whatis: ... this. + * src/tests/lexgrog-3: Rename to ... + * src/tests/lexgrog-backslash-dash-rhs: ... this. + * src/tests/man-1: Rename to ... + * src/tests/man-symlinks-with-matching-names: ... this. + * src/tests/man-10: Rename to ... + * src/tests/man-deleted-directory: ... this. + * src/tests/man-11: Rename to ... + * src/tests/man-suffixed-extension: ... this. + * src/tests/man-2: Rename to ... + * src/tests/man-executable-page-on-path: ... this. + * src/tests/man-3: Rename to ... + * src/tests/man-exact-section-matches: ... this. + * src/tests/man-4: Rename to ... + * src/tests/man-mandatory-manpath: ... this. + * src/tests/man-5: Rename to ... + * src/tests/man-so-links-same-section: ... this. + * src/tests/man-6: Rename to ... + * src/tests/man-missing-locales: ... this. + * src/tests/man-7: Rename to ... + * src/tests/man-invalid-db-entry: ... this. + * src/tests/man-8: Rename to ... + * src/tests/man-language-specific-requests: ... this. + * src/tests/man-9: Rename to ... + * src/tests/man-override-dir: ... this. + * src/tests/manconv-1: Rename to ... + * src/tests/manconv-coding-tags: ... this. + * src/tests/manconv-2: Rename to ... + * src/tests/manconv-odd-combinations: ... this. + * src/tests/manconv-3: Rename to ... + * src/tests/manconv-incomplete-char-at-eof: ... this. + * src/tests/mandb-1: Rename to ... + * src/tests/mandb-basic: ... this. + * src/tests/mandb-2: Rename to ... + * src/tests/mandb-regular-file-symlink-changes: ... this. + * src/tests/mandb-3: Rename to ... + * src/tests/mandb-whatis-broken-link-changes: ... this. + * src/tests/mandb-4: Rename to ... + * src/tests/mandb-symlink-beats-whatis-ref: ... this. + * src/tests/mandb-5: Rename to ... + * src/tests/mandb-empty-page: ... this. + * src/tests/mandb-6: Rename to ... + * src/tests/mandb-bogus-symlink: ... this. + * src/tests/mandb-7: Rename to ... + * src/tests/mandb-cachedir-tag: ... this. + * src/tests/whatis-1: Rename to ... + * src/tests/whatis-path-to-executable: ... this. + * src/tests/zsoelim-1: Rename to ... + * src/tests/zsoelim-so-includes: ... this. + * src/tests/Makefile.am (ALL_TESTS): Update. + +2019-09-01 Colin Watson <cjwatson@debian.org> + + Remove unnecessary PP_COOKIE conditionals + + PP_COOKIE is always defined, so there's no need for #ifdefs. + + * lib/encodings.c (check_preprocessor_encoding): Remove PP_COOKIE + conditional. + * src/man.c (get_preprocessors_from_file): Likewise. + * src/zsoelim.l (zsoelim_parse_file): Likewise. + +2019-09-01 Colin Watson <cjwatson@debian.org> + + Remove ability to undefine COMP_SRC + + This was a minor optimisation that wasn't worth the extra code + complexity. + + * configure.ac (COMP_SRC): Remove. + * include/comp_src.h.in: Remove COMP_SRC conditional. comp_list will + simply contain only the terminal entry if no compressors are configured. + * include/manconfig.h.in: Remove COMP_SRC conditional and comment. + * manual/comp.me (Compressed manual pages): Remove documentation of + COMP_SRC; explain that support depends on the decompressors available at + configure time. + * src/compression.c: Remove COMP_SRC conditional. + (comp_info): Only do the HP-UX check if gunzip is available. + * src/filenames.c (make_filename): Remove parenthetical comment about + COMP_SRC. + (filename_info): Remove COMP_SRC conditionals. + * src/man.c (convert_name): Likewise. + * src/straycats.c (check_for_stray): Likewise. + * src/ult_src.c (ult_src): Likewise. + * NEWS: Document this. + +2019-08-31 Colin Watson <cjwatson@debian.org> + + Improve list iteration helper + + * lib/glcontainers.h (GL_LIST_FOREACH_START): Capture the gl_list_node_t + in each loop iteration. + * src/descriptions_store.c (store_descriptions): Simplify detection of + the last loop iteration. + * src/manconv.c (manconv): Likewise. + * src/manconv_client.c (add_manconv): Likewise. + * src/manp.c (create_pathlist): Simplify manual loop iteration that can + now be expressed using GL_LIST_FOREACH_START/GL_LIST_FOREACH_END. + Simplify detection of the first loop iteration when emitting the final + search path as debugging information. + +2019-08-30 Colin Watson <cjwatson@debian.org> + + Improve data types in manconv + + * src/manconv.c (try_iconv): Change "last" parameter type to bool. + Change types of "to_utf8" and "ignore_errors" to bool. + (manconv): Convert "from" to gl_list. + * src/manconv.h (manconv): Update prototype. + * src/manconv_client.h (struct manconv_codes): Convert "from" to + gl_list. + (free_manconv_codes, add_manconv): Convert "codes->from" to gl_list. + * src/manconv_main.c (from_code, split_codes, parse_opt, main): Convert + to gl_list. + +2019-08-26 Colin Watson <cjwatson@debian.org> + + Release man-db 2.8.7 + +2019-08-26 Takeshi Hamasaki <hmatrjp@users.sourceforge.jp> + + Update Japanese translation + + * po/ja.po: Update from Translation Project. + * man/THANKS: Add translator credit. + +2019-08-26 Colin Watson <cjwatson@debian.org> + + Order results manually for NDBM as well as GDBM + + Commit 3a753221a3dddaf4870a86a4dca4771ed2cd80b3 in 2003 (!) worked + around the fact that GDBM's firstkey/nextkey interface doesn't return + ordered results. However, at least when using GDBM's NDBM compatibility + interface, this may be true for NDBM too. Extend the manual result + ordering code to cover both of these backends. + + * libdb/db_gdbm.c (parent_keys, datum_compare, datum_equals, datum_hash, + datum_free, empty_datum, man_gdbm_firstkey, man_gdbm_nextkey, + man_gdbm_close): Move to ... + * libdb/db_xdbm.c (parent_keys, datum_compare, datum_equals, datum_hash, + datum_free, empty_datum, man_xdbm_firstkey, man_xdbm_nextkey, + man_xdbm_close): ... here (new file). + * libdb/db_xdbm.h: New file. + * libdb/db_gdbm.c (unsorted_firstkey, unsorted_nextkey, raw_close): New + functions, wrapping gdbm_firstkey, gdbm_nextkey, and gdbm_close + respectively. + (man_gdbm_firstkey, man_gdbm_nextkey, man_gdbm_close): Add GDBM-specific + wrappers for the generic man_xdbm_* functions. + * libdb/db_ndbm.c (man_ndbm_close): Move NDBM-specific code ... + (raw_close): ... here. + (unsorted_firstkey, unsorted_nextkey): New functions, wrapping + dbm_firstkey and dbm_nextkey respectively. + (man_ndbm_close, man_ndbm_firstkey, man_ndbm_nextkey): Add NDBM-specific + wrappers for the generic man_xdbm_* functions. + * libdb/mydbm.h (man_ndbm_firstkey, man_ndbm_nextkey): Add prototypes. + (MYDBM_FIRSTKEY) [NDBM]: Rewrite in terms of man_ndbm_firstkey. + (MYDBM_NEXTKEY) [NDBM]: Rewrite in terms of man_ndbm_nextkey. + * libdb/Makefile.am (libmandb_la_SOURCES): Add db_xdbm.c and db_xdbm.h. + * NEWS: Document this. + +2019-08-25 Colin Watson <cjwatson@debian.org> + + Enable many more GCC warnings + + * bootstrap.conf (gnulib_modules): Add manywarnings. + * configure.ac: Add gl_MANYWARN_ALL_GCC, with some refinements to + disable -Wsystem-headers and -Wmissing-field-initializers. Define + GNULIB_NO_VLA=1 to avoid tripping over -Wvla. + * src/accessdb.c (help_filter): Disable -Wformat-nonliteral around this + function. + * src/man.c (help_filter): Likewise. + * src/check_mandirs.c (gripe_rwopen_failed, update_db_time): Factor out + EAGAIN || EWOULDBLOCK check to ... + (is_eagain): ... here, with -Wlogical-op disabled. + * src/lexgrog.l, src/zsoelim.l: Disable -Wsuggest-attribute=malloc, + -Wsuggest-attribute=pure, and -Wunused-macros. + +2019-08-25 Colin Watson <cjwatson@debian.org> + + Pacify gcc -Wnull-dereference + + * src/accessdb.c (main): Add an assertion to help the compiler prove + that dbf is non-NULL. (It doesn't know that error (FATAL, ...) is + non-returning.) + +2019-08-25 Colin Watson <cjwatson@debian.org> + + Add several function attributes suggested by GCC + + * lib/debug.c (vdebug): Mark first argument as a printf format string. + * lib/encodings.c (get_page_encoding): Mark as malloc-like. + (is_roff_device, get_output_encoding, get_less_charset, + get_jless_charset): Mark as pure. + * lib/glcontainers.c (string_equals, string_hash): Mark as pure. + * lib/security.c (running_setuid): Mark as pure. + * lib/util.c (trim_spaces): Mark as malloc-like. + * libdb/db_lookup.c (dash_if_unset): Mark as const. + * libdb/db_store.c (compare_ids): Mark as const. + * src/whatis.c (match): Mark as pure. + +2019-08-25 Colin Watson <cjwatson@debian.org> + + Fix some printf formats + + * libdb/db_lookup.c (list_extensions): Format the return value of + gl_list_size using %zu, not %zd. + * src/catman.c (add_arg): Format the return values of MYDBM_DSIZE and + strlen using %zu, not %zd. + (parse_for_sec): Format ARG_MAX - arg_size using %zu, not %zd. + * src/man.c (main): Format ruid and euid using %lu, not %d (cast to + unsigned long since POSIX only says that uid_t is an integer type). + * src/manp.c (describe_flag): Format flag using %u, not %d. + +2019-08-25 Colin Watson <cjwatson@debian.org> + + Remove several unused macros + + * libdb/db_store.c (_): Remove. + * src/compression.c (_): Likewise. + * src/globbing_test.c (_): Likewise. + * src/zsoelim_main.c (_): Likewise. + +2019-08-25 Colin Watson <cjwatson@debian.org> + + Make a couple of functions static + + * lib/orderfiles.c (compare_physical_offsets): Make static. + * src/descriptions.c (page_description_free): Likewise. + +2019-08-25 Colin Watson <cjwatson@debian.org> + + Move declaration of _nl_msg_cat_cntr to top level + + gcc -Wnested-externs warns when it encounters this declaration within a + function. + + * include/manconfig.h.in (locale_changed): Move _nl_msg_cat_cntr + declaration to the top level. + +2019-08-25 Colin Watson <cjwatson@debian.org> + + Add some missing includes + + * lib/linelength.c: Include "linelength.h". + * lib/orderfiles.c: Include "orderfiles.h". + +2019-08-24 Colin Watson <cjwatson@debian.org> + + Simplify some GCC attribute handling + + * lib/orderfiles.c (order_files) [!HAVE_LINUX_FIEMAP_H && + !HAVE_POSIX_FADVISE]: Use _GL_UNUSED rather than ATTRIBUTE_UNUSED. + * lib/sandbox.c (_sandbox_load) [!HAVE_LIBSECCOMP]: Likewise. + * lib/security.c (drop_privs): Likewise. + * src/accessdb.c (help_filter): Likewise. + * src/check_mandirs.c (chown_if_possible): Likewise. + * src/decompress.c (decompress_zlib): Likewise. + * src/lexgrog_test.c (help_filter): Likewise. + * src/man.c (help_filter, squeeze_blank_lines, disable_hyphenation, + disable_justification): Likewise. + * src/manconv.c (manconv): Likewise. + * src/manp.c (free_config_file): Likewise. + * src/tests/fspause.c (main): Likewise. + * src/whatis.c (help_filter): Likewise. + * src/zsoelim_main.c (parse_opt): Likewise. + * include/manconfig.h.in (ATTRIBUTE_UNUSED): Remove in favour of the + shorter _GL_UNUSED. + (ATTRIBUTE_MALLOC): Remove; it was unused. + +2019-08-24 Colin Watson <cjwatson@debian.org> + + Use C11/Gnulib's _Noreturn + + * lib/cleanup.c (sighandler): Declare as _Noreturn. + * src/man.c (gripe_converting_name): Use _Noreturn rather than + ATTRIBUTE_NORETURN. + * include/manconfig.h.in (ATTRIBUTE_NORETURN): Remove. + +2019-08-24 Colin Watson <cjwatson@debian.org> + + Update to Gnulib 20190821 + +2019-08-23 Colin Watson <cjwatson@debian.org> + + Pass database file name in function parameters + + Storing it in a global variable with an unresolved symbol from libmandb + was never very clean, and caused linking complications on some + platforms. + + Fixes Savannah bug #56734. + + * libdb/mydbm.h (database): Remove external symbol. + * src/accessdb.c: Remove obsolete comment. + * src/catman.c (database): Remove global variable. + (parse_for_sec): Add database parameter. Update all callers. + (main): Declare database locally. + * src/check_mandirs.c (gripe_rwopen_failed, testmandirs, update_db_time, + create_db, update_db, purge_missing): Add database parameter. Update + all callers. + * src/check_mandirs.h (create_db, update_db, purge_missing): Update + prototypes. + * src/mandb.c (database): Remove global variable. + (update_one_file, update_db_wrapper): Add database parameter. Update + all callers. + (mandb, process_manpath): Declare database locally. + * src/straycats.c (straycats): Add database parameter. Update all + callers. + * src/whatis.c (database): Remove global variable. + (search): Declare database locally. + * include/manconfig.h.in (straycats): Update prototype. + * NEWS: Document this. + +2019-08-23 Colin Watson <cjwatson@debian.org> + + Use MYDBM_FILE->name for error messages + + We previously used the global "database" variable, but we were either + also passing a MYDBM_FILE around already or could easily do so, and it's + cleaner to get the file name from there now that it's consistently + available on all backends. + + * libdb/db_lookup.c (gripe_corrupt_data): Add dbf parameter. Get file + name from dbf->name rather than from the global database variable. + Update all callers. + (gripe_replace_key, split_data, split_content): Add dbf parameter. + Update all callers. + (dblookup_pattern): Get file name from dbf->name rather than from the + global database variable. + * libdb/db_ver.c (dbver_rd, dbver_wr): Get file name from dbfile->name + rather than from the global database variable. + * libdb/db_storage.h (split_content, gripe_corrupt_data, + gripe_replace_key): Update prototypes. + * src/check_mandirs.c (sanity_check_db): Get file name from dbf->name + rather than from the global database variable. + * src/whatis.c (do_apropos): Likewise. + +2019-08-23 Colin Watson <cjwatson@debian.org> + + Store database file name alongside its handle + + The GDBM backend already did things this way, but it's convenient to do + it the same way for all backends. + + Rename libmandb's various backend-specific functions to be uniformly + man_<backend>_<operation>. In the cases of btree and ndbm there was + already no clash with the libraries they depend on, but this makes them + match the gdbm backend. + + * libdb/db_btree.c (btree_close): Rename to ... + (man_btree_close): ... this. + (btree_flopen): Rename to ... + (man_btree_open): ... this. Wrap the returned file handle in a + man_btree_wrapper structure that remembers the file name. + (btree_replace): Rename to ... + (man_btree_replace): ... this. + (btree_insert): Rename to ... + (man_btree_insert): ... this. + (btree_fetch): Rename to ... + (man_btree_fetch): ... this. + (btree_exists): Rename to ... + (man_btree_exists): ... this. + (btree_findkey): Rename to ... + (man_btree_findkey): ... this. + (btree_firstkey): Rename to ... + (man_btree_firstkey): ... this. + (btree_nextkey): Rename to ... + (man_btree_nextkey): ... this. + (btree_nextkeydata): Rename to ... + (man_btree_nextkeydata): ... this. + (btree_get_time): Rename to ... + (man_btree_get_time): ... this. + (btree_set_time): Rename to ... + (man_btree_set_time): ... this. + Update all prototypes and callers for all renames. + (man_btree_close, man_btree_replace, man_btree_insert, man_btree_fetch, + man_btree_exists, man_btree_findkey, man_btree_firstkey, + man_btree_nextkey, man_btree_nextkeydata, man_btree_get_time, + man_btree_set_time): Take man_btree_wrapper parameter rather than DB *. + Update all callers. + + * libdb/db_ndbm.c (ndbm_flclose): Rename to ... + (man_ndbm_close): ... this. + (ndbm_flopen): Rename to ... + (man_ndbm_open): ... this. Copy the given file name before passing it + to dbm_open, since at least GDBM's compatibility implementation declares + that parameter as non-const. Wrap the returned file handle in a + man_ndbm_wrapper structure that remembers the file name. + (ndbm_get_time): Rename to ... + (man_ndbm_get_time): ... this. + (ndbm_set_time): Rename to ... + (man_ndbm_set_time): ... this. + Update all prototypes and callers for all renames. + (man_ndbm_close, man_ndbm_get_time, man_ndbm_set_time): Take + man_ndbm_wrapper parameter rather than DBM *. Update all callers. + + * libdb/mydbm.h (man_ndbm_wrapper): New structure. + (MYDBM_FILE) [NDBM]: Change to man_ndbm_wrapper. + (man_btree_wrapper): New structure. + (MYDBM_FILE) [BTREE]: Change to man_btree_wrapper. + + * libdb/db_lookup.c (gripe_lock): Constify filename parameter. + * libdb/db_storage.h (gripe_lock): Update prototype. + +2019-08-23 Colin Watson <cjwatson@debian.org> + + Recognise eo/ta/uk translations of the NAME section + + (Esperanto, Tamil, and Ukrainian.) + + * src/lexgrog.l (eo_name, ta_name, uk_name): Add. + * NEWS: Document this. + +2019-08-23 Colin Watson <cjwatson@debian.org> + + Remove unused sandbox variables + + We no longer need these, having moved decompression code out of libman. + + * src/accessdb.c, src/catman.c, src/globbing_test.c, src/manpath.c: + Remove "sandbox" global variables. + +2019-08-22 Colin Watson <cjwatson@debian.org> + + Remove unused linkage from whatis + + * src/Makefile.am (whatis_SOURCES): Remove manconv.c and manconv.h. + +2019-08-22 Colin Watson <cjwatson@debian.org> + + Move decompression code out of libman + + Fixes Savannah bug #56734. + + * configure.ac: Remove incorrect Darwin workaround. + * lib/decompress.c: Move to ... + * src/decompress.c: ... here. + * lib/decompress.h: Move to ... + * src/decompress.h: ... here. + * lib/Makefile.am (libman_la_SOURCES): Remove decompress.c and + decompress.h. + (libman_la_LIBADD): Remove $(LIBCOMPRESS). + * lib/README: Remove decompress.*. + * lib/encodings.c: Remove unused #include "decompress.h". + * src/Makefile.am (lexgrog_LDADD, man_LDADD, manconv_LDADD, mandb_LDADD, + zsoelim_LDADD): Add $(LIBCOMPRESS). + (lexgrog_SOURCES, man_SOURCES, manconv_SOURCES, mandb_SOURCES, + zsoelim_SOURCES): Add decompress.c and decompress.h. + * NEWS: Document this. + +2019-08-22 Colin Watson <cjwatson@debian.org> + + Squash warning in order_files stub + + * lib/orderfiles.c [!HAVE_LINUX_FIEMAP_H && !HAVE_POSIX_FADVISE]: Mark + dir and basenamesp arguments as unused. + +2019-08-22 Colin Watson <cjwatson@debian.org> + + Don't save cat pages if --nh/--nj is used + + Fixes Savannah bug #55731. + + * src/man.c (display): Disable cat pages if --no-hyphenation or + --no-justification is used, in effect defining those not to be part of + the canonical state. + * NEWS: Document this. + +2019-08-21 Colin Watson <cjwatson@debian.org> + + sandbox: Allow getrandom, used by Hardened Malloc + + Fixes Savannah bug #56767. + + * lib/sandbox.c (make_seccomp_filter): Allow getrandom. + * NEWS: Document this. + +2019-08-21 Colin Watson <cjwatson@debian.org> + + NEWS: Document EPERM change + + * NEWS: Document change from raising SIGSYS to returning EPERM. + +2019-08-21 Colin Watson <cjwatson@debian.org> + + sandbox: Reorganise using @system-service set + + systemd defines a @system-service set now which covers some of the ones + that were previously isolated here, so reorganise to take account of + that. No functional change. + + * lib/sandbox.c (make_seccomp_filter): Reorganise using systemd's new + @system-service set. + +2019-08-21 Colin Watson <cjwatson@debian.org> + + sandbox: Set default action to EPERM, not TRAP + + Returning EPERM rather than raising SIGSYS is no less secure, and it's + more likely that code injected via LD_PRELOAD will be able to recover + from this somehow. + + * lib/sandbox.c (make_seccomp_filter): Set default action to + SCMP_ACT_ERRNO (EPERM), not SCMP_ACT_TRAP. + +2019-08-14 Colin Watson <cjwatson@debian.org> + + sandbox: Allow sendmsg in the ESET case + + * lib/sandbox.c (make_seccomp_filter): If libesets_pac.so is preloaded, + then allow sendmsg. + * NEWS: Document this. + +2019-08-05 Colin Watson <cjwatson@debian.org> + + * Version: 2.8.6.1. + +2019-08-04 Colin Watson <cjwatson@debian.org> + + Fix missing memory copies in ult_src + + Fixes Debian bug #933802. + + * src/ult_src.c (ult_src): Copy strings before adding them to trace. + +2019-08-03 Colin Watson <cjwatson@debian.org> + + * Version: 2.8.6. + +2019-08-03 Colin Watson <cjwatson@debian.org> + + Update syscall lists from systemd bca5a0eacc + + * lib/sandbox.c (make_seccomp_filter): Add rseq (see + https://github.com/systemd/systemd/issues/12127). + +2019-05-02 Colin Watson <cjwatson@debian.org> + + Improve manual build portability slightly + + * manual/Makefile.am ($(MANUAL).pp, .pp.dvi, .pp.ps, .pp.tdvi, + .tdvi.tps, .pp.cat, .pp.html): Use "mv -f" rather than just "mv", since + Automake seems to prefer that for its own rules. + +2019-05-02 Colin Watson <cjwatson@debian.org> + + Make manual build more robust against failures + + Fixes Savannah bug #56254. + + * manual/Makefile.am ($(MANUAL).pp, .pp.dvi, .pp.ps, .pp.tdvi, + .tdvi.tps, .pp.cat, .pp.html): Write output to *.new files and rename + into place, so that failures are properly retried in future runs. + +2019-03-03 Colin Watson <cjwatson@debian.org> + + Avoid configure error message if nroff is broken + + * m4/man-gnu-nroff.m4 (MAN_PROG_GNU_NROFF): Adjust test arguments + slightly to avoid a spurious error message if nroff is sufficiently + broken that it doesn't produce numeric output for "\n(.g". + +2019-03-03 Colin Watson <cjwatson@debian.org> + + Fix warnings when configuring --without-libseccomp + + * lib/sandbox.c (_sandbox_load): Mark sandbox and permissive parameters + unused when HAVE_LIBSECCOMP is undefined, to avoid warnings from "gcc + -Wunused-parameter". + +2019-03-03 Colin Watson <cjwatson@debian.org> + + Add configure option to disable building manual + + * m4/man-arg-manual.m4: New file. + * configure.ac: Add MAN_ARG_MANUAL. + * manual/Makefile.am: Perform most rules only if BUILD_MANUAL is true. + * manual/intro.me (Arguments to configure): Add --disable-manual. + * README (Non-generic arguments to configure): Update. + * NEWS: Document this. + +2019-03-03 Colin Watson <cjwatson@debian.org> + + * NEWS: Document container type changes. + +2019-02-05 Colin Watson <cjwatson@debian.org> + + Add some missing entries to lib/README + + * lib/README: Add glcontainers.*, orderfiles.*, and sandbox.*. + +2019-02-05 Colin Watson <cjwatson@debian.org> + + Remove pipeline.* from lib/README + + It's been a separate library since 2010. + + * lib/README: Remove pipeline.*. + +2019-02-05 Colin Watson <cjwatson@debian.org> + + Inline lower into name_to_key + + With only one remaining user, it wasn't pulling its weight. + + * libdb/db_lookup.c (name_to_key): Inline the implementation of lower. + * lib/Makefile.am (libman_la_SOURCES): Remove lower.c and lower.h. + * lib/README: Remove lower.*. + * lib/lower.c, lib/lower.h: Remove. + +2019-02-05 Colin Watson <cjwatson@debian.org> + + Simplify case-insensitivity in word_fnmatch + + Using FNM_CASEFOLD saves us from having to lower-case the pattern + manually, and it also fixes the behaviour of "apropos -w" when given a + non-lower-case pattern. + + * lib/wordfnmatch.c (word_fnmatch): Use isalpha and FNM_CASEFOLD rather + than manually lower-casing string or expecting pattern to have already + been lower-cased. + * NEWS: Document this. + +2019-02-05 Colin Watson <cjwatson@debian.org> + + Simplify case-insensitive comparisons in whatis + + We can just use strcasecmp and similar functions rather than + lower-casing comparands manually. + + In some corner cases this may result in matches that would not + previously have been returned (e.g. "whatis -w" with a non-lower-case + pattern). + + * src/whatis.c (parse_name): Use strcasecmp and FNM_CASEFOLD rather than + manually lower-casing dbname or expecting pages to have already been + lower-cased. + (match): Use strcasestr and isalpha rather than manually lower-casing + whatis or expecting page to have already been lower-cased. + (parse_whatis): Remove lowpages parameter; pass pages directly to match + instead. + (do_apropos): Remove lowpages; parse_name and parse_whatis no longer + need it. + +2019-02-04 Colin Watson <cjwatson@debian.org> + + Import Gnulib's strcase module + + We're already using strcasecmp and strncasecmp. + + * bootstrap.conf (gnulib_modules): Add strcase. + +2019-02-04 Colin Watson <cjwatson@debian.org> + + Add missing #include + + * src/straycats.c: Include <stdbool.h>. + +2019-02-04 Colin Watson <cjwatson@debian.org> + + Use bool for boolean command-line options + + * include/manconfig.h.in (debug_level): Change type to bool. Update all + definitions and users. + * lib/encodings.c (get_roff_encoding): Change type of "found" to bool. + * libdb/db_lookup.c (dblookup_all, dblookup_exact): Change "match_case" + parameter type to bool. Update all callers. + (dblookup_pattern): Change "match_case", "pattern_regex", and + "try_descriptions" parameter types to bool. Update all callers. + * libdb/db_storage.h (dblookup_all, dblookup_exact, dblookup_pattern): + Update prototypes. + + * src/descriptions_store.c (store_descriptions): Change types of + "found_real_page" and "found_external" to bool. + * src/lexgrog_test.c (main): Change types of "some_failed" and "found" + to bool. + * src/man.c (parse_opt): Change types of "apropos" and "whatis" to bool. + (add_roff_line_length): Change "save_cat_p" parameter type to bool *. + Update all callers. + (make_browser): Change "found_percent_s" type to bool. + (display): Change "display_to_stdout" type to bool. + (try_db): Change "found_stale" type to bool. + (local_man_loop): Change "local_mf" type to bool. + (main): Change "found_subpage" type to bool. + * src/manp.c (read_config_file): Change "optional" parameter type to + bool. Update all callers. + * src/manp.h (read_config_file): Update prototype. + + * src/check_mandirs.c (opt_test, force_rescan): Change types to bool. + Update all users. + * src/globbing_test.c (match_case, regex_opt, wildcard): Likewise. + * src/lexgrog_test.c (parse_man, parse_cat, show_whatis, show_filters): + Likewise. + * src/man.c (disable_cache, troff, global_apropos, print_where, + print_where_cat, catman, local_man_file, findall, update, match_case, + regex_opt, wildcard, names_only, no_hyphenation, no_justification, + subpages, ascii, save_cat, ditroff, htmlout): Likewise. + * src/mandb.c (opt_test, force_rescan, check_for_strays, purge, user, + create): Likewise. + * src/manp.c (disable_cache): Likewise. + * src/manpath.c (cat, global): Likewise. + * src/whatis.c (am_apropos, regex_opt, exact, wildcard, require_all, + long_output): Likewise. + +2019-02-04 Colin Watson <cjwatson@debian.org> + + Port roff_warnings to gl_list + + * src/man.c (struct string_llist): Remove. + (parse_opt, make_roff_command): Convert roff_warnings to gl_list. + (main): Initialise roff_warnings. + +2019-02-04 Colin Watson <cjwatson@debian.org> + + Port parse_descriptions to gl_list + + * src/descriptions.c (free_descriptions): Rename to ... + (page_description_free): ... this. Adjust for gl_list's expected + interface. + (parse_descriptions): Convert to gl_list. Return a zero-length list if + whatis is NULL, where previously we returned NULL. + * src/descriptions_store.c (store_descriptions): Convert descs to + gl_list. + * src/descriptions.h (struct page_description): Remove next member. + (parse_descriptions, store_descriptions): Update prototypes. + (free_descriptions): Remove prototype. + * src/lexgrog_test.c (main): Convert descs to gl_list. + * src/straycats.c (check_for_stray): Likewise. Remove conditional, + since parse_descriptions now never returns NULL. + +2019-02-04 Colin Watson <cjwatson@debian.org> + + Improve sandbox_free + + * lib/sandbox.c (sandbox_free): Free sandbox->permissive_ctx too. + +2019-02-04 Colin Watson <cjwatson@debian.org> + + Free seccomp sandbox before normal exit + + This makes valgrind slightly happier. + + * src/lexgrog_test.c (main): Call seccomp_free before exiting. + * src/man.c (main): Likewise. + * src/manconv_main.c (main): Likewise. + * src/mandb.c (main): Likewise. + * src/whatis.c (main): Likewise. + * src/zsoelim_main.c (main): Likewise. + +2019-02-04 Colin Watson <cjwatson@debian.org> + + Port dblookup to gl_list + + * libdb/db_lookup.c (free_mandata_struct): Only free a single structure, + rather than following list pointers. + (split_content): Stop initialising pinfo->next. + (dblookup, dblookup_pattern): Convert to gl_list. Return a zero-length + list to indicate no matches, where previously we returned NULL. + (dblookup_exact): Adjust for changes in dblookup. This function + continues to return a single element rather than a list, since that's + all that its callers need. + * libdb/db_storage.h (struct mandata): Remove next member. + (dblookup_all, dblookup_pattern): Update prototypes. + * src/man.c (db_map_value_free): New function. + (try_db): Convert dblookup_pattern/dblookup_all cache to store gl_lists + or NULL. NULL now means a database open failure and a zero-length list + means no matches in an existing database, rather than vice versa. + * src/whatis.c (do_whatis_section): Convert to gl_list. + +2019-02-03 Colin Watson <cjwatson@debian.org> + + Eliminate #ifdef in straycats.c + + * src/straycats.c (check_for_stray): Replace hand-rolled + FAVOUR_STRAYCATS conditional with an equivalent compare_ids call. + +2019-02-03 Colin Watson <cjwatson@debian.org> + + Add helper functions for common container cases + + * lib/glcontainers.c (new_string_list, new_string_map, new_string_set): + New functions. + * lib/glcontainers.h (new_string_list, new_string_map, new_string_set): + Add prototypes. + + * lib/orderfiles.c (order_files): Use new_string_list. + * src/check_mandirs.c (test_manfile, add_dir_entries): Likewise. + * src/globbing.c (look_for_file, expand_path): Likewise. + * src/man.c (get_section_list): Likewise. + * src/manp.c (get_scetions, get_manpath_from_path, create_pathlist): + Likewise. + * src/straycats.c (check_for_stray): Likewise. + + * libdb/db_gdbm.c (man_gdbm_firstkey): Use new_string_map. + * src/check_mandirs.c (test_manfile): Likewise. + * src/globbing.c (update_directory_cache): Likewise. + * src/man.c (try_db): Likewise. + * src/mandb.c (main): Likewise. + + * libdb/db_btree.c (btree_findkey): Use new_string_set. + * src/whatis.c (main): Likewise. + +2019-02-03 Colin Watson <cjwatson@debian.org> + + Replace hashtable with Gnulib containers + + Since we're using Gnulib's container types anyway, we might as well + reduce the maintenance burden of local code, especially since the result + tends to be more concise. + + * bootstrap.conf (gnulib_modules): Add hash-map, hash-set, xmap, and + xset. + * lib/glcontainers.h (GL_MAP_FOREACH_START, GL_MAP_FOREACH_END): New + macros. + + * lib/orderfiles.c (compare_physical_offsets, order_files): Convert + physical_offsets from a hashtable to a gl_map. + * libdb/db_btree.c (loop_check_hash): Rename to ... + (loop_check): ... this. + (btree_findkey): Convert loop_check from a hashtable to a gl_set. + * libdb/db_gdbm.c (parent_sortkey_hash): Rename to ... + (parent_keys: ... this. + (struct sortkey, parent_sortkey_hashtable_free): Remove. + (sortkey_hashtable_free): Rename to ... + (datum_free): ... this. Adjust for gl_list's expected interface. + (sortkey_compare): Rename to ... + (datum_compare): ... this. Adjust for gl_list's expected interface. + (datum_equals, datum_hash): New functions. + (man_gdbm_firstkey, man_gdbm_nextkey, man_gdbm_close): Convert + parent_keys from a hashtable to a gl_map, and convert its values from + hashtables with manual linking to gl_lists using a hash for fast lookup + by key. + * src/check_mandirs.c (whatis_hash): Rename to ... + (whatis_map): ... this. + (struct whatis_hashent): Rename to ... + (struct whatis): ... this. + (whatis_hashtable_free): Rename to ... + (whatis_free): ... this. Adjust for gl_map's expected interface. + (test_manfile): Convert whatis_map from a hashtable to a gl_map. + * src/globbing.c (struct dirent_hashent): Rename to ... + (struct dirent_names): ... this. + (dirent_hashtable_free): Rename to ... + (dirent_names_free): ... this. Adjust for gl_map's expected interface. + (dirent_hash): Rename to ... + (dirent_map): ... this. + (update_directory_cache): Convert dirent_map from a hashtable to a + gl_map. + * src/man.c (db_hash): Rename to ... + (db_map): ... this. + (db_hashtable_free): Remove. + (try_db, main): Convert db_map from a hashtable to a gl_map. + * src/mandb.c (process_manpath, tried_catdirs_free, purge_catdir, + purge_catdirs, main): Convert tried_catdirs from a hashtable to a + gl_map. + * src/whatis.c (display, main): Convert display_seen from a hashtable to + a gl_set. + + * lib/Makefile.am (libman_la_SOURCES): Remove hashtable.c and + hashtable.h. + * lib/README: Remove hashtable.*. + * lib/hashtable.c, lib/hashtable.h: Remove. + +2019-02-01 Colin Watson <cjwatson@debian.org> + + Port list_extensions to gl_list + + * libdb/db_lookup.c (name_ext_equals): New function. + (list_extensions, dblookup): Convert to gl_list. + * libdb/db_storage.h (struct name_ext): New structure. + (list_extensions): Update prototype. + * libdb/db_delete.c (dbdelete): Convert to gl_list. + +2019-01-31 Colin Watson <cjwatson@debian.org> + + Port ult_src tracing to gl_list + + * src/ult_src.c (ult_trace, free_ult_trace): Remove. + (ult_src): Convert trace handling to gl_list. + * src/ult_src.h (struct ult_trace): Remove. + (ult_src): Update prototype. + (free_ult_trace): Remove. + * src/descriptions_store.c (store_descriptions): Convert to gl_list. + * src/descriptions.h (store_descriptions): Update prototype. + * src/check_mandirs.c (struct whatis_hashent): Change type of trace to + gl_list_t. + (whatis_hashtable_free, test_manfile): Convert to gl_list. + +2019-01-30 Colin Watson <cjwatson@debian.org> + + Use bool in more places in whatis + + * src/whatis.c (use_grep, do_whatis, do_apropos): Change "found" + parameter type to bool *. Update all callers. + (any_set, all_set): Change "found_here" parameter type to bool *. + Update all callers. + (parse_name, parse_whatis): Change "found" and "found_here" parameter + types to bool *. Update all callers. + +2019-01-30 Colin Watson <cjwatson@debian.org> + + Port get_sections to gl_list + + * src/manp.c (get_sections): Convert to gl_list. + * src/manp.h (get_sections): Update prototype. + * src/man.c (is_section, compare_candidates, do_global_apropos, man, + get_section_list): Convert to gl_list. + (compare_candidates): Sort sections missing from section_list to the + end. + (main): Free section_list. + +2019-01-30 Colin Watson <cjwatson@debian.org> + + Use HTTPS URL for libpipeline + + * NEWS, docs/INSTALL.quick: Update libpipeline URL to + https://nongnu.org/libpipeline/. + +2019-01-29 Colin Watson <cjwatson@debian.org> + + Port expand_path to gl_list + + * src/globbing.c (expand_path): Convert to gl_list. + * src/globbing.h (expand_path): Update prototype. + * src/manp.c (def_path, add_dir_to_list, add_dir_to_path_list): Convert + to gl_list. + * src/ult_src.c (find_include): Likewise. + +2019-01-29 Colin Watson <cjwatson@debian.org> + + Fix failure to link libman using the Darwin linker + + Thanks to George Plymale II and John Gardner. + + * configure.ac: Add "-Wl,-flat_namespace,-undefined,suppress" to CFLAGS + on Darwin. + * NEWS: Document this. + +2019-01-29 Colin Watson <cjwatson@debian.org> + + Port order_files and look_for_file to gl_list + + This gets rid of some particularly awful allocation spaghetti in + src/globbing.c. + + * bootstrap.conf (gnulib_modules): Add rbtree-list. + * lib/orderfiles.c (compare_physical_offsets): Expect arguments to be + const char * rather than const char **. + (order_files): Convert to taking a gl_list_t as an input/output argument + rather than an array. In the HAVE_LINUX_FIEMAP_H case, we produce a new + sorted list. + * lib/orderfiles.h (order_files): Update prototype. + * src/globbing.c (clear_glob): Remove. + (match_in_directory): Convert to gl_list. Remove inter-call allocation + and cleanup machinery. + (look_for_file): Convert to gl_list. Remove glob_t cleanup machinery; + the caller is now responsible for freeing the returned list. + * src/globbing.h (look_for_file): Update prototype. + + * src/check_mandirs.c (add_dir_entries, count_glob_matches, + purge_normal): Convert to gl_list. + * src/straycats.c (check_for_stray): Likewise. + + * src/check_mandirs.c (purge_whatis, purge_missing): Convert to gl_list. + Free list returned by look_for_file. + * src/globbing_test.c (main): Likewise. + * src/man.c (try_section, do_global_apropos_section): Likewise. + * src/zsoelim.l (zsoelim_open_file): Likewise. + +2019-01-29 Colin Watson <cjwatson@debian.org> + + Default to --without-systemd* on non-Linux systems + + systemd is unapologetically Linux-specific, so let's not require + non-Linux packages to explicitly turn this off. + + * m4/man-arg-systemdsystemunitdir (MAN_ARG_SYSTEMDSYSTEMUNITDIR): + Default to with_systemdsystemunitdir=no on non-Linux systems. + * m4/man-arg-systemdtmpfilesdir (MAN_ARG_SYSTEMDTMPFILESDIR): Default to + with_systemdtmpfilesdir=no on non-Linux systems. + +2019-01-27 Colin Watson <cjwatson@debian.org> + + Add --quiet to systemd mandb invocation + + Fixes Debian bug #920628. + + * init/systemd/man-db.service.in (ExecStart): Run mandb with --quiet. + * NEWS: Document this. + +2019-01-27 Colin Watson <cjwatson@debian.org> + + Use macros for common cases of list iteration + + * lib/glcontainers.h (GL_LIST_FOREACH_START, GL_LIST_FOREACH_END): New + macros. + * src/catman.c (main): Replace manual list iteration with equivalent + macros. + * src/man.c (do_global_apropos, locate_page_in_manpath): Likewise. + * src/mandb.c (main): Likewise. + * src/manp.c (get_config, print_list, get_sections, def_path, + get_manpath_from_path, create_pathlist, get_mandb_manpath, get_catpath, + is_global_mandir): Likewise. + * src/whatis.c (search): Likewise. + * src/zsoelim.l (zsoelim_open_file): Likewise. + +2019-01-27 Colin Watson <cjwatson@debian.org> + + Rename gl-container-helpers to glcontainers + + This is less annoying to type. + + * lib/gl-container-helpers.c: Rename to ... + * lib/glcontainers.c: ... this. + * lib/gl-container-helpers.h: Rename to ... + * lib/glcontainers.h: ... this. + * lib/Makefile.am (libman_la_SOURCES): Replace gl-container-helpers.c + and gl-container-helpers.h with glcontainers.c and glcontainers.h. + * src/manp.c: Update include. + +2019-01-27 Colin Watson <cjwatson@debian.org> + + Move Gnulib container helpers into common code + + * src/manp.c (string_equals, string_hash, string_free): Move to ... + * lib/gl-container-helpers.c (string_equals, string_hash, plain_free): + ... here (new file). + * lib/gl-container-helpers.h: New file. + * lib/Makefile.am (libman_la_SOURCES): Add gl-container-helpers.c and + gl-container-helpers.h. + +2019-01-26 Colin Watson <cjwatson@debian.org> + + Turn config flags into an enum + + * src/manp.c (enum config_flag): New enumeration. + (struct config_item, def_path, add_config, get_config, get_sections, + def_path): Use enum config_flag. + (describe_flag): New function. + (print_list): Describe flags rather than printing their integer value. + (add_def): Remove flag parameter; expect caller to pass the correct + config_def value instead. Make thing and config_def const. + (add_mandb_map): Remove flag parameter; expect caller to pass the + correct catdir value instead. + (add_to_dirlist): Update calls to add_mandb_map and add_def. + +2019-01-26 Colin Watson <cjwatson@debian.org> + + Port internal configuration storage to gl_list + + * bootstrap.conf (gnulib_modules): Add array-list. + * src/manp.c (struct list): Remove. + (struct config_item): New structure. + (config_item_free): New function. + (add_to_list): Rename to ... + (add_config): ... this. Convert to gl_list. Update all callers. + (get_from_list): Rename to ... + (get_config): ... this. Convert to gl_list. Update all callers. + (iterate_over_list): Remove. + (print_list, get_sections, free_config_file, def_path, + get_manpath_from_path, get_mandb_manpath, get_catpath, + is_global_mandir): Port config list handling to gl_list. + (add_to_dirlist): Rename config parameter to config_file. + (read_config_file): Create empty config list. Rename previous local + config variable to config_file. + +2019-01-26 Colin Watson <cjwatson@debian.org> + + Use Gnulib's lchown function + + Also remove lib/xchown.*; with only one call site, they don't pull their + weight over equivalent inline code. + + * bootstrap.conf (gnulib_modules): Add lchown. + * configure.ac (AC_CHECK_FUNCS): Remove check for lchown. + * lib/Makefile.am (libman_la_SOURCES): Remove xchown.c and xchown.h. + * src/check_mandirs.c (chown_if_possible): Always use lchown rather than + chown, and inline the error check. + + * po/POTFILES.in: Remove lib/xchown.c. + * po/man-db.pot, po/*.po: Update. + +2019-01-26 Colin Watson <cjwatson@debian.org> + + Simplify includes using Gnulib's fcntl module + + * bootstrap.conf (gnulib_modules): Add fcntl. + * configure.ac (AC_CHECK_HEADERS): Remove check for fcntl.h. + * libdb/db_btree.c, libdb/db_ndbm.c, libdb/mydbm.h, src/man.c: Include + <fcntl.h> unconditionally. + * src/man.c: Remove conditional definitions of R_OK and X_OK; Gnulib's + <unistd.h> handles these. + +2019-01-26 Colin Watson <cjwatson@debian.org> + + Replace check_standard_fds with Gnulib's xstdopen + + * bootstrap.conf (gnulib_modules): Add xstdopen. + * src/man.c (check_standard_fds): Remove. + (main): Call xstdopen rather than check_standard_fds. + +2019-01-26 Colin Watson <cjwatson@debian.org> + + Update to Gnulib 20190124 + +2019-01-26 Colin Watson <cjwatson@debian.org> + + Use bool type where appropriate + + Now that we're using <stdbool.h> anyway due to gl_list (with Gnulib + providing <stdbool.h> if necessary), it makes sense to use it for our + own functions that have essentially boolean semantics. + + * lib/encodings.c (compatible_encodings, is_roff_device): Return bool. + * lib/pathsearch.c (pathsearch, pathsearch_executable, + directory_on_path): Likewise. + * lib/sandbox.c (search_ld_preload, can_load_seccomp): Likewise. + * lib/security.c (running_setuid): Likewise. + * lib/wordfnmatch.c (word_fnmatch): Likewise. Update all callers. + * src/check_mandirs.c (sanity_check_db): Likewise. + * src/man.c (duplicate_candidates): Likewise. + * src/manp.c (is_global_mandir): Likewise. Update all callers. + * src/whatis.c (suitable_manpath, match): Likewise. + (any_set, all_set): Likewise. Update all callers. + + * lib/encodings.h (is_roff_device): Update prototype. + * lib/pathsearch.h (pathsearch_executable, directory_on_path): Likewise. + * lib/security.h (running_setuid): Likewise. + * lib/wordfnmatch.h (word_fnmatch): Likewise. + * src/manp.h (is_global_mandir): Likewise. + + * src/mandb.c (mandb, process_manpath): Change global_manpath parameter + type to bool. + +2019-01-26 Colin Watson <cjwatson@debian.org> + + Note that some C99 runtime facilities may be used + + * docs/HACKING (Facilities and portability): Note that C99 runtime + facilities that are provided by Gnulib are OK. + +2019-01-26 Colin Watson <cjwatson@debian.org> + + Remove arbitrary limit on manpath size + + Fixes Savannah bug #50324. + + * bootstrap.conf (gnulib_modules): Add hash-pjw-bare, linkedhash-list, + stdbool, and xlist. + * include/manconfig.h.in (MAXDIRS): Remove. + + * src/manp.c (tmplist): Remove. + (string_equals, string_hash, string_free): New functions. + (gripe_overlong_list): Remove. + (insert_override_dir, get_manpath_from_path, add_expanded_dir_to_list, + add_dir_to_list, add_man_subdirs, add_dir_to_path_list, create_pathlist, + free_pathlist): Port manpath list handling to gl_list_t. + * src/catman.c (main): Likewise. + * src/man.c (do_global_apropos, local_man_loop, locate_page_in_manpath, + main): Likewise. + * src/mandb.c (main): Likewise. + * src/whatis.c (suitable_manpath, search, main): Likewise. + * src/zsoelim.l (<<EOF>>, zsoelim_parse_file, zsoelim_open_file, + zsoelim_stdin, zsoelim_stdin_data_new): Likewise. + * src/zsoelim_main.c (main): Likewise. + + * src/manp.h (create_pathlist, free_pathlist): Update prototypes. + * src/zsoelim.h (zsoelim_open_file, zsoelim_parse_file, + zsoelim_stdin_data_new): Likewise. + + * NEWS: Document this. + +2019-01-26 Colin Watson <cjwatson@debian.org> + + * NEWS: Document previous commit. + +2019-01-26 Colin Watson <cjwatson@debian.org> + + Automatically add more man directories to manpath + + Will Starms reported that, if both ../man and ../share/man directories + (for example) exist relative to a directory on $PATH, then only the + first was considered. + + * src/manp.c (has_mandir): Rename to ... + (add_man_subdirs): ... this. Insert directories as they are found + rather than returning them, and continue even if some have been found. + (get_manpath_from_path): Update call to add_man_subdirs. + +2019-01-08 Colin Watson <cjwatson@debian.org> + + Recommend a distribution-independent bug tracker + + * README: Link to https://savannah.nongnu.org/bugs/?group=man-db for bug + reporting. + +2019-01-05 Colin Watson <cjwatson@debian.org> + + * Version: 2.8.5. + +2019-01-05 Colin Watson <cjwatson@debian.org> + + Upgrade to Gnulib 20190105 + + In line with Gnulib, we now require Autoconf 2.63 and Automake 1.11.2. + + * bootstrap: Sync to Gnulib d271f868a8df9bbec29049d01e056481b7a1a263. + * bootstrap.conf (GNULIB_REVISION): Set to + d271f868a8df9bbec29049d01e056481b7a1a263. + (buildreq): Bump required autoconf version to 2.63 and required automake + version to 1.11.2. + * configure.ac (AM_SILENT_RULES, AM_PROG_AR): Remove conditionals, which + were there for Automake 1.10 support. + (AC_PREREQ): Bump to 2.63. + * NEWS: Document this. + +2019-01-05 Colin Watson <cjwatson@debian.org> + + Use tar --sort=name if available + + * m4/man-tar-sort-name.m4: New file. + * configure.ac: Call MAN_TAR_SORT_NAME. + +2019-01-05 Colin Watson <cjwatson@debian.org> + + Fix distcheck following addition of systemd timer + + * Makefile.am (AM_DISTCHECK_CONFIGURE_FLAGS): Add + --with-systemdsystemunitdir=\$${prefix}/lib/systemd/system. + +2019-01-05 Colin Watson <cjwatson@debian.org> + + Fix distribution of man-db.timer + + Automake's "_DATA" primary defaults to "nodist_", not "dist_". + + * init/systemd/Makefile.am (systemdsystemunit_DATA): Rename to ... + (dist_systemdsystemunit_DATA): ... this. + (nodist_systemdsystemunit_DATA): Rename to ... + (systemdsystemunit_DATA): ... this. + (EXTRA_DIST): Add man-db.timer if INSTALL_SYSTEMD_TIMER is false. + +2019-01-05 Colin Watson <cjwatson@debian.org> + + sandbox: Work around Microsoft SCEP + + This is a proprietary antivirus program and I've only been able to guess + at how to handle it. Note that it is no longer supported by Microsoft + and so users should probably replace it with something else, but I still + want to minimise the number of support requests I get related to it. + + * lib/sandbox.c (make_seccomp_filter): If libscep_pac.so is preloaded, + then allow some system calls related to sockets and System V message + queues. + * NEWS: Document this. + +2018-12-24 Colin Watson <cjwatson@debian.org> + + Use (void *) 0 as a variadic sentinel + + NULL is formally incorrect here since the standard allows it to be an + integer constant expression. + + * lib/decompress.c (decompress_open, decompress_fdopen): Use (void *) + rather than NULL as a sentinel for variadic functions. + * libdb/db_delete.c (dbdelete): Likewise. + * src/catman.c (catman, parse_for_sec, main): Likewise. + * src/check_mandirs.c (add_dir_entries): Likewise. + * src/compression.c (comp_file): Likewise. + * src/filenames.c (make_filename): Likewise. + * src/globbing.c (look_for_file): Likewise. + * src/lexgrog.l (find_name): Likewise. + * src/man.c (do_extern, run_mandb, make_roff_command, make_browser, + setenv_less, add_output_iconv, make_display_command, tmp_cat_filename, + format_display_and_save, format_display, display_catman, display, + local_man_loop): Likewise. + * src/manconv_client.c (add_manconv): Likewise. + * src/manconv_main.c (parse_opt): Likewise. + * src/manp.c (pathappend, add_nls_manpaths, add_system_manpath, + add_dir_to_path_list, get_catpath): Likewise. + * src/straycats.c (check_for_stray, open_catdir, straycats): Likewise. + * src/whatis.c (use_grep, display): Likewise. + +2018-12-06 Colin Watson <cjwatson@debian.org> + + Honour --enable-cache-owner in systemd timer + + * init/systemd/Makefile.am (man-db.service): Substitute + @cache_top_owner@. + * init/systemd/man-db.service.in (ExecStart, User): Use + @cache_top_owner@ rather than hardcoding "man". + +2018-12-06 Colin Watson <cjwatson@debian.org> + + Improve systemd unit commentary + + * init/systemd/man-db.service.in (ExecStart): Add comment. + +2018-12-06 Colin Watson <cjwatson@debian.org> + + Allow disabling installation of systemd components + + * m4/man-arg-systemdtmpfilesdir.m4: Define an INSTALL_SYSTEMD_TMPFILES + Automake conditional (true unless --with-systemdtmpfilesdir=no). + * m4/man-arg-systemdsystemunitdir.m4: Define an INSTALL_SYSTEMD_TIMER + Automake conditional (true unless --with-systemdsystemunitdir=no). + * init/systemd/Makefile.am: Honour INSTALL_SYSTEMD_TMPFILES and + INSTALL_SYSTEMD_TIMER. + +2018-12-06 Colin Watson <cjwatson@debian.org> + + Ship a systemd timer for daily DB maintenance + + Thanks to Christian Göttsche. Fixes Debian bug #858022. + + * m4/man-arg-systemdsystemunitdir.m4: New file. + * configure.ac: Accept --with-systemdsystemunitdir option. + * init/systemd/Makefile.am (EXTRA_DIST): Add man-db.service.in. + (CLEANFILES): Add man-db.service. + (systemdsystemunit_DATA): Install man-db.timer. + (nodist_systemdsystemunit_DATA): Install man-db.service. + (man-db.service): New rule. + * init/systemd/man-db.service.in, init/systemd/man-db.timer: New files. + * .gitignore: Add init/systemd/man-db.service. + * NEWS: Document this. + +2018-11-14 Colin Watson <cjwatson@debian.org> + + Fix incorrect error message + + Reported by Julian Gilbey. Fixes Debian bug #913721. + + * src/man.c (check_standard_fds): Correct error message if stdout is not + open for writing (not "for reading", as previously claimed). + +2018-11-09 Colin Watson <cjwatson@debian.org> + + release.sh: Simplify Lex handling + + release.sh had a hack to ensure that flex-generated scanners are fresh + in release tarballs. This is more easily achieved by configuring with + --enable-maintainer-mode, which causes Automake to enable the Lex + rebuild rule. + + * release.sh: Configure with --enable-maintainer-mode; drop conditional + removals of src/lexgrog.c and src/zsoelim.c. + +2018-11-09 Colin Watson <cjwatson@debian.org> + + lexgrog: Fix handling of \- in RHS of NAME section + + Fixes Debian bug #913351. + + * src/lexgrog.l (MAN_NAME): Split into MAN_NAME (left-hand side) and + MAN_DESC (right-hand side). Most rules remain as before, except that \- + and similar are only handled specially in MAN_NAME and transition to + MAN_DESC, and rules that add a 0x11 marker (indicating the start of a + new whatis definition) transition to MAN_NAME. + (MAN_NAME_AT, MAN_NAME_BSX, MAN_NAME_BX, MAN_NAME_BX_RELEASE, + MAN_NAME_DQ, MAN_NAME_FX, MAN_NAME_NX, MAN_NAME_OX): Rename to + MAN_DESC_*. + (mdoc_text): Transition to MAN_DESC rather than MAN_NAME. + (newline_found): If adding 0x11, transition to MAN_NAME. + * src/tests/lexgrog-3: New file. + * src/tests/Makefile.am (ALL_TESTS): Add lexgrog-3. + * NEWS: Document this. + +2018-11-09 Colin Watson <cjwatson@debian.org> + + * NEWS: Document changes since 2.8.4. + +2018-11-09 Colin Watson <cjwatson@debian.org> + + lexgrog: Add test for multiple whatis definitions + + * src/tests/lexgrog-2: New file. + * src/tests/Makefile.am (ALL_TESTS): Add lexgrog-2. + +2018-11-09 Colin Watson <cjwatson@debian.org> + + lexgrog: Tidy up rules section + + No functional change. + + * src/lexgrog.l: Make more use of start condition scopes. Reindent + rules somewhat to make better use of vertical space. + +2018-11-03 Nikola Forró <nforro@redhat.com> + + Fix several resource and memory leaks + + * lib/decompress.c (decompress_zlib): Fix fd leak if gzdopen fails. + * lib/encodings.c (find_charset_locale): Free locale if setlocale fails. + * src/man.c (make_roff_command): Free fmt_prog. + * src/mandb.c (process_manpath): Free catpath if manpath is not a + directory. + * src/whatis.c (do_apropos): Free found_here. + +2018-10-27 enolp <enolp@softastur.org> + + Add Asturian translation + + * po/ast.po: New from Translation Project. + * po/LINGUAS: Add ast. + * man/THANKS: Add translator credit. + +2018-10-27 Pedro Albuquerque <palbuquerque73@gmail.com> + + Update Portuguese manual page translation + + * man/po4a/po/pt.po: Update from Translation Project. + +2018-10-21 Colin Watson <cjwatson@debian.org> + + Add Portuguese manual page translation + + * man/po4a/po/pt.po: New from Translation Project (thanks, Pedro + Albuquerque). + * configure.ac (AC_CONFIG_FILES): Add man/pt/Makefile. + * man/LINGUAS.po4a: Add pt. + * man/Makefile.am (DIST_SUBDIRS): Add pt. + * man/pt/Makefile.am, man/pt/translator.add: New files. + * man/po4a/Makefile.am (POFILES): Add po/pt.po. + * man/po4a/po4a.cfg (po4a_langs): Add pt. + * man/THANKS: Add translator credit. + * .gitignore: Add man/pt/man1, man/pt/man5, and man/pt/man8. + +2018-10-21 Colin Watson <cjwatson@debian.org> + + Switch more language lists to one-per-line format + + * man/LINGUAS.po4a: Switch to one language code per line, so that we + have better diffs in future. + * man/Makefile.am (DIST_SUBDIRS): Likewise. + * man/po4a/cfg (po4a_langs): Likewise. + +2018-10-21 Pedro Albuquerque <palbuquerque73@gmail.com> + + Add Portuguese translation + + * po/pt.po: New from Translation Project. + * po/LINGUAS: Add pt. + * man/THANKS: Add translator credit. + +2018-10-21 Colin Watson <cjwatson@debian.org> + + Switch po/LINGUAS to one-per-line format + + * po/LINGUAS: Switch to one language code per line, so that we have + better diffs in future. + +2018-10-21 Chen Qi <Qi.Chen@windriver.com> + + man-arg-config-file: fix to use config_file + + * m4/man-arg-config-file.m4: Compute config_file_basename based on + config_file, not withval. + +2018-08-20 Colin Watson <cjwatson@debian.org> + + Fail to configure if flex is needed but missing + + Fixes Savannah bug #54541. + + * configure.ac: Issue an error if AC_PROG_LEX didn't find a lexer + generator and either src/lexgrog.c or src/zsoelim.c is missing (as may + be the case when building from a git clone rather than a released + tarball). + +2018-08-02 Colin Watson <cjwatson@debian.org> + + Fix warning from gcc -Wcast-function-type + + This exposed the fact that errors from unlink in the cleanup path were + previously ignored. We now issue a warning in the same way that + commit_tmp_cat does. + + * src/man.c (cleanup_unlink): New function. + (open_cat_stream, close_cat_stream, display_catman): Use cleanup_unlink + rather than an incorrect cast of unlink. + +2018-08-02 Colin Watson <cjwatson@debian.org> + + Fix build with Berkeley DB + + Fixes Savannah bug #54425. + + * libdb/db_btree.c: Include <stdlib.h> for free. + +2018-07-27 Colin Watson <cjwatson@debian.org> + + Update advertised file size + + * docs/man-db.lsm (Primary-site): Update file size. + +2018-07-27 Colin Watson <cjwatson@debian.org> + + * Version: 2.8.4. + +2018-07-27 Colin Watson <cjwatson@debian.org> + + Work around Gnulib/gettext mismatch + + The versions of gettext infrastructure files installed by gnulib-tool + don't necessarily match our configured AM_GNU_GETTEXT_VERSION, so we + need to fix things up in bootstrap. + + * bootstrap.conf (gnulib_tool_option_extras): Set --po-base to gl/ref-po + rather than gnulib/po. + (bootstrap_post_import_hook): Merge temporary gl/ref-po directory into + gl/po. + +2018-07-27 Colin Watson <cjwatson@debian.org> + + Upgrade to Gnulib 20180726 + + * bootstrap: Sync to Gnulib 900ca5c0b092e50f9f17329feea3fbfe2b6e2139. + * bootstrap.conf (GNULIB_REVISION): Set to + 900ca5c0b092e50f9f17329feea3fbfe2b6e2139. + +2018-07-18 Colin Watson <cjwatson@debian.org> + + Distribute man/es/translator.add + + * man/es/Makefile.am (EXTRA_DIST): Add translator.add. + +2018-07-16 Colin Watson <cjwatson@debian.org> + + sandbox: Improve ESET compatibility further + + * lib/sandbox.c (make_seccomp_filter): If libesets_pac.so is preloaded, + then allow msgset (second argument 0) and msgsnd. + * NEWS: Document this. + +2018-07-15 Colin Watson <cjwatson@debian.org> + + sandbox: Allow some shared memory operations + + These were previously only allowed when ESET File Security is in use, + but the Astrill VPN seems to require something similar, there are + doubtless other such preload hacks, and they're relatively harmless. + + * lib/sandbox.c (make_seccomp_filter): Allow shmat (third argument + SHM_RDONLY), shmctl (second argument IPC_STAT), shmdt, and shmget + regardless of preloads. + * NEWS: Document this. + +2018-06-08 Colin Watson <cjwatson@debian.org> + + Check for external formatter in correct directory + + Check for mandb_nfmt and mandb_tfmt in the manual page hierarchy as + documented, not in the current directory. This was broken by the + working-directory-handling changes in 2.8.3. + + Reported by Josh Triplett. Fixes Debian bug #901007. + + * src/man.c (NFMT_PROG, TFMT_PROG): Remove leading "./". + (make_roff_command): Refactor confusing #ifdef forest. Prefix dir to + TFMT_PROG/NFMT_PROG rather than looking in the current directory. Don't + look for an external formatter at all if dir is NULL. + * NEWS: Document this. + +2018-06-08 Colin Watson <cjwatson@debian.org> + + Define an access(2) wrapper with clearer semantics + + As usual for system calls, access(2) returns zero on success. However, + I generally think of it as "can we access this file in this way", where + boolean semantics would be more convenient, and find it too easy to + invert logic by accident when using the system call directly. Define a + CAN_ACCESS wrapper with boolean semantics. + + * include/manconfig.h.in (CAN_ACCESS): New macro. + * lib/tempfile.c (path_search): Use CAN_ACCESS. + * src/catman.c (check_access): Likewise. + * src/filenames.c (make_filename): Likewise. + * src/man.c (make_roff_command, display): Likewise. + * src/ult_src.c (find_include): Likewise. + * src/whatis.c (use_grep): Likewise. + +2018-06-07 Felipe Castro <fefcas@gmail.com> + + Update Esperanto translation + + * po/eo.po: Update from Translation Project. + +2018-06-01 Francisco Javier F. Serrador <fserrador@gmail.com> + + Update Spanish manual page translation + + * man/po4a/po/es.po: Update from Translation Project. + * man/THANKS: Update translator credit. + +2018-05-29 Colin Watson <cjwatson@debian.org> + + Add po4a-based Spanish manual page translation + + This supersedes the previous whole-file translations, which had not been + properly updated in many years. + + * man/po4a/po/es.po: New from Translation Project (thanks, Francisco + Javier Serrador). + * man/LINGUAS: Remove es. + * man/LINGUAS.po4a: Add es. + * man/es/Makefile.am (PO4A_LINGUA): Set to yes. + (man1_MANS): Add man1/lexgrog.1 and man1/manconv.1. + (man8_MANS): Add man8/accessdb.8. + * man/es/man1/apropos.man1, man/es/man1/man.man1, + man/es/man1/manpath.man1, man/es/man1/whatis.man1, + man/es/man1/zsoelim.man1, man/es/man5/manpath.man5, + man/es/man8/catman.man8, man/es/man8/mandb.man8: Remove. + * man/es/translator.add: New file. + * man/po4a/Makefile.am (POFILES): Add po/es.po. + * man/po4a/po4a.cfg (po4a_langs): Add es. + * man/THANKS: Update translator credit. + * .gitignore: Add man/es/man1, man/es/man5, and man/es/man8. + +2018-05-29 Colin Watson <cjwatson@debian.org> + + Remove useless if-before-free tests + + * lib/hashtable.c (plain_hashtable_free): Remove; this is precisely + equivalent to free. + * lib/hashtable.h (plain_hashtable_free): Remove. + * lib/orderfiles.c (order_files): Use free rather than + plain_hashtable_free. + * libdb/db_btree.c (btree_findkey): Likewise. + + * lib/pathsearch.c (pathsearch, directory_on_path): Remove useless + if-before-free. + * libdb/db_lookup.c (free_mandata_elements): Likewise. + * src/check_mandirs.c (test_manfile, count_glob_matches): Likewise. + * src/descriptions.c (free_descriptions): Likewise. + * src/lexgrog_test.c (main): Likewise. + * src/man.c (display_filesystem, display_database, get_section_list): + Likewise. + * src/manp.c (add_system_manpath): Likewise. + * src/straycats.c (check_for_stray, straycats): Likewise. + * src/ult_src.c (ult_src): Likewise. + +2018-05-29 Colin Watson <cjwatson@debian.org> + + Use Gnulib progname module + + This lets us produce more accurate error messages when programs are + invoked with an absolute path. + + * bootstrap.conf (gnulib_modules): Add progname. + * include/manconfig.h.in (program_name): Remove. + * src/accessdb.c (main): Call set_program_name rather than similar + hand-rolled code. + * src/catman.c (main): Likewise. Don't free program_name. + * src/globbing_test.c (main): Likewise. + * src/lexgrog_test.c (main): Likewise. + * src/man.c (main): Likewise. Don't free program_name. + * src/manconv_main.c (main): Likewise. + * src/mandb.c (main): Likewise. Don't free program_name. + * src/manpath.c (main): Likewise. + * src/tests/fspause.c (main): Likewise. + * src/whatis.c (main): Likewise. + * src/zsoelim_main.c (main): Likewise. + + * src/man.c (manopt_to_env): Run program_name through base_name, since + that's no longer necessarily done up-front. + * src/whatis.c (main): Run program_name through base_name before + comparing it to APROPOS_NAME, since that's no longer necessarily done + up-front. + +2018-05-29 Colin Watson <cjwatson@debian.org> + + Upgrade to Gnulib 20180527 + + * bootstrap.conf (GNULIB_URL): Remove. + (GNULIB_REVISION): Set to 90f289f249a266b1afb9c63e182f5d979d17df5f. + (gnulib_modules): Replace gettext with gettext-h. + (gnulib_tool_option_extras): Remove --no-cache-modules (accidental + leftover from earlier testing). + (local_gl_dir): Set to 'gnulib-local' to avoid confusion with 'gl' as + the local output directory. Remove 'rm -rf gl' hack, now superseded. + (buildreq): Bump minimum autopoint and gettext versions to 0.18.3, + matching previous change to configure.ac. + * configure.ac (AM_PROG_AR, LT_INIT): Move below gl_EARLY. + * patches/argp-domain.patch: Rebase. + * src/tests/Makefile.am (TESTS_ENVIRONMENT): Remove use of + @LOCALCHARSET_TESTS_ENVIRONMENT@, which is no longer needed by Gnulib. + +2018-05-28 Colin Watson <cjwatson@debian.org> + + Switch to bootstrap + + We no longer keep autogenerated files in git. + + * .gitignore: Add **/Makefile, **/Makefile.in, /ABOUT-NLS, /aclocal.m4, + /build-aux, /config.h.in, /configure, /gl, /gnulib, + docs/INSTALL.autoconf, po/Makefile.in.in, po/Makevars, po/Rules-quot, + po/boldquot.sed, po/en@boldquot.header, po/en@quot.header, + po/insert-header.sin, po/quot.sed, and po/remove-potcdate.sin. Remove + docs/Makefile, gnulib/*, init/Makefile, init/systemd/Makefile, + lib/Makefile, libdb/Makefile, man/Makefile, man/*/Makefile, + manual/Makefile, po/Makefile, po/Makefile.in, src/Makefile, + src/tests/Makefile, and tools/Makefile. + * ABOUT-NLS, Makefile.in, aclocal.m4, autogen.sh, build-aux, + config.h.in, configure, docs/INSTALL.autoconf, docs/Makefile.in, gnulib, + init/Makefile.in, init/systemd/Makefile.in, lib/Makefile.in, + libdb/Makefile.in, man/Makefile.in, man/da/Makefile.in, + man/de/Makefile.in, man/es/Makefile.in, man/fr/Makefile.in, + man/id/Makefile.in, man/it/Makefile.in, man/ja/Makefile.in, + man/nl/Makefile.in, man/pl/Makefile.in, man/po4a/Makefile.in, + man/pt_BR/Makefile.in, man/ru/Makefile.in, man/sr/Makefile.in, + man/sv/Makefile.in, man/tr/Makefile.in, man/zh_CN/Makefile.in, + manual/Makefile.in, po/Makefile.in.in, po/Makevars, po/Rules-quot, + po/boldquot.sed, po/en@boldquot.header, po/en@quot.header, + po/insert-header.sin, po/quot.sed, po/remove-potcdate.sin, + src/Makefile.in, src/tests/Makefile.in, tools/Makefile.in: Remove. + + * bootstrap, bootstrap.conf: New files. + * Makefile.am (GNULIB_PO, SUBDIRS, EXTRA_DIST, ACLOCAL_AMFLAGS): Refer + to gl/ rather than gnulib/ (gnulib/ now contains pristine source). + (EXTRA_DIST): Replace autogen.sh with bootstrap and bootstrap.conf. + Replace gnulib/argp-domain.patch with patches/argp-domain.patch. Add + patches/fdutimens-hurd.patch. Remove gnulib/m4/gnulib-cache.m4 and + gnulib/m4/gnulib-tool.m4. + * gnulib/argp-domain.patch: Rename to ... + * patches/argp-domain.patch: ... this. Update target paths. + * gnulib/fdutimens-hurd.patch: Rename to ... + * patches/fdutimens-hurd.patch: ... this. Update target paths. + * configure.ac (AM_GNU_GETTEXT_VERSION): Upgrade to 0.18.3, for + compatibility with current Automake. + (HAVE_GNULIB_PO, AC_CONFIG_FILES): Refer to gl/ rather than gnulib/. + * lib/Makefile.am (libman_la_CPPFLAGS, libman_la_LIBADD): Likewise. + * libdb/Makefile.am (libmandb_la_CPPFLAGS): Likewise. + * src/Makefile.am (AM_CPPFLAGS, LIBMAN): Likewise. + * src/tests/Makefile.am (AM_CPPFLAGS, fspause_LDADD): Likewise. + + * docs/HACKING: Describe new policy. + * release.sh: Call ./bootstrap rather than ./autogen.sh. + +2018-05-17 pan93412 <pan93412@gmail.com> + + Add Traditional Chinese translation + + * po/zh_TW.po: New from Translation Project. + * po/LINGUAS: Add zh_TW. + * man/THANKS: Add translator credit. + +2018-04-22 Colin Watson <cjwatson@debian.org> + + sandbox: Allow sched_getaffinity + + This is used by xz-utils >= 5.2.3 if the --threads=0 option is in use + (perhaps via XZ_DEFAULTS or XZ_OPT). + + Reported by Axel Rohde. + + * lib/sandbox.c (make_seccomp_filter): Allow sched_getaffinity. + * NEWS: Document this. + +2018-04-06 Colin Watson <cjwatson@debian.org> + + Fix invalid man-db.conf with --disable-cache-owner + + Fixes Savannah bug #53575. + + * m4/man-arg-cache-owner.m4: Set and substitute cache_top_owner. + * init/systemd/man-db.conf.in: Substitute cache_top_owner rather than + man_owner. + * init/systemd/Makefile.am (man-db.conf): Likewise. + * NEWS: Document this. + +2018-04-06 Colin Watson <cjwatson@debian.org> + + Remove redundant debugging information + + * lib/decompress.c (decompress_open): Remove filename from + decompress_zlib command name. pipeline_dump already includes this + information from want_infile. + +2018-04-06 Colin Watson <cjwatson@debian.org> + + Rely on decompressors reading from stdin + + This works better with downstream AppArmor confinement of decompressors. + + * lib/decompress.c (decompress_open): Don't pass filename on + decompressor command lines. + * NEWS: Document this. + +2018-04-05 Colin Watson <cjwatson@debian.org> + + * Version: 2.8.3. + +2018-04-05 Colin Watson <cjwatson@debian.org> + + Suppress spurious gettext headers in --help output + + Some of man-db's commands have post-options help text but no pre-options + help text. Unfortunately, the way this works in argp (separating the + two sections using a '\v' character) means that this results in argp + trying to translate the empty string, which produces gettext catalog + headers. The easiest way to suppress this odd behaviour seems to be to + use a help filter function, so do that. + + Reported by Rafael Fontenelle. + + * src/accessdb.c (help_filter): Return NULL for ARGP_KEY_HELP_PRE_DOC. + * src/lexgrog_text.c (help_filter): New function. + (argp): Add help_filter. + * src/whatis.c (help_filter): New function. + (apropos_argp): Add help_filter. + * NEWS: Document this. + +2018-04-05 Colin Watson <cjwatson@debian.org> + + Fix compiler warnings on x32 + + tv_nsec is __syscall_slong_t == long long there, so we need a cast. + + * libdb/db_lookup.c (dbprintf): Cast tv_nsec to long for %ld format. + * libdb/db_store.c (make_content): Likewise. + * src/check_mandirs.c (testmandirs, update_db): Likewise. + * src/man.c (maybe_update_file): Likewise. + +2018-04-05 Colin Watson <cjwatson@debian.org> + + Fix broken test + + * src/tests/man-8: Fix expected output to account for recent change to + locale_macros. + +2018-04-05 Colin Watson <cjwatson@debian.org> + + man: Only change directory in child processes + + This avoids failures due to being unable to change back to the original + working directory. + + Fixes Debian bug #894792. + + * gnulib/m4/gnulib-cache.m4 (gl_MODULES): Remove save-cwd. + * src/man.c (make_display_command): Remove now-unnecessary code to run + the pager in the original working directory. + (chdir_commands): New function. + (format_display): Change directory just for format_cmd and disp_cmd + rather than in-process. + (display): Change directory just for format_cmd rather than in-process. + (main): Remove now-unnecessary code to save and restore the current + working directory. + * NEWS: Document this. + +2018-04-04 Colin Watson <cjwatson@debian.org> + + Upgrade config.guess/config.sub + + * build-aux/config.guess: Upgrade to 2018-02-24. + * build-aux/config.sub: Upgrade to 2018-02-22. + +2018-04-01 Colin Watson <cjwatson@debian.org> + + Fix locale_macros version check for groff RCs + + Thanks to Werner LEMBERG. + + * src/man.c (locale_macros): Tolerate groff release candidates. + * NEWS: Document this. + +2018-03-30 Colin Watson <cjwatson@debian.org> + + sandbox: Allow sibling architectures on x86 etc. + + Fixes Debian bug #891267. + + * lib/sandbox.c (make_seccomp_filter): Allow sibling architectures on + x86/x86_64/x32. + * NEWS: Document this. + +2018-03-17 Colin Watson <cjwatson@debian.org> + + sandbox: Tighten up storage classes + + * lib/sandbox.c (make_seccomp_filter, _sandbox_load): Declare as static. + +2018-03-17 Colin Watson <cjwatson@debian.org> + + sandbox: Allow kill and tgkill outright + + This is unfortunate but unavoidable: groff uses kill to explicitly pass + on SIGPIPE to its child processes, and we can't do any more + sophisticated filtering in seccomp. + + Based on a patch by Paul Wise. Fixes Debian bug #892309. + + * lib/sandbox.c (make_seccomp_filter): Allow kill and tgkill + unconditionally. + (adjust_seccomp_filter): Remove. + (_sandbox_load): Remove call to adjust_seccomp_filter. + * NEWS: Document this. + +2018-03-17 Colin Watson <cjwatson@debian.org> + + sandbox: Allow madvise + + Reported by Tobias Klausmann. + + * lib/sandbox.c (make_seccomp_filter): Allow madvise. + * NEWS: Document this. + +2018-03-02 Francisco Javier Serrador <fserrador@gmail.com> + + Update Spanish translation + + * po/es.po: Update from Translation Project. + * man/THANKS: Add translator credit. + +2018-02-28 Colin Watson <cjwatson@debian.org> + + * Version: 2.8.2. + +2018-02-28 Colin Watson <cjwatson@debian.org> + + sandbox: Handle qemu-user returning EFAULT + + Fixes Debian bug #891109. + + * lib/sandbox.c (_sandbox_load): Interpret EFAULT from seccomp_load as + meaning that seccomp is unavailable, since this can be returned by some + versions of qemu-user. + * NEWS: Document this. + +2018-02-28 Colin Watson <cjwatson@debian.org> + + sandbox: Add some more ESET affordances + + * lib/sandbox.c (make_seccomp_filter): If libesets_pac.so is preloaded, + then allow some shared memory calls and checking for the existence of + other processes. + +2018-02-25 Colin Watson <cjwatson@debian.org> + + sandbox: Work around snoopy + + Fixes Debian bug #890861. + + * lib/sandbox.c (search_ld_preload): Cache /etc/ld.so.preload contents + between calls. + (make_seccomp_filter): Allow some socket-related system calls if + libsnoopy.so is preloaded. + +2018-02-25 Colin Watson <cjwatson@debian.org> + + sandbox: Generalise libesets_pac.so check slightly + + * lib/sandbox.c (make_seccomp_filter): LD_PRELOAD or /etc/ld.so.preload + can just contain "libesets_pac.so" without an explicit path, so make the + search slightly more permissive. + +2018-02-20 Colin Watson <cjwatson@debian.org> + + sandbox: Handle /etc/ld.so.preload + + At least ESET File Security may be configured using /etc/ld.so.preload + rather than the LD_PRELOAD environment variable, so unfortunately we + need to check that too. + + * lib/sandbox.c (search_ld_preload): New function, handling both + LD_PRELOAD and /etc/ld.so.preload. + (can_load_seccomp, make_seccomp_filter): Use search_ld_preload. + +2018-02-19 Colin Watson <cjwatson@debian.org> + + sandbox: Work around ESET File Security + + This is a proprietary antivirus program, so this is only a best guess + from strace output. The choices are to disable the sandbox entirely or + to allow a few socket-related system calls if this antivirus program is + detected, and the latter is probably slightly better. + + Reported by John Sivak. + + * lib/sandbox.c (make_seccomp_filter): If LD_PRELOAD contains the + substring "/libesets_pac.so", then allow some socket-related system + calls so that the preload wrapper can talk to its daemon. + * NEWS: Document this. + +2018-02-19 Colin Watson <cjwatson@debian.org> + + sandbox: Allow ioctl(fd, TIOCGWINSZ) + + Patch from the anonymous reporter of + https://savannah.nongnu.org/bugs/?53183 (though I think is obvious for + copyright purposes given knowledge of the failing system call). + + Fixes Savannah bug #53183 (maybe). + + * lib/sandbox.c (make_seccomp_filter): Allow ioctl(fd, TIOCGWINSZ). + * NEWS: Document this. + +2018-02-14 Colin Watson <cjwatson@debian.org> + + sandbox: Allow kill/tgkill for current process + + xz is multithreaded, so the threading library may need to use tgkill to + pass signals between threads, for example when it receives SIGPIPE. + + Fixes Savannah bug #53143. + + * lib/sandbox.c (SC_ALLOW, SC_ALLOW_ARG_1, SC_ALLOW_ARG_2): Move macro + definitions out of make_seccomp_filter. + (adjust_seccomp_filter): New function. + (sandbox_load): Call adjust_seccomp_filter. + * NEWS: Document this. + +2018-02-09 Colin Watson <cjwatson@debian.org> + + * Version: 2.8.1. + +2018-02-09 Colin Watson <cjwatson@debian.org> + + Use HTTPS URLs where possible + + * Makefile.am, NEWS, README, docs/HACKING, docs/INSTALL.quick, + lib/sandbox.c, manual/misc.me, src/check_mandirs.c, src/man.c, + src/manconv.c, src/tests/man-1, src/tests/man-2, src/tests/mandb-2, + src/tests/mandb-4, src/tests/mandb-5, src/tests/zsoelim-1: Replace + http:// links with https:// equivalents. + * docs/HACKING: Replace git:// link with an https:// equivalent. + +2018-02-09 Colin Watson <cjwatson@debian.org> + + Chase some redirects + + * NEWS: Link to https://bazaar.canonical.com/ rather than + http://bazaar-vcs.org/. + * man/fr/translator.add: Link to https://po4a.org/ rather than + http://po4a.alioth.debian.org/. + +2018-02-08 Colin Watson <cjwatson@debian.org> + + sandbox: Allow mremap + + * lib/sandbox.c (make_seccomp_filter): Allow mremap, which may be used + by iconv when reading files, depending on libc configuration. + * NEWS: Document this. + +2018-02-07 Lars Wendler <polynomial-c@gentoo.org> + + Change libseccomp logic to not be automagic only + + Introduce --without-libseccomp configure option so that users can + disable seccomp even if libseccomp is available on the system. + + The default is unchanged from before this patch. If no + --with(out)-libseccomp has been given on the command line, the macro + looks for presence of libseccomp and uses that if found. + + * m4/man-libseccomp.m4: Guard pkg-config test with a command-line + option. + +2018-02-07 Colin Watson <cjwatson@debian.org> + + * NEWS: Document changes since 2.8.0. + +2018-02-07 Colin Watson <cjwatson@debian.org> + + Reduce number of MAN_OWNER ifdefs + + * lib/security.c (init_security, running_setuid): Define + unconditionally, with stub behaviour if MAN_OWNER is undefined. + * lib/security.h (get_man_owner): Only declare prototype if MAN_OWNER is + defined. + * src/check_mandirs.c (chown_if_possible) [!MAN_OWNER]: Mark path + argument as unused. + * src/lexgrog_test.c (main): Call init_security unconditionally. + * src/man.c (main): Likewise. + * src/manconv_client.c (manconv_pre_exec): Define unconditionally. + (add_manconv): Simplify, since running_setuid is now always defined. + * src/mandb.c (main): Call init_security unconditionally. Use + get_man_owner rather than equivalent inline code. + * src/manp.c (get_def): Define unconditionally. + * src/manp.h (get_def): Drop macro alternative. + +2018-02-07 Colin Watson <cjwatson@debian.org> + + Fix manconv under seccomp when man is setuid + + We must drop privileges before loading the sandbox. + + Reported by Lars Wendler. + + * src/manconv_client.c (manconv_pre_exec): New function. + (manconv_stdin): Move setuid hack to ... + (add_manconv): ... here, now implemented using a custom pre-exec hook. + We no longer have a fall-through if dropping privileges fails, since + that's now harder to do and wasn't really necessary in the first place. + +2018-02-07 Colin Watson <cjwatson@debian.org> + + Refactor do_system_drop_privs + + Now that we have pipecmd_pre_exec, this can be simplified quite a bit. + + * lib/security.c (drop_privs): New function. + (do_system_drop_privs_child, do_system_drop_privs): Remove. + * lib/security.h (drop_privs): Add prototype. + (do_system_drop_privs): Remove prototype. + * src/man.c (make_browser): Add drop_privs pre-exec hook to browser + command. + (format_display): Call browser using pipeline_run rather than + do_system_drop_privs, since it now has a pre-exec hook to drop + privileges. + +2018-02-07 Colin Watson <cjwatson@debian.org> + + Refactor sandbox attachment to be more composable + + The sandbox interface now exposes the necessary load/free primitives, + and callers use them directly with pipecmd_pre_exec. This allows the + sandbox to be composed with other pre-exec hooks. + + * lib/sandbox.c (man_sandbox_op, sandbox_attach, + sandbox_attach_permissive): Remove. + (sandbox_load): Rename to ... + (_sandbox_load): ... this. + (sandbox_load, sandbox_load_permissive): New functions. + (sandbox_free): Expect a man_sandbox * rather than a man_sandbox_op *. + * lib/sandbox.h: Update prototypes. + + * lib/decompress.c (decompress_open, decompress_fdopen): Update sandbox + attachment calls. + * src/lexgrog.l (find_name): Likewise. + * src/man.c (add_col, make_roff_command, add_output_iconv, + make_display_command, open_cat_stream, display_catman): Likewise. + * src/manconv_client.c (add_manconv): Likewise. + * src/straycats.c (check_for_stray): Likewise. + * src/whatis.c (use_grep): Likewise. + +2018-02-07 Colin Watson <cjwatson@debian.org> + + * NEWS: Fix typo in 2.6.5 notes + +2018-02-05 Colin Watson <cjwatson@debian.org> + + Fix seccomp sandbox build on Linux/POWER + + * lib/sandbox.c [HAVE_LIBSECCOMP]: Include <termios.h>, since some + architectures need this for TCGETS as well as <sys/ioctl.h>. + +2018-02-04 Colin Watson <cjwatson@debian.org> + + * Version: 2.8.0. + +2018-02-04 Colin Watson <cjwatson@debian.org> + + Allow ioctl (..., TCGETS, ...) + + * lib/sandbox.c (make_seccomp_filter): Allow ioctl (..., TCGETS, ...) in + non-permissive mode (ioctl in general is already allowed in permissive + mode). + +2018-02-04 Mario Blättermann <mario.blaettermann@gmail.com> + + Update German manual page translation + + * man/po4a/po/de.po: Update from Translation Project. + +2018-02-03 Rafael Fontenelle <rafaelff@gnome.org> + + Update Brazilian Portuguese translations + + * po/pt_BR.po, man/po4a/po/pt_BR.po: Update from Translation Project. + * man/THANKS: Update translator email address. + +2018-01-27 Joe Hansen <joedalton2@yahoo.dk> + + Update Danish manual page translation + + * man/po4a/po/da.po: Update from Translation Project. + +2018-01-25 Mario Blättermann <mario.blaettermann@gmail.com> + + Update German manual page translation + + * man/po4a/po/de.po: Update from Translation Project. + +2018-01-23 Yuri Kozlov <yuray@komyakino.ru> + + Update Russian translations + + * po/ru.po, man/po4a/po/ru.po: Update from Translation Project. + +2018-01-23 Boyuan Yang <073plan@gmail.com> + + Update Simplified Chinese manual page translation + + * man/po4a/po/zh_CN.po: Update from Translation Project. + +2018-01-23 Sebastian Rasmussen <sebras@gmail.com> + + Update Swedish manual page translation + + * man/po4a/po/sv.po: Update from Translation Project. + +2018-01-23 Rafael Fontenelle <rffontenelle@gmail.com> + + Update Brazilian Portuguese manual page translation + + * man/po4a/po/pt_BR.po: Update from Translation Project. + +2018-01-22 Colin Watson <cjwatson@debian.org> + + * Version: 2.8.0-pre2. + + * man/po4a/po/man-db-manpages.pot, man/po4a/po/*.po: Update. + +2018-01-21 Colin Watson <cjwatson@debian.org> + + * Version: 2.8.0-pre1. + +2018-01-16 Colin Watson <cjwatson@debian.org> + + Minor style cleanups + + * src/man.c (sh_lang_first_word, main): Minor style cleanups. + +2018-01-16 Colin Watson <cjwatson@debian.org> + + NEWS: Document previous commit. + +2018-01-16 Neven Sajko <nsajko@gmail.com> + + Add fallback pager if the compile-time default is not executable + + A problem with man-db's man is that in the case of the user giving no + configuration via conf files, argv, or environment variables; man + defaults to less as pager (PAGER); but less may not be present on the + system. Sure, other pagers may be selected in aforementioned ways, but + then the defaults are overridden, making that unsuitable for + install-time configuration. + + This patch makes man check (if that becomes relevant) if PAGER is + executable, further defaulting to cat (which is basically ubiquitous, + being in original Unix, POSIX, and GNU Coreutils) if it is not. Thus + the poor beginner Unix users without less installed will be able to + get man pages. + + * src/man.c (sh_lang_first_word): New function. + (main): Skip configured pager if it is not executable. + * man/man1/man.man1 (Controlling formatted output, ENVIRONMENT): + Document fallback to cat. + * man/replace.sin.in: Substitute %cat%. + +2018-01-16 Colin Watson <cjwatson@debian.org> + + Fix a segfault in 'man -D --help' + + Reported by Jiri Kucera. + + * src/man.c (init_html_pager): New function. + (parse_opt): Call init_html_pager rather than setting html_pager to + NULL. + (help_filter): Assert that browser is non-NULL. + (main): Call init_html_pager rather than doing the same thing directly. + * NEWS: Document this. + +2018-01-03 Colin Watson <cjwatson@debian.org> + + Update Simplified Chinese manual page translation + + * man/po4a/po/zh_CN.po: Update from Translation Project (trivial). + +2018-01-03 Colin Watson <cjwatson@debian.org> + + Upgrade config.guess/config.sub + + * build-aux/config.guess: Upgrade to 2017-11-07. + * build-aux/config.sub: Upgrade to 2017-11-23. + +2018-01-03 Colin Watson <cjwatson@debian.org> + + sandbox: Cope with missing CONFIG_SECCOMP_FILTER + + * lib/sandbox.c (gripe_seccomp_filter_unavailable): New function. + (can_load_seccomp): Return early if seccomp filtering has already been + detected as unavailable. + (sandbox_load): If seccomp_load returns an EINVAL error, assume that the + running kernel doesn't support seccomp filtering and emit a debugging + message rather than failing. + +2018-01-03 Colin Watson <cjwatson@debian.org> + + Allow sync_file_range2 syscall + + * lib/sandbox.c (make_seccomp_filter): Add sync_file_range2. + +2018-01-03 Colin Watson <cjwatson@debian.org> + + Fix seccomp sandbox on Linux/ARM + + * lib/sandbox.c (make_seccomp_filter): Add arm_fadvise64_64 and + arm_sync_file_range. + +2017-12-03 Colin Watson <cjwatson@debian.org> + + Use more conventional bullets in documentation + + * docs/INSTALL.quick, NEWS, README: Use "*" for bullet points instead of + "o". + +2017-12-03 Colin Watson <cjwatson@debian.org> + + Confine most untrusted data handling using seccomp + + Fixes Debian bug #877199. + + * configure.ac: Require libpipeline >= 1.5.0. Call MAN_LIBSECCOMP. + * docs/INSTALL.quick: Bump minimum libpipeline version to 1.5.0. List + libseccomp as recommended. + * lib/Makefile.am (libman_la_CPPFLAGS): Add $(libseccomp_CFLAGS). + (libman_la_SOURCES): Add sandbox.c and sandbox.h. + (libman_la_LDFLAGS): Add $(libseccomp_LIBS). + * lib/sandbox.c: New file. + * lib/sandbox.h: New file. + * m4/man-libseccomp.m4: New file. + + * src/man.c (set_term): Check that process ID matches original before + calling tcsetattr. + (get_term): Record original process ID to work around an arguable bug in + pipecmd_exec. + + * src/lexgrog_test.c (main), src/man.c (main), src/manconv_main.c + (main), src/mandb.c (main), src/zsoelim_main.c (main): Initialise + sandbox. + + * lib/decompress.c (decompress_open, decompress_fdopen): Attach sandbox + to decompression commands. + * src/lexgrog.l (find_name): Attach sandbox to 'col'. + * src/man.c (add_col): Attach sandbox to 'col'. + (make_roff_command): Attach sandbox to 'zsoelim' and to groff-related + programs. + (add_output_iconv): Attach sandbox to 'iconv'. + (make_display_command): Attach sandbox to 'tr'. + (open_cat_stream, display_catman): Attach sandbox to compression + commands. + * src/manconv_client.c (add_manconv): Attach sandbox to manconv_stdin. + * src/straycats.c (check_for_stray): Attach sandbox to 'col'. + * src/whatis.c (use_grep): Attach sandbox to 'grep'. + + * src/accessdb.c, src/catman.c, src/globbing_test.c, src/manpath.c: + Define stub sandbox variable. + + * docs/NEWS: Document this. + +2017-12-02 Colin Watson <cjwatson@debian.org> + + Document more installation requirements + + * docs/INSTALL.quick: List a database library as required, and zlib as + recommended. + +2017-11-22 Colin Watson <cjwatson@debian.org> + + Remove Easter egg entirely + + Six years is a reasonable shelf life for a joke, but I think its time + has passed now. + + * src/man.c (main): Remove Easter egg. + +2017-11-21 Philipp Gesang <phg@phi-gamma.net> + + Add section 0 to defaults + + m4/man-arg-sections.m4: Add 0 (zero) to the default list of sections as + advertised in ``configure --help``. + + Cf. commit f3739b9bbde27c702c911ce8a511a499705a25f7 + +2017-11-21 Colin Watson <cjwatson@debian.org> + + Stop Easter egg interfering with non-error cases + + * src/man.c (main): Restrict Easter egg to the case where 'man' is run + without any options or arguments at all (which isn't useful for anything + else), not 'man -w' (which is). + + https://unix.stackexchange.com/questions/405783/why-does-man-print-gimme-gimme-gimme-at-0030 + +2017-11-21 Colin Watson <cjwatson@debian.org> + + Fix formatting error in Simplified Chinese translation + + * man/po4a/po/zh_CN.po: Correct formatting of exit(3tcl) references. + +2017-11-16 Boyuan Yang <073plan@gmail.com> + + Update Simplified Chinese translations + + * po/zh_CN.po, man/po4a/po/zh_CN.po: Update from Translation Project. + * man/THANKS: Add translator credit. + +2017-11-13 Colin Watson <cjwatson@debian.org> + + Fix docs for minimum libpipeline requirement + + * docs/INSTALL.quick: Bump minimum libpipeline version to 1.4.0. + +2017-07-18 Colin Watson <cjwatson@debian.org> + + Fix formatting error in Turkish translation + + * man/po4a/po/tr.po: Translate "\\e-" as itself rather than as "\\(e-". + +2017-07-16 Colin Watson <cjwatson@debian.org> + + Improve --with-systemdtmpfilesdir default + + * m4/man-arg-systemdtmpfilesdir.m4: Get tmpfiles directory location from + pkg-config. + * configure.ac: Call PKG_PROG_PKG_CONFIG early to avoid problems with + conditional use of PKG_* macros. + +2017-07-11 Colin Watson <cjwatson@debian.org> + + Add Turkish manual page translation + + * man/po4a/po/tr.po: New from Translation Project (thanks, Volkan Gezer + and Mesutcan Kurt). + * configure.ac (AC_CONFIG_FILES): Add man/tr/Makefile. + * man/LINGUAS.po4a: Add tr. + * man/Makefile.am (DIST_SUBDIRS): Add tr. + * man/tr/Makefile.am, man/tr/translator.add: New files. + * man/po4a/Makefile.am (POFILES): Add po/tr.po. + * man/po4a/po4a.cfg (po4a_langs): Add tr. + * man/THANKS: Add translator credit. + * .gitignore: Add man/tr/man1, man/tr/man5, and man/tr/man8. + +2017-07-10 Colin Watson <cjwatson@debian.org> + + * NEWS: Document changes since 2.7.6.1. + +2017-07-10 Colin Watson <cjwatson@debian.org> + + gnulib: Import memmem module + + Needed to make the previous commit portable. + +2017-07-10 Colin Watson <cjwatson@debian.org> + + Fix preprocessor handling after insertions + + If man has added prefixes to a page to handle such things as disabling + hyphenation, then it also needs to take account of that when looking for + a preprocessor line at the start of the page. + + Reported by Bjarni Ingi Gislason. Fixes Debian bug #867857. + + * src/man.c (get_preprocessors_from_file): Skip over as many blocks + ending with an .lf macro as there are prefixes. + (get_preprocessors): Pass the number of prefixes through to + get_preprocessors_from_file. + (make_roff_command): Take pp_string as an argument rather than + dbfilters; callers should now call get_preprocessors themselves. + (display): Rename seq_ncmds to prefixes. Call get_preprocessors before + calling make_roff_command. + +2017-07-10 Colin Watson <cjwatson@debian.org> + + Upgrade to Automake 1.15.1. + +2017-07-10 Colin Watson <cjwatson@debian.org> + + Handle \(en escapes in NAME section + + * src/lexgrog.l (MAN_NAME): Treat "\(en" as another synonym for "\-", + and thus as a separator. + +2017-04-08 Volkan Gezer <volkangezer@gmail.com> + + Update Turkish translation + + * po/tr.po: Update from Translation Project. + +2017-04-04 Volkan Gezer <volkangezer@gmail.com> + + Add Turkish translation + + * po/tr.po: New from Translation Project. + * po/LINGUAS: Add tr. + * man/THANKS: Add translator credit. + +2017-01-29 Felipe Castro <fefcas@gmail.com> + + Update Esperanto translation + + * po/eo.po: Update from Translation Project. + +2017-01-07 Sebastian Rasmussen <sebras@gmail.com> + + Update Swedish translation + + * po/sv.po: Update from Translation Project. + +2017-01-04 Colin Watson <cjwatson@debian.org> + + Add Brazilian Portuguese manual page translation + + * man/po4a/po/pt_BR.po: New from Translation Project (thanks, Rafael + Fontenelle). + * configure.ac (AC_CONFIG_FILES): Add man/pt_BR/Makefile. + * man/LINGUAS.po4a: Add pt_BR. + * man/Makefile.am (DIST_SUBDIRS): Add pt_BR. + * man/pt_BR/Makefile.am, man/pt_BR/translator.add: New files. + * man/po4a/Makefile.am (POFILES): Add po/pt_BR.po. + * man/po4a/po4a.cfg (po4a_langs): Add pt_BR. + * man/THANKS: Add translator credit. + * .gitignore: Add man/pt_BR/man1, man/pt_BR/man5, and man/pt_BR/man8. + +2016-12-28 Sebastian Rasmussen <sebras@gmail.com> + + Update Swedish manual page translation + + * man/po4a/po/sv.po: Update from Translation Project. + +2016-12-23 David Prévot <david@tilapin.org> + + Update French manual page translation + + * man/po4a/po/fr.po: Update from Translation Project. + +2016-12-23 David Prévot <david@tilapin.org> + + Update French translation + + * po/fr.po: Update from Translation Project. + +2016-12-22 Robert Luberda <robert@debian.org> + + Update Polish manual page translation + + * man/po4a/po/pl.po: Update from Translation Project. + +2016-12-22 Robert Luberda <robert@debian.org> + + Update Polish translation + + * po/pl.po: Update from Translation Project. + +2016-12-19 Colin Watson <cjwatson@debian.org> + + Add Serbian manual page translation + + * man/po4a/po/sr.po: New from Translation Project (thanks, Мирослав + Николић). + * configure.ac (AC_CONFIG_FILES): Add man/sr/Makefile. + * man/LINGUAS.po4a: Add sr. + * man/Makefile.am (DIST_SUBDIRS): Add sr. + * man/sr/Makefile.am, man/sr/translator.add: New files. + * man/po4a/Makefile.am (POFILES): Add po/sr.po. + * man/po4a/po4a.cfg (po4a_langs): Add sr. + * man/THANKS: Add translator credit. + * .gitignore: Add man/sr/man1, man/sr/man5, and man/sr/man8. + +2016-12-19 Мирослав Николић <miroslavnikolic@rocketmail.com> + + Update Serbian translation + + * po/sr.po: Update from Translation Project. + +2016-12-13 Joe Hansen <joedalton2@yahoo.dk> + + Update Danish manual page translation + + * man/po4a/po/da.po: Update from Translation Project. + +2016-12-13 Colin Watson <cjwatson@debian.org> + + Generate tmpfiles snippet based on cache owner + + man-db.conf should honour --enable-cache-owner rather than hardcoding + "man". + + * init/systemd/man-db.conf: Rename to ... + * init/systemd/man-db.conf.in: ... this. Replace "man" with + "@man_owner@". + * init/systemd/Makefile.am: Generate man-db.conf at build time. + * .gitignore: Add init/systemd/man-db.conf. + +2016-12-13 Colin Watson <cjwatson@debian.org> + + Fix locale macro loading for Chinese + + The intent was always that we should load the macro file corresponding + to just the language part of the page's locale, and the debug output + agreed with this, but the actual implementation did not. Fix this. + + See: https://savannah.gnu.org/bugs/?44941 + + * src/man.c (display): Pass bits.language rather than page_lang to + locale_macros. Adjust memory allocation. + +2016-12-13 Colin Watson <cjwatson@debian.org> + + Rename SECURE_MAN_UID to MAN_OWNER + + The latter had always been defined to the former anyway, and now that + the cache owner can be changed without actually installing setuid the + latter is more descriptive. + + * m4/man-arg-cache-owner.m4: Define MAN_OWNER rather than + SECURE_MAN_UID. Update all users. + * include/manconfig.h.in (MAN_OWNER): Remove definition. + +2016-12-13 Colin Watson <cjwatson@debian.org> + + Mark some parts of .TH sections as untranslatable + + * man/po4a/Locale/Po4a/Manext.pm (translate): Don't translate anything + matching /^%.*%$/ or /^[A-Z]+$/ in .TH sections. + * man/po4a/po/man-db-manpages.pot, man/po4a/po/*.po: Update. + +2016-12-13 Tianze Wang <zwpwjwtz@126.com> + + Update Simplified Chinese manual page translation + + * man/po4a/po/zh_CN.po: Update from Translation Project. + * man/THANKS: Update. + +2016-12-13 Trần Ngọc Quân <vnwildman@gmail.com> + + Update Vietnamese translation + + * po/vi.po: Update from Translation Project. + +2016-12-13 Colin Watson <cjwatson@debian.org> + + Correct syntax of Danish manual page translation + + * man/po4a/po/da.po: Fix a couple of font specifications. + +2016-12-13 Rafael Fontenelle <rffontenelle@gmail.com> + + Update Brazilian Portuguese translation + + * po/pt_BR.po: Update from Translation Project. + * man/THANKS: Update. + +2016-12-13 Joe Hansen <joedalton2@yahoo.dk> + + Update Danish manual page translation + + * man/po4a/po/da.po: Update from Translation Project. + +2016-12-12 Joe Hansen <joedalton2@yahoo.dk> + + Update Danish translation + + * po/da.po: Update from Translation Project. + +2016-12-12 Mario Blättermann <mario.blaettermann@gmail.com> + + Update German manual page translation + + * man/po4a/po/de.po: Update from Translation Project. + +2016-12-12 Mario Blättermann <mario.blaettermann@gmail.com> + + Update German translation + + * po/de.po: Update from Translation Project. + * man/THANKS: Update. + +2016-12-12 Colin Watson <cjwatson@debian.org> + + * Version: 2.7.6.1. + +2016-12-12 Colin Watson <cjwatson@debian.org> + + Correct installation of Swedish manual pages + + * man/sv/Makefile.am (LINGUA): Set to sv, not nl. + * NEWS: Document this. + +2016-12-12 Colin Watson <cjwatson@debian.org> + + * NEWS: Document previous change. + +2016-12-12 Colin Watson <cjwatson@debian.org> + + Don't chmod CACHEDIR.TAG if it doesn't exist + + The containing directory might reasonably not exist. Fixes Debian + bug #847810. + + * src/mandb.c (mandb): Only chown/chmod CACHEDIR.TAG if it exists. + +2016-12-11 Colin Watson <cjwatson@debian.org> + + * Version: 2.7.6. + +2016-12-11 Colin Watson <cjwatson@debian.org> + + Fix systemd tmpfiles group/perms of /var/cache/man + + * init/systemd/man-db.conf: Change mode to 0755 and group to man. + +2016-12-11 Colin Watson <cjwatson@debian.org> + + Fix Polish mandb(8) "cannot adjust line" warnings + + * man/man8/mandb.man8 (DATABASE CACHES): Set a width of 20em for the + "Type" column. + +2016-12-11 Colin Watson <cjwatson@debian.org> + + Drop documentation of gdbm < 1.6 + + gdbm 1.6 was released in 1993; it's no longer necessary to document + mandb's behaviour with older versions. + + * man/man8/mandb.man8 (DATABASE CACHES): Remove "GNU gdbm v < 1.6" row. + Simplify "GNU gdbm v >= 1.6" to "GNU gdbm". Update all translations. + +2016-12-11 Colin Watson <cjwatson@debian.org> + + Fix table rendering with po4a 0.47 + + * man/po4a/Locale/Po4a/Manext.pm (initialize): Drop unused assignment. + (shiftline, pushline): Pass through to superclass if po4a version >= + 0.47. + (translate): With po4a >= 0.47, don't process text blocks since po4a now + does that, but handle @-separation of columns and remove trailing + newlines from translatable strings. + * man/po4a/po/man-db-manpages.pot, man/po4a/po/*.po: Update (line + numbers only). + * NEWS: Document this. + +2016-12-11 Colin Watson <cjwatson@debian.org> + + Fix distcheck following cache-owner/setuid changes + + We previously ignored chown failures on "make install", but that's not + really correct. Instead, configure with --disable-setuid during + distcheck. + + * Makefile.am (AM_DISTCHECK_CONFIGURE_FLAGS): Add --disable-setuid. + +2016-12-11 Colin Watson <cjwatson@debian.org> + + Update translation files + + * po/man-db.pot, po/*.po: Update. + * man/po4a/po/man-db-manpages.pot, man/po4a/po/*.po: Update. + +2016-12-11 Colin Watson <cjwatson@debian.org> + + * NEWS: Document changes since 2.7.5. + +2016-12-11 Mihail Konev <k.mvc@ya.ru> + + src/tests: Use /tmp for temporary directories + + Reduces disk reads/writes made by 'make check -C src'. + + Fall back to ./tmp-* if 'mktemp -d' fails. + +2016-12-10 Colin Watson <cjwatson@debian.org> + + Eliminate dangerous setgid-root directories + + man-db has created its cache directories as setgid root for nearly 20 + years. This seems to have originated in https://bugs.debian.org/26002. + However, this has some dangerous consequences, such as: + + http://www.halfdog.net/Security/2015/SetgidDirectoryPrivilegeEscalation/ + + It seems best to arrange for cache files and directories to be man:man + rather than man:root. To do this reliably, as well as adjusting various + chown and chmod calls, we make man and mandb be setgid man as well as + setuid man (except in the --disable-setuid case). This is a much + simpler and safer solution to the original problem, and doesn't + introduce any interesting new privilege since the man group's only real + purpose is to be the man user's primary group and nothing in cache + directories is group-writeable. + + * configure.ac (AC_CHECK_FUNCS): Add lchown. + * lib/security.c (init_security): Record initial real and effective + group IDs as well as user IDs. + (drop_effective_privs, regain_effective_privs): Update gid. + * lib/xchown.c (xlchown) [HAVE_LCHOWN]: New function. + * lib/xchown.c (xlchown) [HAVE_LCHOWN]: Add prototype. + * m4/man-arg-setuid.m4: Set man_mode to 6755 rather than 4755 in the + --enable-setuid case. + * src/Makefile.am (install-exec-hook): Check for man_mode being 6755 + rather than 4755. Set the group of man and mandb as well as their + owner. + * src/check_mandirs.c (chown_if_possible): New function. This is + somewhat more careful than previous implementations, changes the group + as well as the user if possible, and prefers lchown if it is available. + (mkcatdirs): Drop S_ISGID from cat directories. Use chown_if_possible. + (fix_permissions, fix_permissions_tree): New functions to remove setgid + bit from existing cat directories. + (testmandirs): Call fix_permissions_tree. + * src/check_mandirs.h (chown_if_possible): Add prototype. + * src/man.c (commit_tmp_cat): Set cat file group as well as owner. + * src/mandb.c (check_chown): Remove. + (do_chown): Stop taking a uid parameter. Use chown_if_possible. + (mandb): Use chown_if_possible for CACHEDIR.TAG. Set ownership and + permissions of CACHEDIR.TAG even if it already exists. + (process_manpath): Set ownership of database files even if they have not + been changed. + +2016-12-10 Colin Watson <cjwatson@debian.org> + + Make --disable-cache-owner imply --disable-setuid + + * m4/man-arg-setuid.m4: Set man_mode="755" if --disable-cache-owner was + given and neither --enable-setuid nor --disable-setuid was given. + +2016-12-10 Colin Watson <cjwatson@debian.org> + + Update manual for cache-owner/setuid changes + + * manual/intro.me (Arguments to configure): Add --enable-cache-owner and + --disable-cache-owner. Remove --enable-setuid[=ARG]. Adjust + description of --disable-setuid. + * manual/misc.me (Modes of operation): Add --disable-cache-owner to the + non-setuid modes. Mention --enable-setuid rather than + --enable-setuid=USER. + * README (Non-generic arguments to configure): Update. + +2016-12-10 Colin Watson <cjwatson@debian.org> + + Allocate dbpaths on the heap rather than the stack + + process_manpath's stack may have gone out of scope by the time cleanup + functions are called. + + * src/mandb.c (cleanup): Free dbpaths. + (process_manpath): Allocate dbpaths on the heap. + +2016-12-10 Colin Watson <cjwatson@debian.org> + + Handle cleanup stack more safely + + If push_cleanup was called unexpectedly between a + push_cleanup/pop_cleanup pair, then the pop_cleanup would remove the + wrong cleanup function and chaos could ensue. Avoid this by being more + precise about which cleanup function should be popped. + + * lib/cleanup.c (pop_cleanup): Take "fun" and "arg" arguments. Pop the + topmost matching function from the stack, rather than just the topmost + function. Update all callers and prototypes. + +2016-12-09 Colin Watson <cjwatson@debian.org> + + Upgrade config.guess/config.sub + + * build-aux/config.guess: Upgrade to 2016-10-02. + * build-aux/config.sub: Upgrade to 2016-11-04. + +2016-12-09 Colin Watson <cjwatson@debian.org> + + Separate cache owner from --enable-setuid option + + It's useful to have a notion of the cache owner even when man is not + installed setuid. --enable-setuid no longer takes an argument, and the + owner is now set by the --enable-cache-owner option instead. + + * m4/man-arg-cache-owner.m4: New file. + * m4/man-arg-setuid.m4: Stop accepting an argument. Only set man_mode, + not man_owner. + * configure.ac: Call MAN_ARG_CACHE_OWNER. + * src/Makefile.am (install-exec-hook): Only chown man and mandb if + man_mode is 4755 (as well as the existing test for man_owner being + non-empty). + +2016-11-21 Colin Watson <cjwatson@debian.org> + + Restore ylwrap to distribution + + * Makefile.in (am__DIST_COMMON): Regenerate to add build-aux/ylwrap back + again, since it mysteriously went missing in the last regeneration. + +2016-11-21 Colin Watson <cjwatson@debian.org> + + Update translation files + + * po/man-db.pot, po/*.po: Update. + +2016-11-21 Colin Watson <cjwatson@debian.org> + + Upgrade to Libtool 2.4.6-2 (from Debian) + +2016-11-21 Colin Watson <cjwatson@debian.org> + + Upgrade config.guess/config.sub + + * build-aux/config.guess: Upgrade to 2016-04-02. + * build-aux/config.sub: Upgrade to 2016-03-30. + +2016-11-20 Mihail Konev <k.mvc@ya.ru> + + src/tests: Fix testsuite + + * src/tests/man-9: Set MANPATH. + +2016-11-20 Mihail Konev <k.mvc@ya.ru> + + man(1): Fix gcc warnings + + * lib/xchown.c: New file. + * lib/xchown.h: New file. + * lib/Makefile.am (libman_la_SOURCES): Add xchown.c and xchown.h. + * po/POTFILES.in: Add lib/xchown.c. + * src/check_mandirs.c (mkcatdirs): Call xchown instead of chown. + * src/man.c (format_display): Ignore errors from chdir ("/"). + +2016-11-20 Colin Watson <cjwatson@debian.org> + + Make split_page_name allocate its own memory + + * src/man.c (split_page_name): Allocate *ret_name and *ret_section here. + Simplify using xstrdup and xstrndup. + (man): Remove allocation of page_name and page_section. + +2016-11-20 Mihail Konev <k.mvc@ya.ru> + + man(1): add .N names + + `man chmod.2` is now the same as `man 2 chmod` + + * src/man.c (split_page_name): New function. + (locate_page_in_manpath): New function. + (man): Factor out common locate_page loop into locate_page_in_manpath. + Add name/section splitting logic. + * src/tests/man-11: New file. + * src/tests/Makefile.am (ALL_TESTS): Add man-11. + * man/man1/man.man1 (SYNOPSIS): Document <page>.<section> form. + (EXAMPLES): Likewise. + +2016-10-04 Colin Watson <cjwatson@debian.org> + + Fix formatting error in Swedish translation + + * man/po4a/po/sv.po: Translate "\\(rq" as itself rather than as "\\(". + +2016-10-04 Colin Watson <cjwatson@debian.org> + + Rename some anomalous x* functions + + The usual (though not universal) pattern in gnulib is for xfoo to mean + "foo or exit". Rename x* to check_* so that they don't conflict with + this. + + * src/mandb.c (xremove): Rename to ... + (check_remove): ... this. + (xrename): Rename to ... + (check_rename): ... this. + (xchmod): Rename to ... + (check_chmod): ... this. + (xchown): Rename to ... + (check_chown): ... this. + +2016-05-16 Colin Watson <cjwatson@debian.org> + + man(1): Fix incorrect font + + * man/man1/man.man1 (SYNOPSIS): Make "--regex" bold. Thanks to Paul + Townsend. + * man/po4a/po/man-db-manpages.pot, man/po4a/po/*.po: Update; unfuzzy all + translations. + +2016-05-16 Colin Watson <cjwatson@debian.org> + + * man/po4a/po/man-db-manpages.pot, man/po4a/po/*.po: Update. + +2016-02-04 Colin Watson <cjwatson@debian.org> + + Note caveat with "man -K" + + * man/man1/man.man1 (Main modes of operation): Note that -K searches + page source. Fixes Debian bug #813665. + +2016-01-02 Sebastian Rasmussen <sebras@gmail.com> + + * po/sv.po: Add missing translator credit comment. + +2016-01-02 Colin Watson <cjwatson@debian.org> + + Fix warnings with Perl 5.22 + + * man/po4a/Locale/Po4a/Manext.pm (shiftline, translate): Escape braces + in regular expressions. + +2016-01-02 Colin Watson <cjwatson@debian.org> + + Add Swedish manual page translation + + * man/po4a/po/sv.po: New from Translation Project (thanks, Sebastian + Rasmussen). + * configure.ac (AC_CONFIG_FILES): Add man/sv/Makefile. + * man/LINGUAS.po4a: Add sv. + * man/Makefile.am (DIST_SUBDIRS): Add sv. + * man/sv/Makefile.am, man/sv/translator.add: New files. + * man/po4a/Makefile.am (POFILES): Add po/sv.po. + * man/po4a/po4a.cfg (po4a_langs): Add sv. + * man/THANKS: Add translator credit. + * .gitignore: Add man/sv/man1, man/sv/man5, and man/sv/man8. + +2015-12-31 Colin Watson <cjwatson@debian.org> + + Upgrade to pkg-config 0.29. + +2015-12-26 Sebastian Rasmussen <sebras@gmail.com> + + Update Swedish translation + + * po/sv.po: Update from Translation Project. + * man/THANKS: Add translator credit. + +2015-12-07 Colin Watson <cjwatson@debian.org> + + Simplify database path handling in mandb + + * src/mandb.c (struct dbpaths): Unconstify xtmpfile. + (finish_up): Free dbpaths->xtmpfile. + (cleanup): Update header comment. Remove unnecessary checks before + frees. Free all database paths for all database types, not just + GDBM. Free dbpaths->xtmpfile. + (mandb): Copy content of database to dbpaths->xtmpfile rather than + just copying the pointer. + +2015-12-07 Colin Watson <cjwatson@debian.org> + + Move some database paths out of global variables + + * src/mandb.c (struct dbpaths): New structure. + (finish_up, do_chown, cleanup_sigsafe, cleanup, mandb): Take dbpaths + argument. + (process_manpath): Allocate dbpaths on the stack, zero it, and pass + it to functions that need it. + +2015-12-07 Colin Watson <cjwatson@debian.org> + + Remove lots of unnecessary inline qualifiers + + It's 2015. The compiler almost certainly knows better than we do. + + * lib/security.c (gripe_set_euid): Remove inline qualifier. + * libdb/db_btree.c (btree_findkey): Likewise. + * libdb/mydbm.h (gdbm_exists): Likewise. + * src/catman.c (catman): Remove obsolete comment. + (add_arg, check_access): Remove inline qualifier. + * src/check_mandirs.c (add_dir_entries): Likewise. + * src/man.c (gripe_system, gripe_no_man, manopt_to_env, escape_less, + is_section, do_prompt, gripe_converting_name): Likewise. + * src/mandb.c (xremove, xrename, xchmod, finish_up, xchown, + do_chown, update_db_wrapper): Likewise. + * src/manp.c (gripe_reading_mp_config, gripe_stat_file, + gripe_not_directory, has_mandir, fsstnd): Likewise. + * src/whatis.c (do_whatis_section): Likewise. + +2015-11-06 Colin Watson <cjwatson@debian.org> + + Belatedly update NEWS date. + + * Version: 2.7.5. + + * NEWS: Document changes since 2.7.4. + +2015-11-06 Colin Watson <cjwatson@debian.org> + + Build text manual with LC_ALL=C + + nroff's UTF-8 output is a bit wonky in this case, but ASCII will do + fine. + + * manual/Makefile.am (.pp.cat): Set LC_ALL=C. + +2015-11-05 Colin Watson <cjwatson@debian.org> + + Disable roff input insertion with --recode + + Reported by Bjarni Ingi Gislason. Fixes Debian bug #751795. + + * src/man.c (display): Don't insert roff input for --no-hyphenation, + --no-justification, or locale macros when the --recode option is used. + +2015-11-05 Colin Watson <cjwatson@debian.org> + + Adjust line number when inserting extra roff input + + Reported by Bjarni Ingi Gislason. Fixes Debian bug #789219. + + * src/man.c (heirloom_line_length, disable_hyphenation, + disable_justification, locale_macros): Emit ".lf 1" after inserted roff + input. + * src/zsoelim.l: Accept .lf without a file name argument. + +2015-10-19 Colin Watson <cjwatson@debian.org> + + Make a mandb error message clearer + + * src/mandb.c (xcopy): Say which file name we failed to fopen. + +2015-10-08 Colin Watson <cjwatson@debian.org> + + Fix Plural-Forms header in Catalan translation + + * po/ca.po (Plural-Forms): Add missing semicolon. + +2015-10-08 Colin Watson <cjwatson@debian.org> + + * Version: 2.7.4. + +2015-10-08 Colin Watson <cjwatson@debian.org> + + man: Honour MANWIDTH in conjunction with -Z + + * src/man.c (get_roff_line_length): Also consider line_length if + ditroff is set. + (make_roff_command): Try add_roff_line_length regardless of troff. + The line length is passed to the macro package, not to the output + device, although get_roff_line_length will still sometimes not use + it (e.g. if using the "ps" device). Fixes Debian bug #801241. + * NEWS: Document this. + +2015-10-08 Colin Watson <cjwatson@debian.org> + + man: Exit 3 if formatter exits non-zero + + * src/man.c (format_display): Keep track of exit statuses from both + format_cmd and disp_cmd, and exit CHILD_FAIL if either is non-zero + and non-SIGPIPE. Fixes Debian bug #801261. + * NEWS: Document this. + +2015-09-22 Colin Watson <cjwatson@debian.org> + + Fix replace.sed prerequisite syntax + + Suffix rules may not have prerequisites. Thanks to Nikola Forró; fixes + Fedora bug #1263930. + + * man/Rules.man: Declare dependency of $(MANS) on replace.sed + separately rather than trying to do so in suffix rules. + * NEWS: Document this. + +2015-09-22 Colin Watson <cjwatson@debian.org> + + Fix crash in manpath deduplication + + * src/manp.c (create_pathlist): Handle NULL return from + canonicalize_file_name. + * NEWS: Document this. + +2015-09-22 Colin Watson <cjwatson@debian.org> + + Upgrade config.guess/config.sub + + * build-aux/config.guess, build-aux/config.sub: Upgrade to + 2015-08-20. + +2015-09-21 Nikola Forró <nforro@redhat.com> + + Fix typos in italian manpath man page + +2015-09-16 zwpwjwtz <zwpwjwtz@126.com> + + Update Simplified Chinese manual page translation + + * man/po4a/po/zh_CN.po: Update from Translation Project. + * man/THANKS: Add translator credit. + +2015-09-09 Colin Watson <cjwatson@debian.org> + + * Version: 2.7.3. + +2015-09-09 Colin Watson <cjwatson@debian.org> + + Pacify gcc -Wlogical-not-parentheses + + * src/man.c (find_cat_file): Add extra parentheses around + logical-not on the LHS of a comparison. + * lib/util.c (is_changed): Likewise in header comment. + +2015-09-09 OGAWA Hirofumi <hirofumi@mail.parknet.co.jp> + + Restore the ability to use 'man -a' noninteractively + + Fixes Debian bug #798094. + + * src/man.c (do_prompt): Return 0 immediately (i.e. view) if neither + stdin nor stdout is a tty. + * NEWS: Document this. + +2015-09-09 Mike Frysinger <vapier@gentoo.org> + + Fix crash when current directory is unreadable + + Fixes Savannah bug #45861. + + * src/man.c (make_display_command): Check have_cwd before trying to + use cwd. + * NEWS: Document this. + +2015-09-09 Colin Watson <cjwatson@debian.org> + + Document squeeze-blank-lines fix + + * NEWS: Document Rafael's squeeze-blank-lines fix. + +2015-09-09 Colin Watson <cjwatson@debian.org> + + Fix use-after-free in ult_src + + Reported by Hanno Boeck. Fixes Savannah bug #45854. + + * src/ult_src.c (ult_src): Take a copy of base when recursing rather + than passing it directly as the new name argument, since it may be + freed by the recursive call. + * NEWS: Document this. + +2015-09-09 Colin Watson <cjwatson@debian.org> + + Remove unnecessary check before free + + * src/ult_src.c (ult_src): Don't check whether base is non-NULL + before freeing it. + +2015-08-30 Rafael Kitover <rkitover@gmail.com> + + Squeeze blank lines internally instead of pager -s + + Add a pipecmd in make_display_command to combine multiple blank lines in + the output into one, which is what e.g. less -s does. + + Stop automatically appending -s to pager command in configure. + + Fixes Debian bug #796584. + + * configure.ac: Stop automatically appending -s to pager command. + * src/man.c (squeeze_blank_lines): New function. + (make_display_command): Add squeeze_blank_lines to display pipeline. + +2015-08-29 Colin Watson <cjwatson@debian.org> + + Make sure CACHEDIR.TAG has correct ownership + + * src/mandb.c (mandb): Change CACHEDIR.TAG's owner to + man_owner->pw_uid when running as root in global manpaths. + (process_manpath): Pass global_manpath to mandb. + +2015-08-29 Colin Watson <cjwatson@debian.org> + + Rewrite CACHEDIR.TAG and databases if they cannot be read + + Fixes Debian bug #797019. + + * src/mandb.c (mandb): Rewrite CACHEDIR.TAG and databases if they + cannot be read (probably due to incorrect ownership). + * NEWS: Document this. + +2015-08-22 Colin Watson <cjwatson@debian.org> + + Try to get terminal width from /dev/tty + + If man is running within something like lesspipe, then there may be + a current tty that neither stdin nor stdout points to. Try to get + hold of it using /dev/tty. Fixes Fedora bug #1255930. + + * lib/linelength.c (get_line_length): Try /dev/tty before either + stdout or stdin. + * NEWS: Document this. + +2015-08-16 Colin Watson <cjwatson@debian.org> + + * Version: 2.7.2. + +2015-08-16 Jordi Mallach <jordi@gnu.org> + + * po/ca.po: Update from Translation Project. + +2015-08-16 Colin Watson <cjwatson@debian.org> + + Upgrade to Automake 1:1.15-3 (from Debian). + + * NEWS: Document a couple more changes since 2.7.1. + +2015-08-02 Colin Watson <cjwatson@debian.org> + + Upgrade to Automake 1.15. + +2015-08-02 Colin Watson <cjwatson@debian.org> + + Fix inaccurate description of "man -f" + + It's equivalent to "whatis", not "whatis -r". Fixes Fedora + bug #1249377. + + * man/man1/man.man1 (EXAMPLES): "man -k" and "man -f" are equivalent to + "apropos" and "whatis" respectively, not "apropos -r" and "whatis -r". + * man/po4a/po/man-db-manpages.pot, man/po4a/po/*.po: Update; unfuzzy all + translations. + +2015-08-02 Lauri Nurmi <lanurmi@iki.fi> + + * po/fi.po: Update from Translation Project. + +2015-04-08 Colin Watson <cjwatson@debian.org> + + Allow using GDBM's NDBM compatibility layer + + This isn't very useful in practice since anyone using this could just + use GDBM directly instead, but it's helpful for testing. + + * configure.ac: Check for gdbm-ndbm.h and libgdbm_compat. + +2015-04-08 Colin Watson <cjwatson@debian.org> + + Clean up freeing of datum structures + + * libdb/mydbm.h (MYDBM_FREE): Remove. + (MYDBM_FREE_DPTR): New macro. This zeros the data pointer to avoid + double-free problems. + * libdb/db_delete.c (dbdelete): Use MYDBM_FREE_DPTR. + * libdb/db_gdbm.c (man_gdbm_open_wrapper, sortkey_hashtable_free): + Likewise. + * libdb/db_lookup.c (dblookup, dblookup_pattern): Likewise. + * libdb/db_store.c (dbstore): Likewise. + * libdb/db_ver.c (dbver_rd, dbver_wr): Likewise. + * src/accessdb.c (main): Likewise. + * src/catman.c (parse_for_sec): Likewise. + * src/check_mandirs.c (sanity_check_db, purge_pointers, purge_missing): + Likewise. + * src/whatis.c (do_apropos): Likewise. + +2015-04-08 Colin Watson <cjwatson@debian.org> + + Stop storing the database handle in a global variable + + Fixes Ubuntu bug #1304261. + + * libdb/db_delete.c (dbdelete): Take a dbf parameter. Update all + callers and prototypes. + * libdb/db_lookup.c (dblookup, dblookup_all, dblookup_exact, + dblookup_pattern): Likewise. + * libdb/db_store.c (replace_if_necessary, dbstore): Likewise. + * src/check_mandirs.c (test_manfile, add_dir_entries, sanity_check_db, + purge_pointers, purge_normal, purge_whatis): Likewise. + * src/descriptions_store.c (store_descriptions): Likewise. + * src/straycats.c (check_for_stray, open_catdir): Likewise. + * src/whatis.c (resolve_pointers, display, do_whatis_section, do_whatis, + do_apropos): Likewise. + + * src/accessdb.c (main): Declare dbf here rather than at file scope. + * src/catman.c (parse_for_sec): Likewise. + * src/check_mandirs.c (testmandirs, update_db_time, update_db, + purge_missing): Likewise. + * src/man.c (dbdelete_wrapper, try_db): Likewise. + * src/mandb.c (update_one_file): Likewise. + * src/straycats.c (straycats): Likewise. + * src/whatis.c (search): Likewise. + + * libdb/mydbm.h (dbf): Remove. + * src/catman.c (dbf): Rename to ... + (dbf_close_post_fork): ... this. + (rdopen_db): Merge into ... + (parse_for_sec): ... here. + +2015-03-05 Colin Watson <cjwatson@debian.org> + + man: Avoid dubious use of freopen to reopen base streams + + freopen doesn't actually work properly when base streams have been + closed (at least with glibc), and it seems better to simply refuse to + operate in such a non-conforming environment. + + * src/man.c (check_standard_fds): New function. + (main): Call it rather than using freopen. + +2014-11-16 Colin Watson <cjwatson@debian.org> + + Allow building from git without gnulib-tool + + Since we don't want to keep Gnulib translations in revision control, + we need gnulib-tool on $PATH when generating the build system in + order to fetch them, but it's unnecessarily awkward to require + everyone to have this just in order to build man-db from git. Allow + building without this, although it is still required for "make + dist". + + * configure.ac: No longer issue an error if gnulib/po/Makefile.in.in + is missing. Instead, set the Automake conditional HAVE_GNULIB_PO to + true if and only if gnulib/po/POTFILES.in exists, and only create + gnulib/po/Makefile.in if gnulib/po/Makefile.in.in exists. + * Makefile.am (SUBDIRS): Only include gnulib/po if HAVE_GNULIB_PO is + true. + +2014-11-14 Colin Watson <cjwatson@debian.org> + + apropos/whatis: Don't truncate names if long output was requested + + * src/whatis.c (display): Leave page_name intact if long_output is + true. Reported by Calle Erlandsson. + +2014-11-11 David Prévot <david@tilapin.org> + + * man/po4a/po/fr.po: Update from Translation Project. + +2014-11-08 Colin Watson <cjwatson@debian.org> + + Pass -l through to apropos/whatis + + Fixes Fedora bug #1161747. + + * src/man.c (do_extern): Pass the -l option through. + +2014-11-07 Colin Watson <cjwatson@debian.org> + + * Version: 2.7.1. + +2014-10-27 Colin Watson <cjwatson@debian.org> + + Send 'man -a' prompts to /dev/tty + + Fixes Debian bug #766113. + + * src/man.c (locale_macros): Write prompts to and read replies from + /dev/tty, rather than stderr and stdin respectively. + * NEWS: Document this. + +2014-10-27 Colin Watson <cjwatson@debian.org> + + Make man run correctly from a deleted directory + + Fixes Debian bug #764384. + + * gnulib: Import save-cwd module. + * src/man.c (make_display_command): Use pipecmd_fchdir rather than + pipecmd_chdir if the working directory was saved using a file + descriptor. + (format_display, main): Save current working directory using + save_cwd rather than xgetcwd. + (format_display, local_man_loop, main): Restore previous working + directory using restore_cwd rather than chdir. + * src/tests/man-10: New file. + * src/tests/Makefile.am (TESTS_ENVIRONMENT): Insert the parent + directory into $PATH using an absolute path rather than a relative + one. Export abs_top_builddir rather than top_builddir. + (ALL_TESTS): Add man-10. + * src/tests/testlib.sh (init): Set abstmpdir. Adjust tests to use + this where applicable. + (run): Call libtool using an absolute path. + (skip): Remove abstmpdir. + (finish): Remove abstmpdir rather than tmpdir. + * configure.ac: Require libpipeline >= 1.4.0. + * NEWS: Document this. + +2014-10-23 Colin Watson <cjwatson@debian.org> + + NEWS: Document recent Solaris portability changes + +2014-10-23 Colin Watson <cjwatson@debian.org> + + Fix linking of fspause on Solaris + + * src/tests/fspause.c (main): Set program_name. Patch by Peter Bray. + +2014-10-23 Colin Watson <cjwatson@debian.org> + + autogen.sh: Avoid "export VARIABLE=value" syntax + + Older Solaris shells do not support this. Patch by Peter Bray. + +2014-10-23 Colin Watson <cjwatson@debian.org> + + gnulib: Import strcasestr module. + + Suggested by Peter Bray. + +2014-10-05 Joe Hansen <joedalton2@yahoo.dk> + + * man/po4a/po/da.po: Update from Translation Project. + +2014-09-28 Colin Watson <cjwatson@debian.org> + + * Version: 2.7.0.2. + +2014-09-28 Colin Watson <cjwatson@debian.org> + + Work around lack of UTIME_* on GNU/Hurd + + * gnulib/fdutimens-hurd.patch: New file. + * autogen.sh: Apply gnulib/fdutimens-hurd.patch. + * NEWS: Document this. + +2014-09-27 Colin Watson <cjwatson@debian.org> + + Avoid using or double-closing closed database handles + + Thanks to Andreas Radke and Bruce Dubbs for reporting, and to + Andreas Radke for testing. + + * src/check_mandirs.c (testmandirs): Close dbf if necessary before + (re-)opening it. Zero out dbf after closing it. + (update_db_time, purge_missing): Zero out dbf after closing it. + * src/man.c (dbdelete_wrapper, try_db): Likewise. + * src/mandb.c (update_one_file): Likewise. + * src/straycats.c (straycats): Likewise. + * src/whatis.c (search): Likewise. + * NEWS: Document this. + +2014-09-24 Colin Watson <cjwatson@debian.org> + + * Version: 2.7.0.1. + + * Makefile.am (EXTRA_DIST): Add gnulib/m4/sockpfaf.m4. + +2014-09-24 Colin Watson <cjwatson@debian.org> + + Fix tests when build fs does not support high-precision timestamps + + * gnulib: Import nanosleep module. + * configure.ac: Remove STAT_HAS_NSEC substitution. + * src/tests/Makefile.am (TESTS_ENVIRONMENT): Stop exporting + STAT_HAS_NSEC. + (AM_CPPFLAGS, AM_CFLAGS, check_PROGRAMS, fspause_SOURCES, + fspause_LDADD): Add. + * src/tests/fspause.c: New file. + * src/tests/mandb-2, src/tests/mandb-3, src/tests/mandb-4, + src/tests/mandb-5: Call ./fspause rather than next_second. + * src/tests/testlib.sh (next_second): Remove. + * .gitignore: Add src/tests/.deps and src/tests/fspause. + * NEWS: Document this. + +2014-09-22 Colin Watson <cjwatson@debian.org> + + * Version: 2.7.0. + +2014-09-19 Yuri Kozlov <yuray@komyakino.ru> + + * man/po4a/po/ru.po: Update from Translation Project. + +2014-09-18 Mario Blättermann <mario.blaettermann@gmail.com> + + * man/po4a/po/de.po: Update from Translation Project. + +2014-09-18 Robert Luberda <robert@debian.org> + + * man/po4a/po/pl.po: Update from Translation Project. + +2014-09-18 Colin Watson <cjwatson@debian.org> + + Move zsoelim to pkglibexecdir + + This avoids clashes with other packages; for example, Slackware's groff + package installs zsoelim as a symlink to soelim. + + * src/Makefile.am (bin_PROGRAMS): Move zsoelim to ... + (pkglibexec_PROGRAMS): ... here. + (AM_CPPFLAGS): Adjust ZSOELIM definition to match. + * NEWS: Document this. + +2014-09-18 Colin Watson <cjwatson@debian.org> + + Rename SOELIM definition to ZSOELIM for clarity + + * src/Makefile.am (AM_CPPFLAGS): Define ZSOELIM rather than SOELIM. + * src/man.c (make_roff_command): Use ZSOELIM rather than SOELIM. + +2014-09-17 Colin Watson <cjwatson@debian.org> + + Make sure that generated shared libraries have no undefined symbols + + Based on a change found in + https://github.com/Alexpux/MSYS2-packages/tree/master/man-db. + + * lib/Makefile.am (libman_la_LDFLAGS): Add -no-undefined. + * libdb/Makefile.am (libmandb_la_LDFLAGS): Add -no-undefined. + +2014-09-17 Colin Watson <cjwatson@debian.org> + + Correct a couple of comments in m4/man-arg-*.m4 + + * m4/man-arg-automatic-update.m4: Correct header comment. + * m4/man-arg-systemdtmpfilesdir.m4: Likewise. + +2014-09-17 Colin Watson <cjwatson@debian.org> + + Fix "cannot adjust line" warning when formatting db.me + + * manual/db.me (Contents of an index database): Insert several + zero-width break points in descriptions of entry formats. + +2014-09-17 Colin Watson <cjwatson@debian.org> + + Show a better error message if no browser is configured + + Fixes Savannah bug #37814. + + * src/man.c (format_display): Adjust error message if html_pager is + NULL or the empty string. + * NEWS: Document this. + +2014-09-17 Colin Watson <cjwatson@debian.org> + + Don't store canonicalised versions of manpath elements + + We still compare canonicalised versions, but don't store them. + Storing them results in looking up the wrong catpath in the case + where one of the configured MANDB_MAP entries is a symlink. + + Broken by commit 01e5a4febfc7b6cd53991455315ae7744c8f31dd; fixes + Fedora bug #1043401. + + * src/manp.c (create_pathlist): Compare canonicalised versions of + manpath elements, but don't store them. + * NEWS: Document this. + +2014-09-16 Colin Watson <cjwatson@debian.org> + + Don't use pointed-to name as title for database-located pages + + For a pointer record, the pointed-from name is a legitimate alias + for the located page, and is likely to be closer to the name that + the user requested. + + Fixes Debian bug #709405. + + * src/man.c (display_database): Don't use the pointed-to name to + construct the title for display. + +2014-09-16 Colin Watson <cjwatson@debian.org> + + * Version: 2.7.0-pre1. + +2014-09-16 Colin Watson <cjwatson@debian.org> + + Fix distcheck following addition of systemd tmpfiles snippet + + * Makefile.am (AM_DISTCHECK_CONFIGURE_FLAGS): Add + --with-systemdtmpfilesdir=\$${prefix}/lib/tmpfiles.d. + +2014-09-16 Bjarni Ingi Gislason <bjarniig@rhi.hi.is> + + Formatting improvements to man(1) + + Fixes Debian bug #726266. + + * man/man1/man.man1: Protect "." at beginning or end of strings with + "\&". Start sentences on new lines. Insert italic corrections + between adjacent italic and roman characters. Use double quotation + marks around arguments rather than placing "\ " between strings. + * man/po4a/po/man-db-manpages.pot, man/po4a/po/*.po: Update. + +2014-09-16 Colin Watson <cjwatson@debian.org> + + Prioritise COLUMNS above TIOCGWINSZ + + Fixes Ubuntu bug #1315282. + + * lib/linelength.c (get_line_length): Prioritise COLUMNS above + TIOCGWINSZ. + * man/man1/apropos.man1 (DESCRIPTION): Describe new terminal width + priorities. + * man/man1/man.man1 (DESCRIPTION): Likewise. + * man/man1/whatis.man1 (DESCRIPTION): Likewise. + * man/po4a/po/man-db-manpages.pot, man/po4a/po/*.po: Update. + * NEWS: Document this. + +2014-09-16 Colin Watson <cjwatson@debian.org> + + Use xnrealloc rather than xrealloc in a few more places + + * src/catman.c (parse_opt): Use xnrealloc rather than xrealloc. + * src/globbing.c (update_directory_cache): Likewise. + * src/ult_src.c (ult_trace): Likewise. + +2014-09-16 Colin Watson <cjwatson@debian.org> + + Order files by first physical extent before reading + + Inspired by a similar change in dpkg. This takes 'mandb -c' from + 104 to 32 seconds in a test installation, and 'man -K' from 74 to 38 + seconds. On non-Linux systems where FIEMAP is not available, use + posix_fadvise instead to preload files. + + Fixes Debian bug #574410. + + * gnulib: Import nonblocking and openat modules. + * configure.ac: Check for <linux/fiemap.h> and posix_fadvise. + * lib/orderfiles.c: New file. + * lib/orderfiles.h: New file. + * lib/Makefile.am (libman_la_SOURCES): Add orderfiles.c and + orderfiles.h. + * src/check_mandirs.c (add_dir_entries): Order files before reading + them. + * src/man.c (try_section, do_global_apropos_section): Likewise. + * src/straycats.c (check_for_stray): Likewise. + * NEWS: Document this. + +2014-09-16 Colin Watson <cjwatson@debian.org> + + * NEWS: Document a couple more changes since 2.6.7.1. + +2014-09-16 Colin Watson <cjwatson@debian.org> + + Merge convert_name into man.c + + * src/convert_name.c (gripe_converting_name): Move to ... + * src/man.c (gripe_converting_name): ... here. + * src/convert_name.c (convert_name): Move to ... + * src/man.c (convert_name): ... here. Make static. + * src/convert_name.h: Remove. + * src/Makefile.am (man_SOURCES): Remove convert_name.c and + convert_name.h. + * po/POTFILES.in: Remove src/convert_name.c. + * po/man-db.pot, po/*.po: Update. + +2014-09-16 Colin Watson <cjwatson@debian.org> + + * tools/README: Update heading to reflect moves to build-aux. + +2014-09-16 Colin Watson <cjwatson@debian.org> + + Make a few libdb functions static + + * libdb/db_lookup.c (copy_if_set, split_data): Make static. + (make_content): Move to ... + * libdb/db_store.c (make_content): ... here. Make static. + * libdb/db_storage.h (split_data, make_content, copy_if_set): Remove + prototypes. + +2014-09-16 Colin Watson <cjwatson@debian.org> + + Make various functions static + + These functions are only used within the same compilation unit, so + have no need for external linkage. + + * src/check_mandirs.c (sanity_check_db): Make static. + * src/mandb.c (is_lang_dir, tried_catdirs_free, purge_catdir, + purge_catsubdirs, purge_catdirs): Likewise. + * src/zsoelim.l (try_compressed): Likewise. + +2014-09-16 Colin Watson <cjwatson@debian.org> + + Remove unused code in lexgrog + + * src/lexgrog.l (rule_profile): Remove unused function and + associated global declarations. + +2014-09-16 Colin Watson <cjwatson@debian.org> + + Reorder functions in man to remove need for header file + + man.h was only needed because of some poor function ordering in man.c. + Reorder functions so that definition comes before use, except in one + case of mutual recursion. + + * src/man.c (main): Move to end of file. + (local_man_loop): Move to immediately before man. + (man): Add a prototype declaration just before local_man_loop, to + cope with mutual recursion. + (do_prompt): Move to immediately above display. + * src/man.h: Remove. + * src/Makefile.am (man_SOURCES): Remove man.h. + +2014-09-15 Colin Watson <cjwatson@debian.org> + + Move argument handling out of configure to new MAN_ARG_* macros + + * m4/man-arg-automatic-create.m4, m4/man-arg-automatic-update.m4, + m4/man-arg-cats.m4, m4/man-arg-config-file.m4, m4/man-arg-db.m4, + m4/man-arg-device.m4, m4/man-arg-mandirs.m4, + m4/man-arg-override-dir.m4, m4/man-arg-sections.m4, + m4/man-arg-setuid.m4, m4/man-arg-systemdtmpfilesdir.m4, + m4/man-arg-undoc.m4: New files. + * configure.ac: Call new macros rather than inlining argument + handling. + +2014-09-15 Colin Watson <cjwatson@debian.org> + + * build-aux/config.sub: Upgrade to 2014-09-11. + +2014-09-13 Colin Watson <cjwatson@debian.org> + + Simplify <dirent.h> handling using Gnulib + + * gnulib: Import dirent module. + * configure.ac: Remove obsolescent AC_HEADER_DIRENT macro. + * src/check_mandirs.c: Simplify a large conditional block to + "#include <dirent.h>". + * src/straycats.c: Likewise. + * src/ult_src.c: Likewise. + +2014-09-13 Colin Watson <cjwatson@debian.org> + + Remove old and broken FAST_BTREE code + + This was marked as experimental and broken when I took over man-db + 13 years ago, and I've hardly touched it. There's no point in + keeping it around. + + * include/manconfig.h.in (FAST_BTREE): Remove commented definition. + * libdb/db_btree.c (test_insert, gripe_get, dbstore, dblookup): + Remove. + (btree_flopen): Expand B_FLAGS macro. + (btree_replace): Remove FAST_BTREE case. + * libdb/db_lookup.c (dblookup): Define unconditionally. + * libdb/db_store.c (dbstore): Likewise. + +2014-09-11 Colin Watson <cjwatson@debian.org> + + Speed up the test suite if we have high-precision file timestamps + + * configure.ac: Substitute STAT_HAS_NSEC as "yes" or "no" depending + on whether high-precision file timestamps are available. + * src/tests/Makefile.am (TESTS_ENVIRONMENT): Export STAT_HAS_NSEC to + tests. + * src/tests/testlib.sh (next_second): Do nothing if STAT_HAS_NSEC is + "yes". + +2014-09-11 Colin Watson <cjwatson@debian.org> + + Use high-precision timestamps for manual pages + + * lib/util.c (is_changed): Compare high-precision timestamps. + * libdb/db_storage.h (FIELDS): Increment to 10. + (struct mandata): Change "time_t _st_mtime" to "struct timespec + mtime". + * libdb/db_lookup.c (dbprintf): Update mtime display. + (split_content): Store two fields for the mtime (seconds and + nanoseconds). + (make_content): Expect two fields for the mtime. + * libdb/db_store.c (replace_if_necessary): Compare high-precision + timestamps. + * src/check_mandirs.c (test_manfile): Likewise. + * src/man.c (maybe_update_file): Likewise. + * src/straycats.c (check_for_stray): Update initialisation of struct + mandata. + * src/tests/testlib.sh (accessdb_filter): Adjust for new format. + * manual/db.me (Contents of an index database): Describe new format. + (Example database): Update example output. + * NEWS: Document this. + +2014-09-10 Colin Watson <cjwatson@debian.org> + + Move database mtime out of the database into file metadata + + This makes the database reproducible between installations, as long + as the underlying database has predictable behaviour and the set of + installed manual pages (including their timestamps) remains + identical. As a bonus, we now use high-precision times in several + places. + + Fixes Debian bug #760895. + + * gnulib: Import futimens and timespec modules. + * libdb/db_btree.c (btree_get_time, btree_set_time): New functions. + * libdb/db_gdbm.c (man_gdbm_get_time, man_gdbm_set_time): New + functions. + * libdb/db_ndbm.c (ndbm_get_time, ndbm_set_time): New functions. + * libdb/mydbm.h (man_gdbm_get_time, man_gdbm_set_time, + ndbm_get_time, ndbm_set_time, btree_get_time, btree_set_time): Add + prototypes. + (MYDBM_GET_TIME, MYDBM_SET_TIME): New macros. + * src/check_mandirs.c (testmandirs, create_db, count_glob_matches, + purge_normal, purge_whatis, purge_missing): Use high-precision + times. + (update_db_time): Set file modification times rather than updating a + database row. + (create_db, purge_missing): Get database file modification times + rather than fetching a database row. + (purge_missing): If the new will_run_mandb argument is true, reset + the database mtime to its value before purging; this ensures that + mandb will still run as expected afterwards. + * src/check_mandirs.h (purge_missing): Update prototype. + * src/mandb.c (xcopy): Copy access and modification times. + (process_manpath): Work out in advance of purging whether we will + need to run mandb, and pass that to purge_missing. + * include/manconfig.h.in (VER_ID): Bump to 2.5.0. + (KEY): Remove. + + * man/man8/accessdb.man8 (DESCRIPTION), man/it/man8/accessdb.man8 + (DESCRIZIONE): Remove sample output, as it is of limited usefulness + compared to how awkward it is to maintain, especially in text + intended for translation. + * man/po4a/po/man-db-manpages.pot, man/po4a/po/*.po: Update. + * manual/db.me (Contents of an index database): Remove mention of + $mtime$. + (Example database): Remove $mtime$. Update $version. + + * NEWS: Document this. Bump version to 2.7.0 to correspond to the + database version change. + +2014-09-09 Colin Watson <cjwatson@debian.org> + + Make update_db_time static + + * src/check_mandirs.c (update_db_time): Make this static; its only + uses are within the same file. + * src/check_mandirs.h (update_db_time): Remove prototype. + +2014-09-09 Colin Watson <cjwatson@debian.org> + + Remove unused reset_db_mtime function + + * src/check_mandirs.c (reset_db_mtime): Remove. This function has + been unused since man-db 2.4.2. + * src/check_mandirs.h (reset_db_mtime): Remove prototype. + * src/man.c: Stop including "check_mandirs.h". + +2014-09-09 Colin Watson <cjwatson@debian.org> + + Don't purge entries from databases that fail sanity checks + + * src/check_mandirs.c (purge_missing): Return early if + sanity_check_db fails, for instance in the case of a version + mismatch. + +2014-09-09 Colin Watson <cjwatson@debian.org> + + Switch away from obsolescent utime function + + POSIX.1-2008 marks utime as obsolescent. Switch to variants of the + futimens/utimensat family instead, via Gnulib. Use higher-precision + times for cat pages. + + * gnulib: Import stat-time and utimens modules. + * src/man.c (man_modtime): Change type to struct timespec. + (commit_tmp_cat): Use utimens rather than utime. + (display): Store a higher-precision modification timestamp for + man_file. + +2014-09-09 Colin Watson <cjwatson@debian.org> + + catman: Honour program name transformations + + * src/catman.c (parse_for_sec): Execute MAN rather than "man". + +2014-09-09 Colin Watson <cjwatson@debian.org> + + * man/po4a/po/da.po: Fix po4a syntax error. + +2014-09-09 Colin Watson <cjwatson@debian.org> + + Various autotools upgrades + + * aclocal.m4: Upgrade to pkg-config 0.28. + * build-aux/config.guess: Upgrade to 2014-03-23. + * build-aux/config.sub: Upgrade to 2014-05-01. + * build-aux/ltmain.sh: Upgrade to Libtool 2.4.2-1.10 (from Debian). + +2014-08-30 Joe Hansen <joedalton2@yahoo.dk> + + * man/po4a/po/da.po: Update from Translation Project. + +2014-08-12 Arif E. Nugroho <arif_endro@yahoo.com> + + * man/po4a/po/id.po: Update from Translation Project. + +2014-08-11 Arif E. Nugroho <arif_endro@yahoo.com> + + * po/id.po: Update from Translation Project. + +2014-06-18 Colin Watson <cjwatson@debian.org> + + Fix cat page parsing (Debian bug #751934) + + * src/lexgrog.l (find_name): Run "col -b -p -x" over cat pages if + possible before parsing them. + +2014-06-17 Colin Watson <cjwatson@debian.org> + + Add systemd tmpfiles snippet to clean up old cat files after a week + + Fixes Fedora bug #1110274. + + * configure.ac: Accept --with-systemdtmpfilesdir option. + (AC_CONFIG_FILES): Add init/Makefile and init/systemd/Makefile. + * Makefile.am (SUBDIRS): Add init. + * init/Makefile.am: New file. + * init/systemd/Makefile.am: New file. + * init/systemd/man-db.conf: New file. + * .gitignore: Add init/Makefile and init/systemd/Makefile. + +2014-06-17 Colin Watson <cjwatson@debian.org> + + Squash false positive from -Wmaybe-uninitialized + + * src/globbing.c: Initialise pattern_start. + +2014-04-10 Colin Watson <cjwatson@debian.org> + + * Version: 2.6.7.1. + +2014-04-10 Colin Watson <cjwatson@debian.org> + + Remove test suite dependency on realpath(1) + + * src/tests/mandb-7: Prepend "$(pwd -P)/" to $tmpdir in + configuration files rather than calling realpath. + * NEWS: Document this. + +2014-04-10 Colin Watson <cjwatson@debian.org> + + * Version: 2.6.7. + + * Makefile.am (EXTRA_DIST): Add gnulib/argp-domain.patch. + +2014-04-10 Peter Schiffer <pschiffe@redhat.com> + + Only create a cache directory tag if catpath != manpath + + * src/mandb.c (mandb): Don't create CACHEDIR.TAG if the catpath is + equal to the manpath. + * src/tests/mandb-7: New file. + * src/tests/Makefile.am (ALL_TESTS): Add mandb-7. + * NEWS: Document this. + +2014-04-10 Colin Watson <cjwatson@debian.org> + + Make cache directory tag creation more readable + + * src/mandb.c (mandb): Move cache directory tag string to ... + (CACHEDIR_TAG): ... here (new macro). + +2014-03-26 Colin Watson <cjwatson@debian.org> + + Run the pager in man's original working directory + + Reported by Peng Yu. + + * src/man.c (make_display_command): Set pager_cmd's working + directory to man's original working directory. + * configure.ac: Require libpipeline >= 1.3.0. + * NEWS: Document this. + +2014-03-26 Colin Watson <cjwatson@debian.org> + + Upgrade to Automake 1:1.14.1-3 (from Debian). + +2014-03-20 Mario Blättermann <mario.blaettermann@gmail.com> + + Update German manual page translation + + * man/po4a/po/de.po: Update from Translation Project. + * man/THANKS: Add translator credit. + +2014-03-17 Robert Luberda <robert@debian.org> + + * man/po4a/po/pl.po: Update from Translation Project. + +2014-02-20 Colin Watson <cjwatson@debian.org> + + Move Autotools auxiliary build files from tools to build-aux. + + This keeps man-db's own tools separate, reducing confusion, and + "build-aux" is a more conventional location for the Autotools files. + +2014-02-18 Colin Watson <cjwatson@debian.org> + + Upgrade to Gnulib 20140202 and Libtool 2.4.2-1.7 (from Debian). + + * lib/appendstr.c (appendstr): Use size_t type for string lengths. + +2014-01-23 Colin Watson <cjwatson@debian.org> + + Improve compatibility with archaic shells + + * src/tests/man-5: Assign and export shell variables in two steps, + for improved compatibility with some archaic shells. + * src/tests/man-7: Likewise. + * src/tests/man-8: Likewise. + * src/tests/zsoelim-1: Likewise. + +2014-01-23 Colin Watson <cjwatson@debian.org> + + Fix test failure with --enable-undoc + + * src/man.c (gripe_no_man): Don't print "See ... for help" message + when MAN_TEST_DISABLE_UNDOCUMENTED is set in the environment. + * src/tests/man-7: Export MAN_TEST_DISABLE_UNDOCUMENTED=1. + * NEWS: Document this. + +2014-01-23 Colin Watson <cjwatson@debian.org> + + * Version: 2.6.6. + + * man/po4a/Makefile.am (all-local): Make staging files writeable. + + * README: Update copyright to 2014. + +2014-01-23 Colin Watson <cjwatson@debian.org> + + Tidy up override directory support slightly + + * src/manp.c (insert_override_dir): Drop braces. + (get_manpath_from_path): Standardise whitespace. + * src/tests/Makefile.am (TESTS_ENVIRONMENT): Use Automake-generated + substitution rather than substituting @override_dir@ again. + +2014-01-23 Peter Schiffer <pschiffe@redhat.com> + + 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. + +2014-01-23 Colin Watson <cjwatson@debian.org> + + Upgrade to Automake 1.14.1 and Libtool 2.4.2-1.6 (from Debian). + +2014-01-19 Akihiro Sagawa <sagawa.aki@gmail.com> + + Fix macro and hyphenation language handling + + * src/man.c (display): Don't free page_lang if it's going to be used + by locale_macros. + * src/tests/man-8: New file. + * src/tests/Makefile.am (ALL_TESTS): Add man-8. + * NEWS: Document this. + +2014-01-19 David Prévot <david@tilapin.org> + + * man/po4a/po/fr.po: Update from Translation Project. + +2014-01-18 Joe Hansen <joedalton2@yahoo.dk> + + * man/po4a/po/da.po: Update from Translation Project. + +2014-01-16 Yuri Kozlov <yuray@komyakino.ru> + + * man/po4a/po/ru.po: Update from Translation Project. + +2014-01-16 Colin Watson <cjwatson@debian.org> + + * Version: 2.6.6-pre2. + +2014-01-16 Мирослав Николић <miroslavnikolic@rocketmail.com> + + Add Serbian translation + + * po/sr.po: New from Translation Project. + * po/LINGUAS: Add sr. + * man/THANKS: Add translator credit. + +2014-01-15 Colin Watson <cjwatson@debian.org> + + * man/po4a/po: Update. + +2014-01-15 Peter Schiffer <pschiffe@redhat.com> + + Synchronise manual pages with usage messages + + * man/man1/apropos.man1 (SYNOPSIS): Replace -h with -?. + (OPTIONS): Likewise. Add --usage. + * man/man1/lexgrog.man1 (SYNOPSIS): Add -d. Replace -h with -?. + (OPTIONS): Likewise. Add --usage. + * man/man1/man.man1 (SYNOPSIS): Replace -h with -?. + (OPTIONS): Likewise. Add --path (alias for -w). Add --usage. + * man/man1/manpath.man1 (SYNOPSIS): Replace -h with -?. + (OPTIONS): Likewise. Add --usage. + * man/man1/whatis.man1 (SYNOPSIS): Replace -h with -?. + (OPTIONS): Likewise. Add --usage. + * man/man8/accessdb.man8 (SYNOPSIS): Add -d. Replace -h with -?. + (OPTIONS): Likewise. Add --usage. + * man/man8/catman.man8 (SYNOPSIS): Replace -h with -?. + (OPTIONS): Likewise. Add --usage. + * man/man8/mandb.man8 (SYNOPSIS): Replace -h with -?. + (OPTIONS): Likewise. Add --usage. + +2014-01-15 Colin Watson <cjwatson@debian.org> + + Fix memory leaks related to make_filename + + * src/check_mandirs.c (test_manfile): Remove now-redundant stat. + Free abs_filename. + * src/man.c (display_filesystem): Consolidate return paths. + Consistently free filename. + (display_database): Free file after using it. + (maybe_update_file): Likewise. + +2014-01-15 Peter Schiffer <pschiffe@redhat.com> + + Silence error messages for stale database entries (Fedora bug #841431) + + * src/filenames.c (make_filename): Return NULL if the resulting file + is not readable. Update all callers to handle NULL returns. + * src/tests/man-7: New file. + * src/tests/Makefile.am (ALL_TESTS): Add man-7. + * NEWS: Document this. + +2014-01-15 Colin Watson <cjwatson@debian.org> + + * src/tests/man-5, src/tests/man-6: Mark executable. + +2014-01-13 Robert Luberda <robert@debian.org> + + * man/po4a/po/pl.po: Update from Translation Project. + +2014-01-13 Colin Watson <cjwatson@debian.org> + + Fix domain handling in argp + + * gnulib/argp-domain.patch: New file. + * autogen.sh: Apply gnulib/argp-domain.patch. + * NEWS: Document this. + +2014-01-12 Trần Ngọc Quân <vnwildman@gmail.com> + + * po/vi.po: Update from Translation Project. + +2014-01-11 David Prévot <david@tilapin.org> + + * man/po4a/po/fr.po: Update from Translation Project. + +2014-01-11 Yuri Kozlov <yuray@komyakino.ru> + + * man/po4a/po/ru.po: Update from Translation Project. + +2014-01-10 Colin Watson <cjwatson@debian.org> + + * Version: 2.6.6-pre1. + +2014-01-10 Colin Watson <cjwatson@debian.org> + + Don't update man/po4a/po/ when nothing has changed + + * man/po4a/Makefile.am (DOMAIN): New variable. + (EXTRA_DIST): Use $(DOMAIN). + (STAGING): New variable. + (PO4A_ARGS): Set new "podir" variable. + (RUN_PO4A): New variable. + (all-local): Abbreviate using RUN_PO4A. Copy POT/PO files to + $(STAGING) before running po4a, to avoid updating the master files. + (update-po): Move to ... + (update-po-real): ... here. Abbreviate using RUN_PO4A. Add + --force, since this target is only called when we really want to + update. Copy POT/PO files to $(STAGING) before running po4a, and + only copy them back if the POT file has changed by more than just + the POT-Creation-Date. + (update-po): New rule. Call update-po-real if and only if srcdir = + builddir. + (clean-local): New rule. Remove $(STAGING). + * man/po4a/po4a.cfg (po4a_paths): Refer to $(podir) rather than + $(srcdir)/po4a/po. + * release.sh: Stop removing man/po4a/po/man-db-manpages.pot; this + should no longer be necessary. + +2014-01-03 victory <victory.deb@gmail.com> + + * po/ja.po: Update from Translation Project. + +2013-12-09 Colin Watson <cjwatson@debian.org> + + Make it easier to prove that catman option parsing is safe + + * src/catman.c (parse_opt): Check sections before assigning to + sections[i]. (Already always safe, but this makes it easier to + prove.) + +2013-12-09 Colin Watson <cjwatson@debian.org> + + Update documentation for git. + + * docs/HACKING (Sending patches): Suggest 'git diff'. + (Revision control): Update for git. Remove comment about + ChangeLog handling for branches. + * NEWS: Document switch to git. + +2013-12-09 Colin Watson <cjwatson@debian.org> + + gnulib: Import gnupload module. + +2013-12-09 Colin Watson <cjwatson@debian.org> + + Automatically generate ChangeLog from git + + * ChangeLog: Move to ... + * ChangeLog-2013: ... here. + * Makefile.am (EXTRA_DIST): Add ChangeLog-2013. + (dist-hook): Add gen-ChangeLog. + (gen-ChangeLog): New rule, based on that in coreutils. + * gnulib: Import gitlog-to-changelog module. |