summaryrefslogtreecommitdiffstats
path: root/ChangeLog
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 19:37:10 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 19:37:10 +0000
commitc9addba5cc770d2d231b34f6739f32c6be8690f1 (patch)
treec643da154a95a1d163137135050bb47858a1654e /ChangeLog
parentInitial commit. (diff)
downloadman-db-c9addba5cc770d2d231b34f6739f32c6be8690f1.tar.xz
man-db-c9addba5cc770d2d231b34f6739f32c6be8690f1.zip
Adding upstream version 2.12.0.upstream/2.12.0
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'ChangeLog')
-rw-r--r--ChangeLog8824
1 files changed, 8824 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
new file mode 100644
index 0000000..550c635
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1,8824 @@
+2023-09-23 Colin Watson <cjwatson@debian.org>
+
+ Release man-db 2.12.0
+
+2023-09-19 Colin Watson <cjwatson@debian.org>
+
+ systemd: Avoid duplicate cleanup of old cat pages
+
+ Thanks to Ferenc Wágner. Fixes https://bugs.debian.org/1052221.
+
+ * init/systemd/man-db.service.in: Remove call to `find`; this is already
+ handled equivalently by `init/systemd/man-db.conf.in`, and having both
+ can result in error messages due to the two cleanups running
+ concurrently.
+ * NEWS.md: Document this.
+
+2023-08-20 Colin Watson <cjwatson@debian.org>
+
+ bootstrap: Make --skip-po disable Gnulib downloads too
+
+ Fixes https://bugs.debian.org/1050089.
+
+ * bootstrap.conf: If the `--skip-po` option is explicitly passed, then
+ don't pass `--po-base` or `--po-domain` options to `gnulib-tool`, and
+ don't merge `gl/ref-po/` into `gl/po/`.
+
+2023-08-07 Colin Watson <cjwatson@debian.org>
+
+ README.md: Update my copyright notice
+
+2023-08-07 Colin Watson <cjwatson@debian.org>
+
+ Update URLs for libpipeline and flex
+
+ * NEWS.md, docs/INSTALL.quick: Update libpipeline URLs to
+ <https://libpipeline.gitlab.io/libpipeline/>.
+ * docs/INSTALL.quick: Update flex URL to
+ <https://github.com/westes/flex>.
+
+2023-08-07 Colin Watson <cjwatson@debian.org>
+
+ Update to Gnulib stable-202307 as of 20230728
+
+ * bootstrap.conf (GNULIB_REVISION): Set to
+ d1b40e09c9c04d5c1ff120373397c6180bc16beb.
+
+2023-08-07 Colin Watson <cjwatson@debian.org>
+
+ Update syscall lists from systemd ab9617a766
+
+ * lib/sandbox.c (make_seccomp_filter): Add `futex_waitv`,
+ `riscv_hwprobe`, and `arm_fadvise64_64`.
+
+2023-08-07 Petr Pisar <petr.pisar@atlas.cz>
+
+ Update Czech translation
+
+ * po/cs.po: Update from Translation Project.
+
+2023-08-07 Mario Blättermann <mario.blaettermann@gmail.com>
+
+ Update German manual page translation
+
+ * man/po4a/po/de.po: Update from Translation Project.
+
+2023-08-07 Boyuan Yang <073plan@gmail.com>
+
+ Update Simplified Chinese manual page translation
+
+ * man/po4a/po/zh_CN.po: Update from Translation Project.
+
+2023-08-07 Boyuan Yang <073plan@gmail.com>
+
+ Update Simplified Chinese translation
+
+ * po/zh_CN.po: Update from Translation Project.
+
+2023-08-07 Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>
+
+ Update Romanian manual page translation
+
+ * man/po4a/po/ro.po: Update from Translation Project.
+
+2023-08-07 Seong-ho Cho <darkcircle.0426@gmail.com>
+
+ Update Korean manual page translation
+
+ * man/po4a/po/ko.po: Update from Translation Project.
+
+2023-08-07 Seong-ho Cho <darkcircle.0426@gmail.com>
+
+ Update Korean translation
+
+ * po/ko.po: Update from Translation Project.
+
+2023-08-06 Colin Watson <cjwatson@debian.org>
+
+ Release man-db 2.12.0-pre2
+
+2023-08-06 Colin Watson <cjwatson@debian.org>
+
+ Update translation files
+
+ * man/po4a/po/*.pot, man/po4a/po/*.po, po/*.pot, po/*.po: Update.
+
+2023-08-06 Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>
+
+ Update Romanian manual page translation
+
+ * man/po4a/po/ro.po: Update from Translation Project.
+
+2023-08-06 Colin Watson <cjwatson@debian.org>
+
+ man(1): Document handling of file names without -l more accurately
+
+ Fixes https://gitlab.com/man-db/man-db/-/issues/18.
+
+ * man/man1/man.man1: Without `-l`, we only fall back to interpreting
+ arguments as local file names if they contain a slash. Explain this
+ more accurately.
+ * NEWS.md: Document this.
+
+2023-08-06 Colin Watson <cjwatson@chiark.greenend.org.uk>
+
+ Merge branch 'cjwatson/man-negative-warnings' into 'main'
+
+ man: Allow disabling warnings enabled by default in groff
+
+ See merge request man-db/man-db!8
+
+2023-08-06 Colin Watson <cjwatson@chiark.greenend.org.uk>
+
+ man: Allow disabling warnings enabled by default in groff
+
+2023-08-06 Colin Watson <cjwatson@debian.org>
+
+ man(1): Fix typography in STANDARDS
+
+ Reported by Mario Blättermann.
+
+ * man/man/man.man1 (STANDARDS): Use `\-`, not a mix of Unicode hyphens
+ and unescaped ASCII hyphens.
+ * man/po4a/po/*.pot, man/po4a/po/*.po: Update.
+
+2023-08-06 Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>
+
+ Update Romanian translation
+
+ * po/ro.po: Update from Translation Project.
+
+2023-08-06 Mario Blättermann <mario.blaettermann@gmail.com>
+
+ Update German manual page translation
+
+ * man/po4a/po/de.po: Update from Translation Project.
+
+2023-08-06 Mario Blättermann <mario.blaettermann@gmail.com>
+
+ Update German translation
+
+ * po/de.po: Update from Translation Project.
+
+2023-08-06 Yi-Jyun Pan <pan93412@gmail.com>
+
+ Update Traditional Chinese translation
+
+ * po/zh_TW.po: Update from Translation Project.
+
+2023-08-06 Colin Watson <cjwatson@debian.org>
+
+ Declare variable as const
+
+ * lib/util.c (init_locale): Declare `locale` as const.
+
+2023-08-06 Colin Watson <cjwatson@chiark.greenend.org.uk>
+
+ Merge branch 'guess_manpath_fix' into 'main'
+
+ Fixed add_man_subdirs to correctly add PATH elements with trailing paths
+
+ See merge request man-db/man-db!10
+
+2023-08-06 Jan Seeger <jan.seeger@thenybble.de>
+
+ Fixed add_man_subdirs to correctly add PATH elements with trailing paths
+
+2023-08-06 Colin Watson <cjwatson@debian.org>
+
+ Release man-db 2.12.0-pre1
+
+ * man/po4a/po/*.pot, man/po4a/po/*.po, po/man-db.pot, po/*.po: Update.
+ * NEWS.md: Bump next version to 2.12.0.
+ * configure.ac: Update version and date.
+
+2023-08-06 Colin Watson <cjwatson@debian.org>
+
+ Always pass a line length to nroff
+
+ Fixes https://bugs.debian.org/1041704.
+
+ * src/man.c (get_roff_line_length): Remove `line_length != 80`
+ condition.
+ * NEWS.md: Document this.
+
+2023-08-01 Colin Watson <cjwatson@chiark.greenend.org.uk>
+
+ Merge branch 'branden-lexgrog-thinko' into 'main'
+
+ lexgrog.1: Fix thinko in my recent contribution
+
+ See merge request man-db/man-db!9
+
+2023-07-28 G. Branden Robinson <g.branden.robinson@gmail.com>
+
+ lexgrog.1: Fix thinko in my recent contribution
+
+ In commit bbf7701c4f, 19 July, I got the sense of the tests that
+ governed the macro definitions backwards. I fooled myself because I use
+ a more complex test in groff's an-ext.tmac file (written in a
+ non-intuitive way due to AT&T troff limitations) so that it's easy to
+ run groff's automated tests on them.
+
+2023-07-22 Colin Watson <cjwatson@debian.org>
+
+ Ensure that time_t can go past 2038
+
+ * bootstrap.conf (gnulib_modules): Add `year2038-recommended`.
+ * NEWS.md: Document this.
+
+2023-07-22 Colin Watson <cjwatson@debian.org>
+
+ man: Pass --regex/--wildcard on to whatis/apropos
+
+ Fixes https://gitlab.com/man-db/man-db/-/issues/13.
+
+ * src/man.c (do_extern): Pass `-r` or `-w` options to the external
+ program if necessary.
+ * man/man1/man.man1 (Main modes of operation): Document that `-f` and
+ `-k` are still only approximately equivalent to `whatis` and `apropos`
+ respectively (since `man` accepts slightly different options).
+ * NEWS.md: Document this.
+
+2023-07-22 Colin Watson <cjwatson@debian.org>
+
+ Update pre-commit hooks
+
+ * .pre-commit-config.yaml (shellcheck-py): Update to v0.9.0.5.
+
+2023-07-22 Colin Watson <cjwatson@debian.org>
+
+ Upgrade to Gnulib stable-202307
+
+ * bootstrap: Sync to Gnulib b7f7ed06961454cdf77b93c6c00c3e3f26202663.
+ * bootstrap.conf (GNULIB_REVISION): Set to
+ b7f7ed06961454cdf77b93c6c00c3e3f26202663.
+ * src/tests/Makefile.am (fspause_LDADD): Link with `$(NANOSLEEP_LIB)`
+ instead of `$(LIB_NANOSLEEP)`.
+ * NEWS.md: Document this.
+
+2023-07-21 Colin Watson <cjwatson@debian.org>
+
+ Include .lf corrections in debugging output
+
+ The pipeline command names in `PIPELINE_DEBUG` output are deliberately
+ abbreviated in the cases where the command is inserting data into the
+ `*roff` input stream, in an attempt to convey the essential parts
+ without overwhelming the reader. However, it probably does make sense
+ to include `.lf` corrections there, since if you're relying on the
+ debugging output to construct a manual shell pipeline when debugging an
+ issue with a page, you'll want the `.lf` corrections so that line
+ numbers still come out correctly.
+
+ * src/man.c (add_roff_line_length, display): Include `echo .lf 1` in
+ command names where appropriate.
+
+2023-07-20 Colin Watson <cjwatson@debian.org>
+
+ Take advantage of groff's AD string and HY register
+
+ Fixes https://gitlab.com/man-db/man-db/-/issues/23. Thanks to G.
+ Branden Robinson for assistance.
+
+ * src/man.c (make_roff_command) [TROFF_IS_GROFF]: Implement
+ `--no-hyphenation` using `-rHY=0`. This requires groff >= 1.19,
+ released in 2003.
+ (disable_hyphenation): Only define if `TROFF_IS_GROFF` is not defined.
+ (display): Only use the more complex hyphenation-control mechanism if
+ `TROFF_IS_GROFF` is not defined.
+
+ * src/man.c (disable_justification): Implement using `.ds AD l` if groff
+ is at least version 1.23.0.
+ (display): Adjust debugging output to reflect this (more or less).
+
+ * NEWS.md: Document this.
+
+2023-07-20 Colin Watson <cjwatson@debian.org>
+
+ Document false negatives from "man -K"
+
+ Fixes https://gitlab.com/man-db/man-db/-/issues/14.
+
+ * man/man1/man.man1 (Main modes of operation): Document false negatives
+ due to things like `\-`.
+ * NEWS.md: Document this.
+
+2023-07-20 Colin Watson <cjwatson@debian.org>
+
+ man(1): Add a STANDARDS section
+
+ Fixes https://gitlab.com/man-db/man-db/-/issues/20.
+
+ * man/man1/man.man1 (STANDARDS): New section.
+ * NEWS.md: Document this.
+
+2023-07-19 Colin Watson <cjwatson@debian.org>
+
+ Change "CONFORMING TO" to "STANDARDS"
+
+ This is in line with `man-pages(7)`.
+
+ See https://gitlab.com/man-db/man-db/-/issues/20.
+
+ * man/man1/man.man1 (DESCRIPTION): Recommend `STANDARDS` rather than
+ `CONFORMING TO`.
+ * NEWS.md: Document this.
+
+2023-07-19 Colin Watson <cjwatson@debian.org>
+
+ Fix test failures when a working iconv is not available
+
+ Part of https://gitlab.com/man-db/man-db/-/issues/25.
+
+ * configure.ac: Substitute `HAVE_ICONV`.
+ * src/tests/Makefile.am (TESTS_ENVIRONMENT): Export `HAVE_ICONV`.
+ * src/tests/testlib.sh (report_skip): New function to skip an individual
+ test out of several in a file.
+ (skip): Refactor slightly to call `report_skip`.
+ * src/tests/man-recode-in-place, src/tests/man-recode-suffix,
+ src/tests/manconv-coding-tags, src/tests/manconv-guess-from-encoding,
+ src/tests/manconv-incomplete-char-at-eof,
+ src/tests/manconv-odd-combinations: Skip several tests if `HAVE_ICONV`
+ is not `yes`.
+ * NEWS.md: Document this.
+
+2023-07-19 Colin Watson <cjwatson@debian.org>
+
+ NEWS.md: Document some recent commits
+
+2023-07-19 Colin Watson <cjwatson@debian.org>
+
+ Update warning regex for groff 1.23.0
+
+ Part of https://gitlab.com/man-db/man-db/-/issues/25.
+
+ * man/check-man: groff 1.23.0 says "cannot break line" rather than
+ "can't break line"; update regular expression.
+
+2023-07-19 Colin Watson <cjwatson@debian.org>
+
+ Avoid translation fallout from lexgrog(1) fix
+
+ * man/man1/lexgrog.man1: Protect `.ds mC CW` with `.if !'po4a'hide'`, to
+ avoid "CW" showing up as a string for translation.
+
+2023-07-19 G. Branden Robinson <g.branden.robinson@gmail.com>
+
+ Improve lexgrog(1) portability
+
+ This fixes a test failure in man1/lexgrog.1 when building against groff
+ 1.23.0.
+
+ Borrow code from groff 1.23.0's "an-ext.tmac" file (licensed as
+ permissively as a decadent society) to implement `EX` and `EE` extension
+ macros from Ninth Edition Research Unix (1986) (and groff) to get
+ monospaced code displays in a more portable way. There is no way to
+ portably change font families in pure man(7) itself, and the names of
+ troff typefaces aren't very portable either. There is also no portable
+ way to test for the _existence_ of a font. FTW.
+
+ ("Portable" here largely means "to AT&T device-independent troff
+ implementations", for which there has been no official source since the
+ mid-1990s.[1] Several AT&T Unix System V licensees/descendants have
+ continued to ship their own vendored versions, but these have enjoyed
+ little or no development for the past 3 decades.)
+
+ * Define a string `mC` to store the name of a presumed monospaced roman
+ typeface. Use "CW", which is portable to AT&T device-independent
+ troff of the early 1980s before it occurred to anyone that Courier
+ might someday be available in italic and bold styles (and budget
+ available to purchase them).
+ * Define `mC` as "CR" if using a typesetting device and the formatter is
+ groff, or claims groff compatibility by the setting the `.g` register.
+ This is reasonably portable to modern implementations given
+ traditional troff font naming practices and the pervasive influence of
+ Adobe Software and the "base fonts" of its PostScript and PDF
+ specifications.
+ * If not typesetting (i.e., if using nroff), define `mC` as "R", which
+ is certain to be available.
+ * Define `EX` and `EE` macros as groff does, if the formatter does not
+ set the `.g` register.
+ * Migrate from `ft CW` and `nf` requests to `EX` macro calls.
+ * Migrate from `ft P` and `fi` requests to `EE` macro calls.
+ * Replace an inline use of `\f(CW` with a change to inline bold. There
+ is to date no portable way to inline a font family change.
+
+ Test passes now. Tested as-is and with the `EX` and `EE` macro
+ definitions forcibly enabled.
+
+ [1] https://groups.google.com/g/comp.text/c/COkqrii4W0E/m/7HarA8Ha2dAJ
+
+2023-07-08 Colin Watson <cjwatson@debian.org>
+
+ Correct typography of "~/.manpath"
+
+ `~` should be written as `\(ti` in manual pages to avoid being rendered
+ as something along the lines of U+02DC SMALL TILDE in PDF output, or as
+ of groff 1.23.0 in UTF-8 output.
+
+ * man/man1/apropos.man1, man/man1/man.man1, man/man1/manpath.man1,
+ man/man1/whatis.man1, man/man8/catman.man8, man/man8/mandb.man8,
+ man/it/man1/apropos.man1, man/it/man1/man.man1: Write `\(ti` when shell
+ tilde expansion is intended.
+
+2023-07-03 Colin Watson <cjwatson@debian.org>
+
+ systemd: Sort hardening options
+
+ * init/systemd/man-db.service.in: Sort hardening options.
+
+2023-05-21 Мирослав Николић <miroslavnikolic@rocketmail.com>
+
+ Update Serbian manual page translation
+
+ * man/po4a/po/sr.po: Update from Translation Project.
+
+2023-04-14 Temuri Doghonadze <temuri.doghonadze@gmail.com>
+
+ Add Georgian translation
+
+ * po/ka.po: New from Translation Project.
+ * po/LINGUAS: Add ka.
+ * man/THANKS: Add translator credit.
+
+2023-04-09 Colin Watson <cjwatson@debian.org>
+
+ mandb: Warn if not running as cache owner
+
+ Fixes https://gitlab.com/man-db/man-db/-/issues/17.
+
+ * src/mandb.c (main): If effective user ID doesn't match the configured
+ cache owner (if any), and the `--quiet` option wasn't used, then issue a
+ warning.
+ * NEWS.md: Document this.
+
+2023-04-09 Colin Watson <cjwatson@debian.org>
+
+ Deduplicate search results from "man -K"
+
+ Reported by Alejandro Colomar.
+
+ * src/man.c (do_global_apropos_section): Skip entries whose ultimate
+ source path have already been seen.
+ (do_global_apropos): Create/free set used to track seen entries.
+ * NEWS.md: Document this.
+
+2023-03-29 Colin Watson <cjwatson@debian.org>
+
+ README.md: Explain where INSTALL.autoconf comes from
+
+ Fixes https://gitlab.com/man-db/man-db/-/issues/16.
+
+ * README.md: Explain that you may need to run `./bootstrap` to create
+ `docs/INSTALL.autoconf`.
+
+2023-03-10 Colin Watson <cjwatson@debian.org>
+
+ sandbox: Work around Firebuild
+
+ Fixes https://gitlab.com/man-db/man-db/-/issues/15.
+
+ * lib/sandbox.c (make_seccomp_filter): Allow some socket-related system
+ calls if libfirebuild.so is preloaded.
+ * NEWS.md: Document this.
+
+2023-03-02 Colin Watson <cjwatson@debian.org>
+
+ Upgrade to Gnulib stable-202301 as of 20230209
+
+ * bootstrap.conf (GNULIB_REVISION): Set to
+ c5dc86ca5c2e5c16177508bc32afe755b7995685.
+
+2023-02-23 Colin Watson <cjwatson@debian.org>
+
+ Fix several spelling errors
+
+ Found by codespell, although I haven't added it to our pre-commit hooks
+ since it gets confused by rather too many bits of syntax here.
+
+ * docs/manpages.example, lib/cleanup.c, lib/decompression.c,
+ lib/filenames.c (filename_info), src/ult_src.c (test_for_include): Fix
+ spelling errors.
+
+2023-01-14 Colin Watson <cjwatson@debian.org>
+
+ Copy files during bootstrapping
+
+ * .gitlab-ci.yml (bootstrap): Run `./bootstrap` with `--copy`.
+
+2023-01-14 Colin Watson <cjwatson@debian.org>
+
+ Fix bootstrap_epilogue to handle running without --copy
+
+ * bootstrap.conf (bootstrap_epilogue): Avoid leaving
+ `docs/INSTALL.autoconf` as a dangling symbolic link if the `--copy`
+ option is not used.
+
+2023-01-14 Colin Watson <cjwatson@debian.org>
+
+ Ensure that .gitignore and po/LINGUAS remain sorted
+
+ * .pre-commit-config.yaml (pre-commit-hooks): Add `file-contents-sorter`
+ for `.gitignore` and `po/LINGUAS`.
+ * .gitignore: Sort.
+
+2023-01-14 Colin Watson <cjwatson@debian.org>
+
+ Update pre-commit hooks
+
+ * .pre-commit-config.yaml (pre-commit-hooks): Update to v4.4.0.
+ (shellcheck-py): Update to v0.9.0.2.
+
+2023-01-14 Colin Watson <cjwatson@debian.org>
+
+ Upgrade to Gnulib stable-202301
+
+ * bootstrap: Sync to Gnulib 32a72f45374c9a36afa574d1a08bb98090270012.
+ * bootstrap.conf (GNULIB_REVISION): Set to
+ 32a72f45374c9a36afa574d1a08bb98090270012.
+ * NEWS.md: Document this.
+
+2023-01-14 Colin Watson <cjwatson@debian.org>
+
+ Update syscall lists from systemd fc2a0bc05e
+
+ * lib/sandbox.c (make_seccomp_filter): Add `cacheflush`,
+ `clock_getres_time64`, `clock_nanosleep_time64`, `close_range`,
+ `clone3`, `epoll_pwait2`, `faccessat2`, `futex_time64`, `pidfd_open`,
+ `pidfd_send_signal`, `ppoll_time64`, `pselect6_time64`,
+ `riscv_flush_icache`, `rt_sigtimedwait_time64`, and `utimensat_time64`.
+ Reorganize positions of some other syscalls according to their positions
+ in systemd's sets.
+ * NEWS.md: Document this.
+
+2023-01-08 Colin Watson <cjwatson@debian.org>
+
+ Release man-db 2.11.2
+
+2023-01-01 Colin Watson <cjwatson@debian.org>
+
+ mandb: Check for stray cats even if the manpath is unchanged
+
+ * src/mandb.c (mandb): Require the database file to be open before
+ calling `straycats`, but don't require `create_db` or
+ `update_db_wrapper` to have made any changes to it.
+ * src/tests/mandb-whatis-broken-link-changes: Update expected output.
+ * NEWS.md: Document this.
+
+2023-01-01 Colin Watson <cjwatson@debian.org>
+
+ mandb: Fix crash when processing stray cats
+
+ Regression introduced in man-db 2.11.0. Fixes Debian bug #1027487.
+
+ * src/straycats.c (check_for_stray): Pass a basic trace list to
+ `store_descriptions`, since that's required as of commit
+ d3e4b5522ae8152f10db0bb98e6873c9cc17ed59.
+ * NEWS.md: Document this.
+
+2022-12-31 Colin Watson <cjwatson@debian.org>
+
+ Pacify gcc -Wanalyzer-use-of-uninitialized-value
+
+ It incorrectly thought that `outleft` could be uninitialized in some
+ cases. Restructure code slightly to simplify its analysis.
+
+ * src/manconv.c (try_iconv): Initialize `outptr` in all branches of the
+ conditional beginning with `if (handle_iconv_errors)`.
+
+2022-12-31 Colin Watson <cjwatson@debian.org>
+
+ Fix segfault when nroff is not installed
+
+ * src/man.c (try_section): Only free the `names` list if it is non-NULL
+ due to `NROFF_MISSING` being defined, and return early if options are
+ set such that cat files cannot be used either.
+ * NEWS.md: Document this.
+
+2022-12-31 Colin Watson <cjwatson@debian.org>
+
+ Fix compile and test failures when troff is not groff
+
+ Fixes https://gitlab.com/man-db/man-db/-/issues/12.
+
+ * src/man.c (ONLY_TROFF_IS_GROFF): Only define if `HAS_TROFF` is
+ defined.
+ (init_html_pager): Only define if `TROFF_IS_GROFF` is defined.
+ (format_display): Mark `man_file` as unused if `TROFF_IS_GROFF` is not
+ defined.
+
+ * configure.ac: Substitute `troff_is_groff`.
+ * src/tests/Makefile.am (TESTS_ENVIRONMENT): Export `troff_is_groff`.
+ * src/tests/man-language-specific-requests: Adjust expected
+ language-specific requests if `troff_is_groff` is not `yes`.
+
+ * NEWS.md: Document this.
+
+2022-11-29 Seong-ho Cho <darkcircle.0426@gmail.com>
+
+ Update Korean manual page translation
+
+ * man/po4a/po/ko.po: Update from Translation Project.
+
+2022-11-28 Yuri Kozlov <yuray@komyakino.ru>
+
+ Update Russian manual page translation
+
+ * man/po4a/po/ru.po: Update from Translation Project.
+
+2022-11-15 Colin Watson <cjwatson@debian.org>
+
+ Release man-db 2.11.1
+
+2022-11-15 Colin Watson <cjwatson@debian.org>
+
+ Tweak README for better readability
+
+ * README.md: Add blank line for improved Markdown rendering.
+
+2022-11-14 Colin Watson <cjwatson@debian.org>
+
+ web: Fix man.png width/height
+
+ * web/index.html: Update width and height for man.png.
+
+2022-11-14 Colin Watson <cjwatson@debian.org>
+
+ web: Update man(1) image
+
+ * web/man.png: Replace with a fresh screenshot.
+
+2022-11-14 Colin Watson <cjwatson@debian.org>
+
+ Link to project home page
+
+ * README.md: Add home page link (https://man-db.gitlab.io/man-db/).
+
+2022-11-14 Colin Watson <cjwatson@debian.org>
+
+ Add GitLab Pages site
+
+ * .gitlab-ci.yml (stages): Add deploy.
+ (pages): New job.
+ * web/development.html, web/index.html, web/man.png, web/standard.css,
+ web/white.css: New files.
+
+2022-11-14 Colin Watson <cjwatson@debian.org>
+
+ Transfer Git repository to new group
+
+ * README.md, docs/HACKING.md, man/man1/apropos.man1,
+ man/man1/lexgrog.man1, man/man1/man-recode.man1, man/man1/man.man1,
+ man/man1/manconv.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: Change GitLab URL to
+ https://gitlab.com/man-db/man-db.
+ * NEWS.md: Document this.
+
+2022-11-12 Colin Watson <cjwatson@debian.org>
+
+ Remove unused include
+
+ * src/manconv_client.c: Remove unused `#include "idpriv.h"`.
+
+2022-11-05 Colin Watson <cjwatson@debian.org>
+
+ Fix distribution of Korean manual page translation
+
+ Accidentally omitted from 8f12d39bbb6748a1257358269028ef919f9c92e6.
+
+ * man/Makefile.am (DIST_SUBDIRS): Add ko.
+
+2022-11-05 Colin Watson <cjwatson@debian.org>
+
+ Replace $ in page names rather than trying to escape it
+
+ Jakub Wilk points out in Debian bug #1021951 that attempting to use the
+ `--use-backslash` option has a number of complications. Just replace
+ dollar signs with question marks instead.
+
+ * include/manconfig.h (LESS_OPTS): Revert addition of `--use-backslash`.
+ * src/man.c: Replace `$` characters with `?` rather than trying to
+ escape them.
+ * NEWS.md: Document this.
+
+2022-11-05 Colin Watson <cjwatson@debian.org>
+
+ Add Korean manual page translation
+
+ * man/po4a/po/ko.po: New from Translation Project (thanks, Seong-ho
+ Cho).
+ * configure.ac (AC_CONFIG_FILES): Add man/ko/Makefile.
+ * man/LINGUAS.po4a: Add ko.
+ * man/Makefile.am (DIST_SUBDIRS): Add ko.
+ * man/ko/Makefile.am, man/ko/translator.add: New files.
+ * man/po4a/Makefile.am (POFILES): Add po/ko.po.
+ * man/po4a/po4a.cfg (po4a_langs): Add ko.
+ * man/THANKS: Update translator credit.
+ * .gitignore: Add man/ko/man1, man/ko/man5, and man/ko/man8.
+
+2022-10-28 Seong-ho Cho <darkcircle.0426@gmail.com>
+
+ Add Korean translation
+
+ * po/ko.po: New from Translation Project.
+ * po/LINGUAS: Add ko.
+ * man/THANKS: Add translator credit.
+
+2022-10-28 Sebastian Rasmussen <sebras@gmail.com>
+
+ Update Swedish manual page translation
+
+ * man/po4a/po/sv.po: Update from Translation Project.
+
+2022-10-18 Colin Watson <cjwatson@debian.org>
+
+ zsoelim_open_file: Fix use of uninitialized value
+
+ In the case where `filename` has no directory part and does not contain
+ a dot, we could reach the decision of whether to emit a "can't open %s"
+ error message without initializing `decomp`. Noticed by `gcc -Og`.
+
+ * src/zsoelim.l (zsoelim_open_file): Initialize `decomp` to NULL.
+
+2022-10-18 Colin Watson <cjwatson@debian.org>
+
+ Recognize more Hungarian translations of the NAME section
+
+ * src/lexgrog.l (hu_name): Handle the case where "É" or "é" is written
+ as "\('E" or "\('e".
+ * NEWS.md: Document this.
+
+2022-10-18 Colin Watson <cjwatson@debian.org>
+
+ Sort whatis references below real pages more aggressively
+
+ I think this makes more sense in most cases, and it definitely fixes
+ some observed odd behaviour.
+
+ Fixes Debian bug #780235.
+
+ * src/man.c (compare_candidates): Compare IDs before comparing sections.
+ * NEWS.md: Document this.
+
+2022-10-17 Colin Watson <cjwatson@debian.org>
+
+ Silence error for empty mandir with missing catdir
+
+ Fixes https://gitlab.com/cjwatson/man-db/-/issues/8.
+
+ * src/check_mandirs.c (ensure_db_open): Don't call `gripe_rwopen_failed`
+ before returning false (since it only makes sense for one of the two
+ callers).
+ (testmandirs): Call `gripe_rwopen_failed` if `ensure_db_open` returns
+ false.
+
+2022-10-17 Colin Watson <cjwatson@debian.org>
+
+ Add 3type to default section list
+
+ This is used by the Linux man-pages package, and should be lower
+ priority than section 2. Suggested by Alejandro Colomar.
+
+ Fixes https://gitlab.com/cjwatson/man-db/-/issues/5.
+
+ * include/manconfig.h (STD_SECTIONS): Add `3type` between sections `2`
+ and `5`.
+ * m4/man-arg-sections.m4 (MAN_ARG_SECTIONS): Likewise.
+ * man/man5/manpath.man5 (FORMAT): Update documentation of SECTION.
+ * src/tests/man-exact-section-matches: Update default section order.
+ * src/man_db.conf.in (SECTION): Update documentation.
+ * NEWS.md: Document this.
+
+2022-10-17 Colin Watson <cjwatson@debian.org>
+
+ Escape $ in page names when constructing less prompts
+
+ Fixes Debian bug #1021951.
+
+ * include/manconfig.h (LESS_OPTS): Add `--use-backslash`.
+ * src/man.c (escape_less): Also escape `$` characters.
+ * NEWS.md: Document this.
+
+2022-10-15 Colin Watson <cjwatson@debian.org>
+
+ Release man-db 2.11.0
+
+2022-10-13 Colin Watson <cjwatson@debian.org>
+
+ ult_src: Fix possible NULL dereference
+
+ `gcc -fanalyzer` noticed that `canonicalize_file_name` can return NULL,
+ therefore `find_include` could return NULL, and therefore it was
+ possible for `ult_src` to attempt to dereference NULL in the `stat
+ (base, &st)` call. Push more work down to `find_include` so that we can
+ consistently treat it as an error if it returns NULL.
+
+ * src/ult_src.c (ult_softlink): Move error messages to ...
+ (gripe_canonicalize_failed): ... here (new function).
+ (find_include): Replace simple suffix globbing with `comp_file`, and use
+ this approach in both the relative-to-mantree and
+ relative-to-dirname-of-page cases; we previously only tried it in the
+ latter case. Call `gripe_canonicalize_failed` if the final
+ canonicalization step fails; print a "can't resolve %s" error if we
+ can't even find anything to canonicalize.
+ (ult_src): Remove `comp_file` processing, now done by `find_include`.
+ * src/ult_src.h (gripe_canonicalize_failed): Add prototype.
+ * src/straycats.c (check_for_stray): Use `gripe_canonicalize_failed`.
+
+2022-10-11 Colin Watson <cjwatson@debian.org>
+
+ Fix regression in preprocessor string handling
+
+ We need to stop looking for characters that identify preprocessors after
+ the first space or dash, as otherwise encoding declarations of the kind
+ specified in man-recode(1) may break.
+
+ * src/man.c (make_roff_command): Only consider the part of the
+ preprocessor string up to the first space or dash, if any.
+
+2022-10-11 Colin Watson <cjwatson@debian.org>
+
+ match_in_directory: Split into multiple functions
+
+ `match_in_directory` had two almost entirely disjoint code paths, one
+ for regex patterns and one for wildcard patterns; but its structure made
+ it difficult for `gcc -fanalyzer` to understand that, and it was a bit
+ unclear for humans too. Split it up for clarity.
+
+ * src/globbing.c (match_in_directory): Split out the
+ regex/wildcard-handling parts to ...
+ (match_regex_in_directory, match_wildcard_in_directory): ... here,
+ respectively.
+
+2022-10-11 Colin Watson <cjwatson@debian.org>
+
+ Assert that another xasprintf call returns non-NULL
+
+ As with commit a22f140354c80a7c5c52c4a413f1c929e105a24c, `gcc
+ -fanalyzer` notices that `xasprintf` can return NULL in some situations.
+ I believe those situations would all amount to programming errors here,
+ so add an assert.
+
+ * src/mandb.c (main): Assert that `xasprintf` returns non-NULL.
+
+2022-10-09 Colin Watson <cjwatson@debian.org>
+
+ Fix error message
+
+ * src/straycats.c (check_for_stray): If canonicalizing `catdir` returns
+ NULL, then substitute `catdir` into the "warning: %s is a dangling
+ symlink" message, not `fullpath` (which at this point must be NULL).
+
+2022-10-08 Colin Watson <cjwatson@debian.org>
+
+ Convert many more ints to bools
+
+ I don't expect this to make a significant runtime difference, but it
+ makes some things easier to analyse visually.
+
+ * lib/cleanup.c (do_cleanups_sigsafe): Change `in_sighandler` parameter
+ type to bool. Update all callers.
+ (push_cleanup): Change `handler_installed` local variable type to bool.
+ * lib/cleanup.h (do_cleanups_sigsafe): Update prototype.
+ * lib/compression.c (comp_info): Change `want_stem` parameter type to
+ bool. Update all callers.
+ * lib/compression.h (comp_info): Update prototype.
+ * lib/sandbox.c (seccomp_filter_unavailable): Change type to bool.
+ Update all references.
+ (make_seccomp_filter): Change `permissive` parameter type to bool.
+ Update all callers.
+ (_sandbox_load): Likewise.
+ * lib/util.c (remove_directory): Change `recurse` parameter type to
+ bool. Update all callers.
+ * lib/util.h (remove_directory): Update prototype.
+ * libdb/db_gdbm.c (opening): Change type to bool. Update all
+ references.
+ * libdb/db_store.c (compare_ids): Change `promote_links` parameter type
+ to bool. Update all callers.
+ * libdb/db_storage.h (compare_ids): Update prototype.
+ * src/catman.c (parse_for_sec): Change `message` local variable type to
+ bool.
+ (check_access): Change return type to bool.
+ (purge_whatis): Change `cat` parameter type to bool. Update all
+ callers.
+ (check_multi_key): Change return type to bool.
+ * src/descriptions.c (parse_descriptions): Change `seen_base` local
+ variable type to bool.
+ * src/globbing.c (look_for_file): Change `cat` parameter type to bool.
+ Update all callers.
+ * src/globbing.h (look_for_file): Update prototype.
+ * src/lexgrog.l (fill_mode, waiting_for_quote): Change types to bool.
+ Update all references.
+ * src/man.c (skip, created_tmp_cat): Change types to bool. Update all
+ references.
+ (run_mandb): Change `create` parameter type to bool. Update all
+ callers.
+ (squeeze_blank_lines): Change `in_blank_line` and `got_blank_line` local
+ variable types to bool.
+ (display): Change `format` and `printed` local variable types to bool.
+ (convert_name): Change `fsstnd` parameter type to bool. Update all
+ callers.
+ (add_candidate): Change `dupcand` local variable type to bool.
+ (main): Change `maybe_section` local variable type to bool.
+ * src/manp.c (add_sections): Change `user` parameter type to bool.
+ Update all callers.
+ (add_def): Likewise.
+ (add_mandb_map): Likewise.
+ (add_to_dirlist): Likewise.
+ (read_config_file): Change `done` local variable type to bool.
+ (get_manpath_from_path): Change `mandatory` parameter type to bool.
+ Update all callers.
+ * src/manp.h (get_manpath_from_path): Update prototype.
+ * src/whatis.c (do_apropos): Change `matched` local variable type to
+ bool.
+ * src/zsoelim.l (no_newline): Change type to bool. Update all
+ references.
+ (zsoelim_open_file): Change return type to true.
+ * src/zsoelim.h (zsoelim_open_file): Update prototype.
+
+2022-10-07 Colin Watson <cjwatson@debian.org>
+
+ Remove unused variable
+
+ * src/man.c (found_a_stray): Remove; it was set but no longer used.
+ (display_database): Remove setting of `found_a_stray`.
+
+2022-10-07 Colin Watson <cjwatson@debian.org>
+
+ Add some more pure function attributes
+
+ * lib/encodings.c (compatible_encodings): Mark as pure.
+ * src/man.c (is_section): Likewise.
+ * src/manp.c (get_config, get_def, get_def_user, is_global_mandir):
+ Likewise.
+
+2022-10-07 Colin Watson <cjwatson@debian.org>
+
+ Default to --disable-cache-owner on systems without getuid
+
+ * m4/man-arg-cache-owner.m4 (MAN_ARG_CACHE_OWNER): If the system doesn't
+ have `getuid`, force cache files to have unconstrained cache ownership,
+ and issue a warning if `--enable-cache-owner` was given.
+
+2022-10-07 Colin Watson <cjwatson@debian.org>
+
+ Fix installation on systems with non-empty EXEEXT
+
+ * src/Makefile.am (install-exec-hook): Add `$(EXEEXT)` to
+ `chown`/`chmod` calls.
+ * NEWS.md: Document MinGW portability work.
+
+2022-10-07 Colin Watson <cjwatson@debian.org>
+
+ Fix build on systems without SIGPIPE
+
+ * bootstrap.conf (gnulib_modules): Add sigpipe.
+ * src/mandb.c (main): Drop `#ifdef SIGPIPE` guards, as Gnulib now
+ ensures that it's defined.
+
+2022-10-07 Colin Watson <cjwatson@debian.org>
+
+ Fix build on systems without getuid
+
+ * lib/tempfile.c (running_setid): New function; always returns false if
+ the system doesn't have `getuid`, since in that case we won't have been
+ able to drop privileges either.
+
+2022-10-07 Colin Watson <cjwatson@debian.org>
+
+ Fix build on systems without <pwd.h>
+
+ * lib/security.h: Only include `<pwd.h>` if `MAN_OWNER` is defined.
+
+2022-10-07 Colin Watson <cjwatson@debian.org>
+
+ Fix build on systems without <termios.h>
+
+ * bootstrap.conf (gnulib_modules): Add termios.
+ * src/man.c (get_term): Replace with a no-op stub if the system has no
+ `<termios.h>` (Gnulib tests for it and can replace some functions, but
+ its replacement isn't sufficient here).
+
+2022-10-07 Colin Watson <cjwatson@debian.org>
+
+ Fix build on systems without SIGHUP
+
+ * lib/cleanup.c (trap_abnormal_exits, untrap_abnormal_exits): Guard uses
+ of `SIGHUP` with an `#ifdef`.
+
+2022-10-06 Colin Watson <cjwatson@debian.org>
+
+ Run preprocessors in the correct order
+
+ We have no particular reason to trust the order of filters in a
+ preprocessor string specified in a page; it's easy for authors to get
+ this wrong by accident. Do as groff(1) does and run them in a
+ canonicalized order.
+
+ Fixes Debian bug #1012078.
+
+ * src/man.c (add_filter): New function, split out from
+ `make_roff_command`.
+ (make_roff_command): Iterate through possible preprocessors and add each
+ one depending on whether it's present in the preprocessor string, rather
+ than iterating through the preprocessor string and acting on each of its
+ characters. Turn several `int` variables into `bool` variables in
+ passing.
+ * NEWS.md: Document this.
+
+2022-10-06 Emir SARI <emir_sari@icloud.com>
+
+ Update Turkish translation
+
+ * po/tr.po: Update from Translation Project.
+
+2022-10-06 Emir SARI <emir_sari@icloud.com>
+
+ Update Turkish manual page translation
+
+ * man/po4a/po/tr.po: Update from Translation Project.
+
+2022-10-06 Boyuan Yang <073plan@gmail.com>
+
+ Update Simplified Chinese manual page translation
+
+ * man/po4a/po/zh_CN.po: Update from Translation Project.
+
+2022-10-06 Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>
+
+ Update Romanian manual page translation
+
+ * man/po4a/po/ro.po: Update from Translation Project.
+
+2022-10-06 Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>
+
+ Update Romanian translation
+
+ * po/ro.po: Update from Translation Project.
+
+2022-10-03 Mario Blättermann <mario.blaettermann@gmail.com>
+
+ Update German manual page translation
+
+ * man/po4a/po/de.po: Update from Translation Project.
+
+2022-10-02 Colin Watson <cjwatson@debian.org>
+
+ Release man-db 2.11.0-pre1
+
+2022-10-02 Colin Watson <cjwatson@debian.org>
+
+ Bump next version to 2.11.0
+
+ There are quite a few substantial changes here that I think justify an
+ updated minor number.
+
+ * NEWS.md: Bump to 2.11.0.
+
+2022-10-02 Colin Watson <cjwatson@debian.org>
+
+ Update translation files
+
+ * po/man-db.pot, po/*.po: Update.
+
+2022-10-02 Colin Watson <cjwatson@debian.org>
+
+ Fix harmless but incorrect cast
+
+ * libdb/db_xdbm.c (man_xdbm_firstkey): Cast `gl_list_free` to
+ `gl_mapvalue_dispose_fn`, not `gl_listelement_dispose_fn`. (These were
+ in practice identical but are semantically distinct.)
+
+2022-10-02 Colin Watson <cjwatson@debian.org>
+
+ Reformat option declarations using macros
+
+ The previous tabular presentation had some advantages, but it only
+ looked reasonable in wide terminals, was often quite cumbersome to
+ maintain, and played poorly with `clang-format`.
+
+ * include/manconfig.h (OPT, OPT_FULL, OPT_ALIAS, OPT_HIDDEN,
+ OPT_GROUP_HEADER, OPT_HELP_COMPAT): New macros.
+ * src/accessdb.c (options): Rewrite using `OPT*` macros.
+ * src/catman.c (options): Likewise.
+ * src/globbing_test.c (options): Likewise.
+ * src/lexgrog_test.c (options): Likewise.
+ * src/man-recode.c (options): Likewise.
+ * src/man.c (options): Likewise.
+ * src/manconv_main.c (options): Likewise.
+ * src/mandb.c (options): Likewise.
+ * src/manpath.c (options): Likewise.
+ * src/whatis.c (options): Likewise.
+ * src/zsoelim_main.c (options): Likewise.
+
+2022-10-02 Colin Watson <cjwatson@debian.org>
+
+ Add CI checks for Berkeley DB and NDBM
+
+ * .gitlab-ci.yml (build-berkeley-db, build-ndbm): New jobs.
+
+2022-10-02 Colin Watson <cjwatson@debian.org>
+
+ mandb: Fully reorganize databases
+
+ This allows us to produce bitwise-identical databases regardless of the
+ order in which pages were scanned (at least with GDBM).
+ `gdbm_reorganize` isn't enough for this, probably because entries end up
+ in different positions in hash buckets depending on insertion order; but
+ reading in the entire database and writing it back out in sorted order
+ seems to do the job with negligible cost.
+
+ Fixes Debian bug #1010957.
+
+ * src/mandb.c (reorganize): New function: read all the items from a
+ database in sorted order and write them back out.
+ (mandb): Stop calling `MYDBM_REORG`, which saved space after deletions
+ but didn't help with reproducibility.
+ (process_manpath): Call `reorganize` if any changes were made to a
+ database.
+ * libdb/mydbm.h (MYDBM_REORG): Remove macro.
+ * NEWS.md: Document this.
+
+2022-10-02 Colin Watson <cjwatson@debian.org>
+
+ mandb: Rearrange database path operations
+
+ Moving these into "methods" of `struct dbpaths` makes the control flow
+ clearer by avoiding lots of inlined `#ifdef`s.
+
+ I fixed a possible crash in `mandb -f` in the process, exposed by the
+ clearer control flow.
+
+ * src/mandb.c (dbpaths_init, dbpaths_copy_to_tmp, dbpaths_remove_tmp):
+ New functions.
+ (finish_up): Rename to ...
+ (dbpaths_rename_from_tmp): ... this.
+ (do_chown): Rename to ...
+ (dbpaths_chown_if_possible): ... this.
+ (cleanup_sigsafe): Rename to ...
+ (dbpaths_unlink_tmp): ... this, and take a `struct dbpaths *` argument
+ rather than `void *`.
+ (cleanup): Rename to ...
+ (dbpaths_free_elements): ... this, and take a `struct dbpaths *`
+ argument rather than `void *`.
+ (mandb, process_manpath): Use new `dbpaths_*` functions. Only call
+ `dbpaths_rename_from_tmp` if `run_mandb` is set (in practice this was
+ always true anyway but this makes it clearer). Only call
+ `dbpaths_chown_if_possible` if `run_mandb` is set and
+ `dbpaths_rename_from_tmp` was called (this may have caused a crash in
+ some edge cases involving `mandb -f`).
+
+2022-10-01 Colin Watson <cjwatson@debian.org>
+
+ test_manfile: Remove "already exists" check
+
+ This produced inconsistent results in some unusual cases. For example,
+ if `/usr/share/man/man5/inetd.conf.5.gz` was a symlink to
+ `/usr/share/man/man8/inetd.8.gz` and had `NAME` entries for both `inetd`
+ and `inetd.conf`, then if `inetd.8.gz` was scanned first we would
+ include a `WHATIS_MAN` entry in section 8 for `inetd.conf`, while if
+ `inetd.conf.5.gz` was scanned first we'd skip that due to hitting the
+ already-exists check when scanning `inetd.8.gz`.
+
+ This was originally a performance optimization. Now that we cache the
+ results of `ult_src` and `find_name`, this optimization no longer helps
+ us much, so it can go.
+
+ * src/check_mandirs.c (test_manfile): Don't return early if the page
+ already exists with matching details.
+ * NEWS.md: Document this.
+
+2022-10-01 Colin Watson <cjwatson@debian.org>
+
+ Further improve name selection for whatis targets
+
+ In commit 9aff3c30b0, I used the rule "first name in the trace out of
+ those that have the best ID". However, a better rule turns out to be to
+ pick the last entry in the trace that has the same section and extension
+ as the starting page. This is already guaranteed to have at least as
+ good an ID as the starting page, and since whatis pointers don't include
+ the target section and extension we need to ensure that they don't cross
+ sections/extensions; otherwise we just end up with database entries that
+ man(1) refuses to use, which isn't particularly useful.
+
+ * src/descriptions_store.c (store_descriptions): Parse and cache all the
+ filenames in the trace at the start. Use the last entry in the trace
+ with the same section/extension as the starting page as the pointer for
+ `WHATIS_*` entries.
+
+2022-10-01 Colin Watson <cjwatson@debian.org>
+
+ test_manfile: Stop caching ult_src traces
+
+ Now that `test_manfile` always calls `ult_src` before adding database
+ entries, there's no need for it to cache the resulting traces, and doing
+ so had some confusing consequences since `store_descriptions` could end
+ up seeing cached traces that didn't include the initial path.
+
+ * src/check_mandirs.c (struct whatis): Remove `trace` element.
+ (whatis_free): Stop freeing `whatis->trace`.
+ (test_manfile): Stop caching `ult->trace`; pass it directly to
+ `store_descriptions` instead.
+
+2022-10-01 Colin Watson <cjwatson@debian.org>
+
+ Restructure ult_src to add caching
+
+ * src/ult_src.c (struct ult_key): New structure.
+ (ult_key_new, ult_key_equals, ult_key_hash, ult_key_free, ult_value_new,
+ ult_value_free): New functions.
+ (ult_cache): New map.
+ (ult_src): Instead of returning a path as a string and taking `trace` as
+ an output parameter, return a `struct ult_value *` containing both path
+ and trace. Cache the return value in a hash map (indexed by a composite
+ key consisting of `name` and `flags`), and return cached values where
+ possible rather than repeating the same work. Update all callers to
+ reflect the new signature.
+ * src/ult_src.h (struct ult_value): New structure.
+ (ult_src): Update prototype.
+
+ * src/check_mandirs.c (test_manfile): Simplify `ult_src` calling
+ arrangements now that repeated calls with the same `name` and `flags`
+ arguments are cheap. At the moment this may end up doing a little more
+ work in some rare cases (links to already-scanned pages with `.so`
+ links), but that doesn't seem to be very significant at the moment, and
+ caching could be improved inside `ult_src` if it proves to be a problem.
+ * src/descriptions_store.c (store_descriptions): `trace` is now always
+ set. Add an assertion of this and drop a couple of conditionals.
+
+2022-09-25 Colin Watson <cjwatson@debian.org>
+
+ ult_src: Remove recursion
+
+ The use of recursion for `.so` handling in `ult_src` is somewhat
+ inconvenient, and it's relatively easy to convert it to an iterative
+ implementation.
+
+ There should be no functional change from this commit, except to some
+ details of debug messages.
+
+ * src/ult_src.c (find_include_directive): New function, extracted from
+ `ult_src`.
+ (ult_src): Handle `.so` links using a loop rather than recursion. Check
+ for compression extensions towards the end of the loop rather than at
+ the beginning, to avoid nonexistent files showing up in the trace.
+
+2022-09-25 Colin Watson <cjwatson@debian.org>
+
+ mandb: Improve debugging
+
+ * src/check_mandirs.c (test_manfile): Log the file under consideration
+ on entry. Log when we return early due to an existing database entry.
+ Remove some unnecessary parentheses from debug messages.
+ * src/ult_src.c (ult_src): Remove leading newline from debug message.
+
+2022-09-25 Colin Watson <cjwatson@debian.org>
+
+ Don't skip adding a database entry due to SO_MAN
+
+ An existing `SO_MAN` entry shouldn't stop us considering a page for
+ insertion into the database, because until we run `ult_src` we don't yet
+ know whether that page will be `ULT_MAN` (which should replace the
+ existing entry) or `SO_MAN` (which shouldn't).
+
+ * src/check_mandirs.c (test_manfile): Don't return early due to an
+ existing matching `SO_MAN` entry, but only due to an `ULT_MAN` entry.
+ * NEWS.md: Document this.
+
+2022-09-24 Colin Watson <cjwatson@debian.org>
+
+ Fix section/extension for whatis entries in database
+
+ * src/descriptions_store.c (store_descriptions): Use the
+ section/extension of the best name for whatis entries, since we don't
+ have anything better.
+
+2022-09-24 Colin Watson <cjwatson@debian.org>
+
+ store_descriptions: Improve debugging
+
+ * src/descriptions_store.c (store_descriptions): Log the extension of
+ each entry being stored.
+
+2022-09-24 Colin Watson <cjwatson@debian.org>
+
+ Extend database entry replacement rules
+
+ These rules were previously ambiguous such that the targets of whatis
+ entries depended on the order in which files were scanned.
+
+ * libdb/db_store.c (enum replace_action): Add.
+ (replace_if_necessary): Extend rules for greater stability. We now also
+ take mtimes and pointers into account, as well as including a case for
+ when the new ID is weaker than the old one (there was already a case for
+ when it was stronger).
+ (dbstore): Use `replace_if_necessary` when considering replacing multi
+ keys.
+
+2022-09-24 Colin Watson <cjwatson@debian.org>
+
+ Fix section/extension for links in database
+
+ In some cases this resulted in spurious database entries. For example,
+ if `man5/inetd.conf.5` was a symlink to `man8/inetd.8` and that page had
+ a `NAME` entry for `inetd`, then as well as entries for `inetd` in
+ section 8 and `inetd.conf` in section 5, we would also store a spurious
+ entry for `inetd` in section 5. We no longer do that.
+
+ * src/descriptions_store.c (store_descriptions): For names corresponding
+ to entries in the ultimate source trace and not to the base name of the
+ file, use the section and extension of the trace entry rather than of
+ the ultimate source.
+
+2022-09-24 Colin Watson <cjwatson@debian.org>
+
+ Pick a more consistent name for whatis targets
+
+ We don't want the targets of whatis entries in the database to depend on
+ the order in which files were scanned. Prefer the first name in the
+ trace out of those that have the best ID.
+
+ * src/descriptions_store.c (store_descriptions): Defer adding names that
+ don't appear in the ultimate source trace (i.e. whatis entries) until we
+ know the best name to use as the target, and use that best name as the
+ pointer for each of them.
+
+2022-09-24 Colin Watson <cjwatson@debian.org>
+
+ Fix stored ID for links
+
+ Database entries for links were often incorrectly stored as `ULT_MAN`,
+ depending on the exact order in which pages were scanned. They are now
+ stored more consistently as `SO_MAN`.
+
+ * src/descriptions_store.c (store_descriptions): Override the ID from
+ `ULT_MAN` to `SO_MAN` if the name is not the last entry in the trace.
+ (Previously we overrode from `SO_MAN` to `ULT_MAN` if the name was the
+ last entry in the trace, but not the converse.)
+ * NEWS.md: Document this.
+
+2022-09-24 Colin Watson <cjwatson@debian.org>
+
+ Simplify struct mandata memory allocation
+
+ The arrangement where most of the fields of `struct mandata` were
+ constant pointers into the `addr` field was a bit more memory-efficient,
+ but it made some kinds of analysis and reorganization very difficult,
+ and we don't actually need to be quite that frugal about memory.
+ Reorganize this to allocate each field independently instead.
+
+ * lib/filenames.c (filename_info): Allocate each field independently.
+ Use Gnulib's `base_name` and `dir_name` functions to parse paths. Stop
+ setting `info->addr`.
+ (free_mandata_struct): Free the `ext`, `sec`, `pointer`, `comp`,
+ `filter`, and `whatis` fields. Stop freeing `addr`.
+ * lib/filenames.h (struct mandata): Remove `addr`. Make `ext`, `sec`,
+ `pointer`, `comp`, `filter`, and `whatis` non-`const`.
+ * libdb/db_lookup.c (split_content): Copy the `ext`, `sec`, `pointer`,
+ `filter`, `comp`, and `whatis` fields. Stop setting `addr`.
+ * libdb/db_store.c (make_content): Copy the `pointer`, `comp`, `filter`,
+ and `whatis` fields.
+ * src/descriptions_store.c (store_descriptions): Copy `pointer` and
+ `whatis` fields.
+ * src/straycats.c (check_for_stray): Copy `comp`, `ext`, `sec`, and
+ `filter` fields.
+
+ * libdb/db_lookup.c (dblookup): Always free `cont`'s data pointer, since
+ it's no longer sometimes borrowed.
+ * libdb/db_store.c (dbstore): Free `cont`'s and `oldcont`'s data
+ pointers, since they're no longer borrowed.
+ * src/check_mandirs.c (purge_missing): Free `content`'s data pointer,
+ since it's no longer borrowed.
+
+ * libdb/db_lookup.c (dblookup_pattern): Stop freeing `info->addr`.
+ * src/catman.c (parse_for_sec): Stop freeing `entry->addr`.
+ * src/whatis.c (do_apropos): Stop freeing `info->addr`.
+
+2022-09-24 Colin Watson <cjwatson@debian.org>
+
+ Stop using the addr field of struct mandata
+
+ The `addr` field of `struct mandata` is just intended as an internal
+ buffer, but some functions were extracting information from it in
+ complicated ways, which made it difficult to refactor the memory
+ allocation here. Use different approaches.
+
+ * src/check_mandirs (test_manfile): Calculate `len` using `comp_info`.
+ This duplicates some of what `filename_info` does, but it's just some
+ cheap string manipulation, and it expresses what we want in a less
+ confusing way (the length of the file name with any compression
+ extension removed).
+ * src/descriptions_store.c (store_descriptions): Check whether `path` is
+ a prefix of `trace_name` rather than of `trace_info->addr`.
+ `trace_info->addr` is always itself a prefix of `trace_name`, so if
+ `path` is not a prefix of `trace_name` then it can't be a prefix of
+ `trace_info->addr`.
+
+2022-09-24 Colin Watson <cjwatson@debian.org>
+
+ is_prefix: Improve parameter naming
+
+ The second parameter doesn't have to be a directory, so stop implying
+ that in the parameter name.
+
+ * src/descriptions_store.c (is_prefix): Rename `path` to `parent`; rename
+ `dir` to `child`.
+
+2022-09-24 Colin Watson <cjwatson@debian.org>
+
+ Simplify split_content interface
+
+ Now that `struct mandata` is always allocated on the heap, we might as
+ well just have `split_content` return a freshly-allocated `struct
+ mandata` rather than taking a pointer to one as a parameter.
+
+ * libdb/db_lookup.c (split_content): Allocate and return a `struct
+ mandata`; remove `pinfo` parameter. Update all callers.
+ * libdb/db_storage.h (split_content): Update prototype.
+
+2022-09-24 Colin Watson <cjwatson@debian.org>
+
+ Always allocate struct mandata on the heap
+
+ This means we no longer need two slightly different functions for
+ freeing it.
+
+ * libdb/db_lookup.c (dblookup_pattern): Allocate `struct mandata` on the
+ heap. Simplify arrangements for adding to the `infos` list.
+ (dbstore): Allocate `struct mandata` on the heap.
+ * src/catman.c (parse_for_sec): Likewise.
+ * src/check_mandirs.c (purge_pointers, purge_missing): Likewise.
+ * src/straycats.c (check_for_stray): Likewise.
+ * src/whatis.c (do_apropos): Likewise.
+
+ * lib/filenames.c (free_mandata_elements): Remove function and move its
+ contents to ...
+ (free_mandata_struct): ... here, if `pinfo` is set.
+ * lib/filenames.h (free_mandata_elements): Remove prototype.
+
+2022-09-24 Colin Watson <cjwatson@debian.org>
+
+ filename_info: Always allocate info->name
+
+ Only one call site has any interest in this being unset (in order to
+ pass the result to `dbstore`), and even there it's easier for the caller
+ to deal with unsetting it. Otherwise, it's strictly more convenient if
+ the structure returned by `filename_info` always includes the name of
+ the page.
+
+ * lib/filenames.c (filename_info): Remove `req_name` parameter; update
+ all callers. Always set `info->name` before returning successfully.
+ * lib/filenames.h (filename_info): Update prototype.
+ * src/check_mandirs.c (test_manfile): Use `info->name` for
+ `manpage_base` rather than poking around in `info->addr`.
+ (count_glob_matches): Remove `name` parameter; update all callers.
+ * src/descriptions_store.c (store_descriptions): Drop now-unnecessary
+ check for `trace_info->name`.
+ * src/man.c (do_global_apropos_section): Build `title` using
+ `info->name` rather than poking around in `info->addr`.
+ * src/mandb.c (update_one_file): Drop now-unnecessary check for
+ `info->name`.
+
+2022-09-23 Colin Watson <cjwatson@debian.org>
+
+ Reduce indentation in store_descriptions a bit
+
+ * src/descriptions_store.c (store_descriptions): Use an early-continue
+ construction to save a level of indentation.
+
+2022-09-23 Colin Watson <cjwatson@debian.org>
+
+ Simplify the filename_info interface
+
+ This interface is a bit less confusing.
+
+ * libdb/db_lookup.c (free_mandata_elements, free_mandata_struct): Move
+ to ...
+ * lib/filenames.c (free_mandata_elements, free_mandata_struct): ...
+ here.
+ * libdb/db_storage.h (free_mandata_elements, free_mandata_struct): Move
+ to ...
+ * lib/filenames.h (free_mandata_elements, free_mandata_struct): ...
+ here.
+
+ * lib/filenames.c (filename_info): Return a `struct mandata` with the
+ `addr` element set to the buffer containing the fields, rather than
+ returning the buffer and taking a pointer to a `struct mandata` as a
+ parameter. Update all callers.
+ * lib/filenames.h (filename_info): Update prototype.
+
+2022-09-23 Colin Watson <cjwatson@debian.org>
+
+ Move manual page file name utilities to lib/
+
+ * src/filenames.c: Move to ...
+ * lib/filenames.c: ... here.
+ * src/filenames.h: Move to ...
+ * lib/filenames.h: ... here. Update positioning of all includes.
+ * lib/Makefile.am (libman_la_SOURCES): Add `filenames.c` and
+ `filenames.h`.
+ * src/Makefile.am (man_recode_LDADD): Link with `$(LIBMAN)` instead of
+ `$(LIBMANDB)`.
+ (lexgrog_SOURCES, man_SOURCES, mandb_SOURCES): Remove `filenames.c` and
+ `filenames.h`.
+ * po/POTFILES.in: Rename `src/filenames.c` to `lib/filenames.c`.
+
+ * lib/filenames.c (gripe_bogus_manpage): Remove `quiet < 2` condition.
+ (filename_info): Add `warn_if_bogus` parameter; only call
+ `gripe_bogus_manpage` if it is set. Update all callers.
+ * lib/filename.h (filename_info): Update prototype.
+
+ * libdb/db_storage.h (struct mandata): Move to ...
+ * lib/filenames.h (struct mandata): ... here. Add includes where
+ necessary.
+
+2022-09-23 Colin Watson <cjwatson@debian.org>
+
+ Fix distcheck
+
+ * po/POTFILES.in: Rename `src/compression.c` to `lib/compression.c`.
+
+2022-09-23 Colin Watson <cjwatson@debian.org>
+
+ Move compression file name utilities to lib/
+
+ This makes more sense as a home for plain file name manipulation
+ utilities. I also merged `include/comp_src.h.in` into
+ `lib/compression.c`, because structure definitions (as opposed to
+ declarations) don't belong in header files.
+
+ * src/compression.c: Move to ...
+ * lib/compression.c: ... here. Remove unnecessary `pipeline.h` include.
+ * src/compression.h: Move to ...
+ * lib/compression.h: ... here. Update positioning of all includes.
+ * lib/Makefile.am (libman_la_SOURCES): Add `compression.c` and
+ `compression.h`.
+ * lib/README: Add `compression.*`.
+ * src/Makefile.am (lexgrog_SOURCES, man_SOURCES, man_recode_SOURCES,
+ mandb_SOURCES): Remove `compression.c` and `compression.h`.
+
+ * include/comp_src.h (comp_list): Move to ...
+ * lib/compression.c (comp_list): ... here. Update all references.
+ * include/manconfig.h (struct compression, comp_list): Move to ...
+ * lib/compression.h (struct compression, comp_list): ... here. Add
+ includes where necessary.
+ * Makefile.am (noinst_HEADERS): Remove `include/comp_src.h`.
+
+2022-09-23 Colin Watson <cjwatson@debian.org>
+
+ Remove infoalloc macro
+
+ It doesn't really pull its weight.
+
+ * libdb/db_lookup.c (dblookup, dblookup_pattern): Call `XZALLOC (struct
+ mandata)` rather than `infoalloc ()`.
+ * src/man.c (try_section, do_global_apropos_section): Likewise.
+ * libdb/db_storage.h (infoalloc): Remove.
+
+2022-09-19 Colin Watson <cjwatson@debian.org>
+
+ Maintain multi key references in sorted order
+
+ This is a step towards being able to reproduce the same database given
+ the same manual page tree.
+
+ * bootstrap.conf (gnulib_modules): Add stpcpy.
+ * libdb/db_lookup.c (name_ext_equals): Remove static; add pure
+ attribute.
+ (name_ext_compare): New function.
+ (list_extensions): Add entries in sorted order.
+ * libdb/db_storage.h (name_ext_equals, name_ext_compare): Add
+ prototypes.
+ * libdb/db_store.c (make_extensions_reference): New function.
+ (dbstore): When building or updating multi key references, maintain them
+ in sorted order.
+ * NEWS.md: Document this.
+
+2022-09-19 Colin Watson <cjwatson@debian.org>
+
+ Remove some excessive debugging output
+
+ This hasn't been of any practical use for many years.
+
+ * lib/security.c (drop_effective_privs, regain_effective_privs): Remove
+ debug messages emitted when increasing or decreasing the privilege drop
+ count.
+
+2022-08-11 Colin Watson <cjwatson@debian.org>
+
+ Fix use of pointer (address only) after free
+
+ I don't believe this was technically undefined behaviour, since we
+ didn't actually dereference the dangling pointer, merely compared its
+ value (the pointer address itself) against entries in the cleanup stack.
+ However, the compiler probably had a hard time proving that, so the
+ use-after-free warning issued by recent versions of GCC seems fair
+ enough.
+
+ * src/mandb.c (cleanup): Don't free dbpaths.
+ (process_manpath): Free it here instead, after calling pop_cleanup.
+
+2022-08-11 Colin Watson <cjwatson@debian.org>
+
+ Make CATWIDTH override MINCATWIDTH/MAXCATWIDTH
+
+ Otherwise setting `CATWIDTH` to something larger than 80 confusingly
+ doesn't work unless you also set `MAXCATWIDTH`.
+
+ Fixes https://gitlab.com/cjwatson/man-db/-/issues/9.
+
+ * src/man.c (add_roff_line_length): Skip terminal width range check if
+ `cat_width` is set.
+ * man/man5/manpath.man5 (FORMAT): Remove note that `CATWIDTH` should be
+ within the range set by `MINCATWIDTH` and `MAXCATWIDTH`, and instead say
+ that it overrides them.
+ * NEWS.md: Document this.
+
+2022-07-22 Colin Watson <cjwatson@debian.org>
+
+ Add more case variants of localized versions of NAME
+
+ * src/lexgrog.l (bg_name, lt_name, ru_name, sr_name, srlatin_name,
+ tr_name, uk_name, vi_name): Add more case variants.
+ * NEWS.md: Document this.
+
+2022-07-18 Colin Watson <cjwatson@debian.org>
+
+ Update pre-commit hooks
+
+ * .pre-commit-config.yaml (pre-commit-hooks): Update to v4.3.0.
+
+2022-07-18 Colin Watson <cjwatson@debian.org>
+
+ Update to Gnulib 20220717
+
+ Fixes https://gitlab.com/cjwatson/man-db/-/issues/6.
+
+ * bootstrap: Sync to Gnulib df336dc1ae60d8ad9f452f2234951133fe617bb0.
+ * bootstrap.conf (GNULIB_REVISION): Set to
+ df336dc1ae60d8ad9f452f2234951133fe617bb0.
+ * NEWS.md: Document build fix.
+
+2022-07-15 Colin Watson <cjwatson@chiark.greenend.org.uk>
+
+ Merge branch 'drop-lsm' into 'main'
+
+ Drop LSM file
+
+ See merge request cjwatson/man-db!4
+
+2022-07-13 Pino Toscano <toscano.pino@tiscali.it>
+
+ Drop LSM file
+
+ The LSM format is a very old format for software, and it is dead for
+ many years already. Since keeping the .lsm up-to-date is basically not
+ much of use, simply drop it altogether.
+
+ * docs/Makefile.am (dist_noinst_DATA): Remove man-db.lsm.
+ * docs/HACKING.md: Stop mentioning man-db.lsm.
+ * docs/man-db.lsm: Remove file.
+
+2022-07-05 Stéphane Aulery <lkppo@free.fr>
+
+ Update French manual page translation
+
+ * man/po4a/po/fr.po: Update from Translation Project.
+
+2022-06-02 Joe Hansen <joedalton2@yahoo.dk>
+
+ Update Danish translation
+
+ * po/da.po: Update from Translation Project.
+
+2022-05-18 Colin Watson <cjwatson@debian.org>
+
+ Cache filters alongside whatis information
+
+ `mandb` needs to cache filters together with whatis information, as
+ otherwise pages were incorrectly recorded with no filters if `mandb`
+ happened to use cached whatis information for them rather than reading
+ it from scratch.
+
+ * src/check_mandirs.c (struct whatis): Add filters.
+ (whatis_free): Free whatis->filters.
+ (test_manfile): Store and use whatis->filters.
+ * NEWS.md: Document this.
+
+2022-04-27 Andika Triwidada <andika@gmail.com>
+
+ Update Indonesian translation
+
+ * po/id.po: Update from Translation Project.
+ * man/THANKS: Add translator credit.
+
+2022-04-23 Colin Watson <cjwatson@debian.org>
+
+ Stop GitLab from getting confused about licences
+
+ GitLab uses https://github.com/licensee/licensee to detect the project's
+ licence, and if that finds multiple matching files then it throws up its
+ hands and refuses to make a licence assertion, with no apparent way to
+ override it.
+
+ To avoid this problem, move the secondary licence files (those that
+ apply only to some files, rather than to the project as a whole) back
+ into a subdirectory, so that `licensee` doesn't notice them.
+
+ * COPYING.GPLv2: Move to ...
+ * docs/COPYING.GPLv2: ... here. Update all references.
+ * COPYING.LIB: Move to ...
+ * docs/COPYING.LIB: ... here. Update all references.
+ * Makefile.am (dist_noinst_DATA): Remove COPYING.GPLv2.
+ * docs/Makefile.am (dist_noinst_DATA): Add COPYING.GPLv2 and
+ COPYING.LIB.
+
+2022-04-23 Colin Watson <cjwatson@debian.org>
+
+ Clarify effective GPLv3 licensing
+
+ While man-db's own files are individually licensed under GPLv2 (or in a
+ few cases LGPLv2.1), the project as a whole is effectively GPLv3 due to
+ Gnulib. This was already explained in README.md, but make it a bit
+ clearer by having the top-level COPYING file be a copy of GPLv3.
+
+ * COPYING: Move to ...
+ * COPYING.GPLv2: ... here.
+ * COPYING: New file.
+ * Makefile.am (dist_noinst_DATA): Add COPYING.GPLv2.
+ * lib/README, man/it/man1/apropos.man1, man/it/man1/man.man1,
+ man/it/man1/manpath.man1, man/it/man1/whatis.man1,
+ man/it/man1/zsoelim.man1, man/it/man5/manpath.man5,
+ man/it/man8/accessdb.man8, man/it/man8/catman.man8,
+ man/it/man8/mandb.man8, man/man1/apropos.man1, man/man1/lexgrog.man1,
+ man/man1/man-recode.man1, man/man1/man.man1, man/man1/manconv.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, manual/comp.me, manual/db.me, manual/files.me,
+ manual/format.me, manual/glossary.me, manual/intro.me, manual/leader.me,
+ manual/man_db.me, manual/misc.me, manual/sec.me: Refer to COPYING.GPLv2
+ rather than COPYING.
+
+2022-04-23 Colin Watson <cjwatson@debian.org>
+
+ Update pre-commit hooks
+
+ * .pre-commit-config.yaml (pre-commit-hooks): Update to v4.2.0.
+
+2022-04-17 Emir SARI <emir_sari@icloud.com>
+
+ Update Turkish manual page translation
+
+ * man/po4a/po/tr.po: Update from Translation Project.
+ * man/THANKS: Update translator credit.
+
+2022-04-16 Colin Watson <cjwatson@debian.org>
+
+ Recognize another Turkish translation of NAME
+
+ Emir SARI reports that "AD" is the de facto standard technical
+ terminology for "NAME" in Turkish, rather than "İSİM" which sounds
+ slightly colloquial. Recognize it as well.
+
+ * src/lexgrog.l (tr_name): Add "AD".
+
+2022-04-12 Emir SARI <emir_sari@icloud.com>
+
+ Update Turkish translation
+
+ * po/tr.po: Update from Translation Project.
+ * man/THANKS: Add translator credit.
+
+2022-03-17 Colin Watson <cjwatson@debian.org>
+
+ Release man-db 2.10.2
+
+ NEWS.md: Fix typo for 2.7.6
+
+2022-03-08 Colin Watson <cjwatson@debian.org>
+
+ pre-commit: Avoid need for multiple shellcheck runs
+
+ * .shellcheckrc: Set `external-sources=true`.
+ * src/tests/lexgrog-backslash-dash-rhs, src/tests/lexgrog-basic,
+ src/tests/lexgrog-multiple-whatis, src/tests/man-deleted-directory,
+ src/tests/man-exact-section-matches,
+ src/tests/man-executable-page-on-path, src/tests/man-invalid-db-entry,
+ src/tests/man-language-specific-requests,
+ src/tests/man-mandatory-manpath, src/tests/man-missing-locales,
+ src/tests/man-override-dir, src/tests/man-recode-in-place,
+ src/tests/man-recode-suffix, src/tests/man-so-links-same-section,
+ src/tests/man-suffixed-extension,
+ src/tests/man-symlinks-with-matching-names,
+ src/tests/manconv-coding-tags, src/tests/manconv-guess-from-encoding,
+ src/tests/manconv-incomplete-char-at-eof,
+ src/tests/manconv-odd-combinations, src/tests/mandb-basic,
+ src/tests/mandb-bogus-symlink, src/tests/mandb-cachedir-tag,
+ src/tests/mandb-empty-page, src/tests/mandb-purge-updates-timestamp,
+ src/tests/mandb-regular-file-symlink-changes,
+ src/tests/mandb-symlink-beats-whatis-ref,
+ src/tests/mandb-symlink-target-timestamp,
+ src/tests/mandb-whatis-broken-link-changes,
+ src/tests/whatis-path-to-executable, src/tests/zsoelim-so-includes: Add
+ `shellcheck source-path=SCRIPTDIR` directive before sourcing testlib.sh.
+ * .pre-commit-config.yaml: Consolidate the two shellcheck hooks into
+ one.
+
+2022-03-08 Colin Watson <cjwatson@debian.org>
+
+ pre-commit: Add shellcheck
+
+ * .pre-commit-config.yaml: Add shellcheck. We need separate hooks for
+ `src/tests/` and for everything else, since shellcheck needs a `-P`
+ option to correctly handle sourced files in `src/tests/`.
+ * .shellcheckrc: New file.
+
+2022-03-08 Colin Watson <cjwatson@debian.org>
+
+ Refactor use of cd in shell scripts
+
+ shellcheck warns about unchecked uses of `cd` (SC2164). Either check it
+ or refactor to avoid changing directory.
+
+ * src/tests/man-deleted-directory: Check `cd` call.
+ * src/tests/man-suffixed-extension: Avoid changing directory.
+ * tools/mkcatdirs: Likewise.
+
+2022-03-08 Colin Watson <cjwatson@debian.org>
+
+ mkcatdirs: Skip nonexistent man directories
+
+ * tools/mkcatdirs: `manpath -qg` may return man directories that are
+ mentioned in the configuration file but that don't exist on the
+ filesystem. Skip these.
+
+2022-03-08 Colin Watson <cjwatson@debian.org>
+
+ mkcatdirs: Refactor using install(1)
+
+ I'm not sure this script is widely-used, but it might as well work. It
+ previously relied on `mkinstalldirs`, which is a build tool not
+ typically installed on end-user systems.
+
+ * tools/mkcatdirs: Refactor cat directory creation using install(1).
+
+2022-03-08 Colin Watson <cjwatson@debian.org>
+
+ Apply various minor shell syntax improvements
+
+ * manual/print-options: Explicitly set `LANGUAGE=''` rather than
+ `LANGUAGE=`, pacifying shellcheck SC1007 which notes that this
+ construction might otherwise be misread.
+ * src/tests/manconv-odd-combinations: Use `printf %b` to pacify
+ shellcheck SC2059.
+ * src/tests/testlib.sh: Tell shellcheck which shell syntax to assume,
+ since this file has no `#!` line.
+ (run): Disable shellcheck SC2154; `abs_top_builddir` is always set by
+ the test runner.
+ (report): Remove unnecessary `$` before variable in arithmetic context.
+ (tools/checkman): Use `$(...)` for command substitution. Quote
+ variables properly where possible, and ignore shellcheck SC2068 in a
+ couple of other places.
+
+2022-03-07 Colin Watson <cjwatson@debian.org>
+
+ tests: Pacify shellcheck SC2188
+
+ The previous construction resulted in:
+
+ SC2188 (warning): This redirection doesn't have a command. Move to its
+ command (or use 'true' as no-op).
+
+ * src/tests/man-mandatory-manpath, src/tests/testlib.sh: Avoid
+ redirections without a command.
+
+2022-03-07 Colin Watson <cjwatson@debian.org>
+
+ tests: Make pass/fail reporting more shellcheck-friendly
+
+ * src/tests/testlib.sh (report): New function, similar to expect_pass
+ but taking an exit code rather than a command string to evaluate.
+ (expect_pass): Remove.
+ (expect_files_equal): Refactor using report function.
+ * src/tests/man-deleted-directory,
+ src/tests/man-executable-page-on-path, src/tests/man-missing-locales,
+ src/tests/man-recode-in-place, src/tests/manconv-incomplete-char-at-eof,
+ src/tests/mandb-bogus-symlink, src/tests/mandb-cachedir-tag,
+ src/tests/mandb-empty-page, src/tests/mandb-purge-updates-timestamp:
+ Refactor to use report function rather than expect_pass.
+
+2022-03-07 Colin Watson <cjwatson@debian.org>
+
+ tests: Add an expect_files_equal helper function
+
+ * src/tests/testlib.sh (expect_files_equal): New function.
+ * src/tests/lexgrog-backslash-dash-rhs, src/tests/lexgrog-basic,
+ src/tests/lexgrog-multiple-whatis, src/tests/man-exact-section-matches,
+ src/tests/man-invalid-db-entry,
+ src/tests/man-language-specific-requests,
+ src/tests/man-mandatory-manpath, src/tests/man-override-dir,
+ src/tests/man-recode-in-place, src/tests/man-recode-suffix,
+ src/tests/man-so-links-same-section, src/tests/man-suffixed-extension,
+ src/tests/man-symlinks-with-matching-names,
+ src/tests/manconv-coding-tags, src/tests/manconv-guess-from-encoding,
+ src/tests/manconv-odd-combinations, src/tests/mandb-basic,
+ src/tests/mandb-purge-updates-timestamp,
+ src/tests/mandb-regular-file-symlink-changes,
+ src/tests/mandb-symlink-beats-whatis-ref,
+ src/tests/mandb-symlink-target-timestamp,
+ src/tests/mandb-whatis-broken-link-changes,
+ src/tests/whatis-path-to-executable, src/tests/zsoelim-so-includes: Use
+ expect_files_equal instead of the equivalent expect_pass construction.
+
+2022-03-07 Colin Watson <cjwatson@debian.org>
+
+ tests: Improve quoting
+
+ * src/tests/lexgrog-backslash-dash-rhs, src/tests/lexgrog-basic,
+ src/tests/lexgrog-multiple-whatis, src/tests/man-deleted-directory,
+ src/tests/man-exact-section-matches,
+ src/tests/man-executable-page-on-path, src/tests/man-invalid-db-entry,
+ src/tests/man-language-specific-requests,
+ src/tests/man-mandatory-manpath, src/tests/man-missing-locales,
+ src/tests/man-override-dir, src/tests/man-recode-in-place,
+ src/tests/man-recode-suffix, src/tests/man-so-links-same-section,
+ src/tests/man-suffixed-extension,
+ src/tests/man-symlinks-with-matching-names,
+ src/tests/manconv-coding-tags, src/tests/manconv-guess-from-encoding,
+ src/tests/manconv-incomplete-char-at-eof,
+ src/tests/manconv-odd-combinations, src/tests/mandb-basic,
+ src/tests/mandb-bogus-symlink, src/tests/mandb-cachedir-tag,
+ src/tests/mandb-empty-page, src/tests/mandb-purge-updates-timestamp,
+ src/tests/mandb-regular-file-symlink-changes,
+ src/tests/mandb-symlink-beats-whatis-ref,
+ src/tests/mandb-symlink-target-timestamp,
+ src/tests/mandb-whatis-broken-link-changes,
+ src/tests/whatis-path-to-executable, src/tests/zsoelim-so-includes: Use
+ ': "${var=default}"' idiom to assign default values rather than
+ ': ${var=default}', pacifying shellcheck.
+
+2022-03-06 Nikola Forró <nforro@redhat.com>
+
+ Add --with-snapdir configure option
+
+ * m4/man-arg-snapdir.m4: New file.
+ * configure.ac: Call MAN_ARG_SNAPDIR.
+ * src/man_db.conf.in: Use @snapdir@ rather than hardcoding /snap.
+ * NEWS.md: Document this.
+
+2022-03-06 Colin Watson <cjwatson@debian.org>
+
+ Tidy up NEWS.md slightly
+
+ * NEWS.md: Reorder fixes and improvements; add credit for last commit.
+
+2022-03-06 Mihail Konev <k.mvc@ya.ru>
+
+ man(1): Fix override dir handling
+
+ Previously, override dir was affecting only some cases of manpath
+ determination. Apply it only when all paths have been gathered instead.
+
+ Also look for override dir when sorting candidates.
+
+ Fixes src/tests/man-override-dir failing when --with-override-dir=od is
+ passed to ./configure.
+
+ [cjwatson: Refactored candidate comparison to use a strcmp-style
+ function, and simplified the addition of override directories a little
+ more.]
+
+ * src/man.c (compare_override_dir): New function.
+ (compare_candidates): Compare override directory status between
+ comparing section extensions and comparing locale elements.
+ * src/manp.c (insert_override_dir): Remove.
+ (get_manpath_from_path, add_man_subdirs): Remove calls to
+ insert_override_dir.
+ (create_pathlist): Add OVERRIDE_DIR at the canonicalization stage
+ instead.
+ * NEWS.md: Document this.
+
+ Reported-by: Nikola Forró <nforro@redhat.com>
+ Tested-by: Nikola Forró <nforro@redhat.com>
+
+2022-03-06 Colin Watson <cjwatson@debian.org>
+
+ Update to Gnulib 20220301
+
+ In line with Gnulib, we now require Automake 1.14.
+
+ * bootstrap.conf (GNULIB_REVISION): Set to
+ 8c4f4d7a3c28f88b64fce2fb1d0dc0e570d1a482.
+ (buildreq): Bump required automake version to 1.14.
+ * configure.ac (AM_INIT_AUTOMAKE): Bump minimum version to 1.14.
+ * NEWS.md: Document this.
+
+2022-03-06 Colin Watson <cjwatson@debian.org>
+
+ Add some hardening options to the systemd service
+
+ Based on a patch by Johannes Segitz in the openSUSE packaging, although
+ I added `PrivateTmp=true` and `LockPersonality=true` as well.
+
+ * init/systemd/man-db.service.in: Add some hardening options. (This may
+ produce warnings with `systemd < 244`.)
+ * NEWS.md: Document this.
+
+2022-03-05 Colin Watson <cjwatson@debian.org>
+
+ Make the man-db manual build reproducible
+
+ Inspired by a patch from B. Wiedemann, but implemented differently.
+
+ * manual/Makefile.am (version): Set "td" string to the package's release
+ date, since otherwise groff's me package will use the current date.
+ * NEWS.md: Document this.
+
+2022-03-05 Dr. Werner Fink <werner@suse.de>
+
+ Fix showing HTML, as firefox runs into background too fast
+
+ [cjwatson: I'm not 100% keen on this approach, since it randomly depends
+ on how long the browser happens to take to launch and might be a bit
+ annoying for users of light browsers such as w3m, but there doesn't seem
+ to be any other good alternative for the more common case of people
+ using typical graphical browsers.]
+
+ Fixes Debian bug #335411 and Savannah bug #59542.
+
+ * src/man.c (format_display): Sleep for a few seconds after starting the
+ browser, since it may background itself before loading files.
+ * NEWS.md: Document this.
+
+2022-02-18 Мирослав Николић <miroslavnikolic@rocketmail.com>
+
+ Update Serbian manual page translation
+
+ * man/po4a/po/sr.po: Update from Translation Project.
+
+2022-02-17 Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>
+
+ Update Romanian translation
+
+ * po/ro.po: Update from Translation Project.
+ * man/THANKS: Update translator credit.
+
+2022-02-15 Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>
+
+ Update Romanian manual page translation
+
+ * man/po4a/po/ro.po: Update from Translation Project.
+
+2022-02-15 Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>
+
+ Update Romanian manual page translation
+
+ * man/po4a/po/ro.po: Update from Translation Project.
+ * man/THANKS: Add translator credit.
+
+2022-02-10 Colin Watson <cjwatson@debian.org>
+
+ Release man-db 2.10.1
+
+2022-02-10 Colin Watson <cjwatson@debian.org>
+
+ Add a top-level update-po target
+
+ This simplifies the common task of ensuring that both program and manual
+ page translation files are up to date.
+
+ * Makefile.am (update-po): New target.
+
+2022-02-09 Colin Watson <cjwatson@debian.org>
+
+ Fix warnings when building without zlib
+
+ * src/decompress.c (decompress_new_inprocess): Only define this function
+ if HAVE_LIBZ is defined.
+ (OPEN_FLAGS_UNUSED): New macro, defined to MAYBE_UNUSED if HAVE_LIBZ is
+ undefined.
+ (decompress_open): Declare flags as unused if HAVE_LIBZ is defined.
+
+2022-02-08 Colin Watson <cjwatson@debian.org>
+
+ Use Gnulib raise module
+
+ This can be made slightly more portable (e.g. to MinGW).
+
+ * bootstrap.conf (gnulib_modules): Add raise.
+ * lib/cleanup.c (sighandler): Call raise rather than kill.
+
+2022-02-08 Colin Watson <cjwatson@chiark.greenend.org.uk>
+
+ Merge branch 'libintl' into 'main'
+
+ libdb: link against libintl explicitly
+
+ See merge request cjwatson/man-db!3
+
+2022-02-08 Colin Watson <cjwatson@debian.org>
+
+ Use @LTLIBINTL@ rather than $(LIBINTL)
+
+ This matches our other Makefiles.
+
+2022-02-08 Boyuan Yang <073plan@gmail.com>
+
+ Update Simplified Chinese manual page translation
+
+ Fixes Debian bug #1005139.
+
+ * man/po4a/po/zh_CN.po: Update from Translation Project.
+
+2022-02-08 Colin Watson <cjwatson@debian.org>
+
+ Fix building on Cygwin
+
+ Achim reported that 2.10.0 no longer builds on Cygwin, while 2.9.4 did.
+ This was magnificently obscure, at least to this Unix-head. Initially
+ it appeared to be an issue with inter-library linking between libman and
+ libmandb, but 2.9.4 relied on that too, just slightly less so.
+
+ The actual problem was that libman only exported
+ `gl_get_setlocale_null_lock` and not all the other symbols it's supposed
+ to export, which is because that was explicitly marked for export and no
+ other symbols were. Building libman with `-Wl,--export-all-symbols`
+ fixes this; libman is intended as an aggregation of various helper
+ functions, including those from Gnulib, and it doesn't make sense to be
+ especially selective since it's only installed as a private library
+ anyway.
+
+ (I'm still not exactly sure why 2.9.4 didn't do the same thing, but this
+ seems to be a good enough fix.)
+
+ * configure.ac: Set LIBMAN_EXPORT_LDFLAGS to '-Wl,--export-all-symbols'
+ when linking with GNU ld on Windows platforms.
+ * lib/Makefile.am (libman_la_LDFLAGS): Add $(LIBMAN_EXPORT_LDFLAGS).
+ * src/Makefile.am (LIBMAN): Remove $(top_builddir)/gl/lib/libgnu.la; as
+ a convenience library, this is already incorporated into libman.la, and
+ specifying it again causes multiple-definition errors on Cygwin.
+ * src/tests/Makefile.am (get_mtime_LDADD): Likewise.
+ * NEWS.md: Document this.
+
+2022-02-08 Colin Watson <cjwatson@debian.org>
+
+ Document fix for building without iconv
+
+ * NEWS.md: Document previous change.
+
+2022-02-08 Colin Watson <cjwatson@debian.org>
+
+ Fix building without iconv
+
+ * src/convert.c (convert_to_locale) [!HAVE_ICONV]: Declare a function
+ rather than a macro.
+ (convert_to_locale): Add ATTRIBUTE_MALLOC.
+
+2022-02-08 Colin Watson <cjwatson@debian.org>
+
+ Remove some unused includes
+
+ * lib/encodings.c: Remove unused #include "pipeline.h". Explicitly
+ include <stdio.h>, previously included implicitly via "pipeline.h".
+ * lib/security.c, lib/util.c: Remove unused #include "pipeline.h".
+
+2022-02-07 Fabian Groffen <grobian@gentoo.org>
+
+ libdb: link against libintl explicitly
+
+ Necessary since gettext is used for translations.
+
+ [sam: originally found downstream in Gentoo on Gentoo Prefix on macOS.]
+
+2022-02-06 Colin Watson <cjwatson@debian.org>
+
+ Suppress Clang warnings with -Wconstant-logical-operand
+
+ * src/lexgrog.l (find_name): Explicitly test `*PROG_COL != '\0'` rather
+ than just `*PROG_COL`, to pacify `clang -Wconstant-logical-operand`.
+ * src/man.c (make_roff_command, make_display_command): Likewise.
+
+2022-02-06 Colin Watson <cjwatson@debian.org>
+
+ Revert "Reduce indentation depth using C99"
+
+ This reverts commit c4d20840f3487588c4a0da4397b1acb6dc83a1e5. Even in
+ C99, a declaration isn't valid immediately after a label; this didn't
+ become valid until C2x, although gcc allows it as an extension.
+
+ Fixes https://gitlab.com/cjwatson/man-db/-/issues/2.
+
+ * src/man.c (parse_opt): Restore enclosing block for OPT_WARNINGS.
+ * NEWS: Document this.
+
+2022-02-04 Colin Watson <cjwatson@debian.org>
+
+ Fix another edge case in mandb-symlink-target-timestamp
+
+ * src/tests/mandb-symlink-target-timestamp: Fix handling of the case
+ where the nanosecond part of a timestamp is exactly 0 (probably because
+ the filesystem doesn't support nanosecond resolution).
+
+2022-02-04 Colin Watson <cjwatson@debian.org>
+
+ Fix occasional mandb-symlink-target-timestamp test failure
+
+ * src/tests/mandb-symlink-target-timestamp: Fix handling of the case
+ where the nanosecond part of a timestamp starts with a zero.
+ * NEWS.md: Document this.
+
+2022-02-04 Colin Watson <cjwatson@debian.org>
+
+ Update man-db.lsm properly
+
+ Release man-db 2.10.0
+
+2022-01-31 Colin Watson <cjwatson@debian.org>
+
+ gitlab-ci: Run tests with VERBOSE=1
+
+ This makes it easier to diagnose test failures.
+
+ * .gitlab-ci.yml (build-distcheck:script, build-out-of-tree:script): Set
+ VERBOSE=1.
+
+2022-01-31 Colin Watson <cjwatson@debian.org>
+
+ man: Avoid spurious error messages due to subpages
+
+ Since man-db 2.4.2, `man` has behaved as if the `-l` option was given if
+ a manual page argument contains a slash. Since man-db 2.5.6, this has
+ interacted slightly poorly with the subpage feature, emitting spurious
+ error messages if given multiple manual page arguments some of which
+ include a slash. `man` no longer emits spurious error messages in this
+ case.
+
+ Fixes Savannah bug #53708.
+
+ * src/man.c (man): Move name-contains-slash case to ...
+ (man_maybe_local): ... here (new function).
+ (main): Call man_maybe_local instead of man where checking for names
+ containing slashes is acceptable.
+ * NEWS.md: Document this.
+
+2022-01-31 Colin Watson <cjwatson@debian.org>
+
+ mandb: Fix handling of link target mtimes
+
+ Depending on directory iteration order, mandb sometimes incorrectly
+ stored the mtime of a symlink as the mtime of its target as well.
+
+ Fixes Debian bug #691643.
+
+ * src/descriptions_store.c (store_descriptions): When adding entries
+ based on an ult_src trace, use the mtime of the target file if possible
+ rather than the mtime of the base entry.
+ * src/tests/Makefile.am (ALL_TESTS): Add mandb-symlink-target-timestamp.
+ * src/tests/get-mtime.c (main): Use lstat rather than stat.
+ * src/tests/mandb-symlink-target-timestamp: New file.
+ * NEWS.md: Document this.
+
+2022-01-30 Colin Watson <cjwatson@debian.org>
+
+ Update translation files
+
+ * po/man-db.pot, po/*.po: Update.
+
+2022-01-30 Colin Watson <cjwatson@debian.org>
+
+ Update to Gnulib 20220130
+
+ * bootstrap: Sync to Gnulib 735f319cde4ab7e98294557181d682564241d846.
+ * bootstrap.conf (GNULIB_REVISION): Set to
+ 735f319cde4ab7e98294557181d682564241d846.
+
+2022-01-30 Colin Watson <cjwatson@debian.org>
+
+ Simplify static analysis of fatal errors
+
+ The usual idiom for fatal error reporting in man-db is `error (FATAL,
+ ...)` (there are a few cases using different exit codes, but they're
+ less common). Unfortunately, there's no easy way to tell the compiler
+ that this call doesn't return, because `error (0, ...)` *does* return.
+ As a result, some call sites required extra work to give the compiler
+ this information, which can sometimes make a difference to static
+ analysis.
+
+ To simplify this, add a new `fatal` helper function which always exits
+ `FATAL` (i.e. 2) and never returns. This is declared with `_Noreturn`
+ so that the compiler can straightforwardly know what's going on.
+
+ * bootstrap.conf (gnulib_modules): Add verror.
+ (XGETTEXT_OPTIONS): Add --flag=fatal:2:c-format.
+ * lib/fatal.c, lib/fatal.h: New files.
+ * lib/Makefile.am (libman_la_SOURCES): Add fatal.c and fatal.h.
+ * src/tests/Makefile.am (AM_CPPFLAGS): Add -I$(top_srcdir)/lib.
+ (get_mtime_LDADD): Add $(top_builddir)/lib/libman.la.
+
+ * lib/pathsearch.c (pathsearch, directory_on_path): Use fatal.
+ * lib/sandbox.c (can_load_seccomp, make_seccomp_filter, _sandbox_load):
+ Likewise.
+ * lib/security.c (gripe_set_euid): Likewise.
+ * lib/xregcomp.c (xregcomp): Likewise.
+ * libdb/db_lookup.c (gripe_corrupt_data, dblookup_pattern): Likewise.
+ * libdb/db_ver.c (dbver_wr): Likewise.
+ * src/accessdb.c (main): Likewise.
+ * src/catman.c (parse_for_sec): Likewise.
+ * src/check_mandirs.c (chown_if_possible): Likewise.
+ * src/man-recode.c (recode): Likewise.
+ * src/man.c (open_cat_stream, format_display, gripe_converting_name):
+ Likewise.
+ * src/manconv.c (add_output): Likewise.
+ * src/manp.c (add_dir_to_path_list): Likewise.
+ * src/tests/get-mtime.c (main): Likewise.
+ * src/whatis.c (do_apropos): Likewise.
+ * src/zsoelim.l (<so>\"?[^ \t\n\"]+\"?): Likewise.
+
+ * libdb/db_lookup.c (gripe_corrupt_data, gripe_replace_key): Declare as
+ _Noreturn.
+
+ * src/accessdb.c (main): Remove now-unnecessary assertion.
+ * src/man.c (gripe_converting_name): Remove now-unnecessary abort.
+
+2022-01-30 Colin Watson <cjwatson@debian.org>
+
+ docs: Move COPYING and COPYING.LIB to top level
+
+ I think people are more likely to expect to find them here - I recently
+ even found myself confused by their previous placement.
+
+ * docs/COPYING, docs/COPYING.LIB: Move to ...
+ * COPYING, COPYING.LIB: ... here, respectively.
+ * lib/README: Update references.
+
+2022-01-30 Colin Watson <cjwatson@debian.org>
+
+ man: Don't modify MANSECT environment variable
+
+ Reported and diagnosed by Rob Hoelz. Fixes Savannah bug #58896.
+
+ * src/man.c (get_section_list): Copy colon_sep_section_list before
+ passing it to strtok.
+ * NEWS.md: Document this.
+
+2022-01-30 Colin Watson <cjwatson@debian.org>
+
+ libdb: Pacify gcc -Wempty-body
+
+ * libdb/mydbm.h (MYDBM_REORG) [NDBM, BTREE]: Change no-op macro
+ definition to avoid "suggest braces around empty body" warning in mandb.
+
+2022-01-30 Alejandro Cendejas Tena <alex.cendejas@gmail.com>
+
+ Update Spanish manual page translation
+
+ * man/po4a/po/es.po: Update from Translation Project.
+
+2022-01-30 Colin Watson <cjwatson@debian.org>
+
+ mandb: Don't modify DB without changing its mtime
+
+ In d9ebedad15 (man-db 2.7.0), mandb started relying on the modification
+ times of database files themselves rather than using a special row, in
+ order to make databases reproducible between otherwise-identical
+ installations (subject to predictable behaviour from the underlying
+ database).
+
+ There was a difficulty with this change. Because purging deleted pages
+ from the database opened and closed the database in a separate phase
+ before the main phase of looking for updated manual pages, and because
+ the main phase relies on comparing against the mtime of the database to
+ find changed files, I had to arrange to restore the original mtime at
+ the end of the purge phase in order to avoid confusing the main phase
+ into being a no-op. However, in some cases (perhaps due to other bugs,
+ but nevertheless), it's possible for the purge phase to find work to do
+ without the main phase ever finding any modified directories, which
+ meant that the net effect of mandb would be to modify its database
+ without changing its mtime. This is bad form, and confused some backup
+ systems into believing that the filesystem had been corrupted, since
+ files having their contents changed without updating their mtime is
+ indeed a likely symptom of filesystem corruption.
+
+ To avoid this, restructure our database-handling code so that a given
+ mandb run opens any given database at most once. This means that we no
+ longer need to modify mtimes manually, so the usual filesystem rules
+ apply.
+
+ Fixes Debian bug #1004355 and Ubuntu bug #1411633.
+
+ * bootstrap.conf (gnulib_modules): Remove futimens.
+ * libdb/db_btree.c (man_btree_close): Rename to ...
+ (man_btree_free): ... this. Check whether wrap->file is set. Free
+ wrap->mtime.
+ (man_btree_new): New function.
+ (man_btree_open): Convert to running on the result of man_btree_new.
+ (man_btree_get_time): Cache return value in wrap->mtime.
+ (man_btree_set_time): Remove.
+ * libdb/db_gdbm.c (man_gdbm_new): New function.
+ (man_gdbm_open_wrapper): Convert to running on the result of
+ man_gdbm_new.
+ (man_gdbm_get_time): Cache return value in wrap->mtime.
+ (man_gdbm_set_time): Remove.
+ (raw_close): Check whether wrap->file is set.
+ (man_gdbm_close): Rename to ...
+ (man_gdbm_free): ... this.
+ * libdb/db_ndbm.c (raw_close): Check whether wrap->file is set.
+ (man_ndbm_close): Rename to ...
+ (man_ndbm_free): ... this.
+ (man_ndbm_new): New function.
+ (man_ndbm_open): Convert to running on the result of man_ndbm_new.
+ (man_ndbm_get_time): Cache return value in wrap->mtime.
+ (man_ndbm_set_time): Remove.
+ * libdb/db_xdbm.c (man_xdbm_close): Rename to ...
+ (man_xdbm_free): ... this. Update all callers. Free dbf->mtime.
+ * libdb/db_xdbm.h (man_xdbm_close): Rename to ...
+ (man_xdbm_free): ... this.
+ * libdb/mydbm.h (man_gdbm_wrapper, man_ndbm_wrapper, man_btree_wrapper):
+ Add mtime.
+ (man_gdbm_new, man_ndbm_new, man_btree_new): Add prototypes.
+ (man_gdbm_open_wrapper, man_ndbm_open, man_btree_open): Update
+ prototypes.
+ (man_gdbm_set_time, man_ndbm_set_time, man_btree_set_time): Remove
+ prototypes.
+ (man_gdbm_close, man_ndbm_close, man_btree_close): Rename to ...
+ (man_gdbm_free, man_ndbm_free, man_btree_free): ... these, respectively.
+ (MYDBM_NEW): New macro.
+ (MYDBM_CTRWOPEN, MYDBM_RWOPEN, MYDBM_RDOPEN): Rename file argument to
+ wrap.
+ (MYDBM_CLOSE): Rename to ...
+ (MYDBM_FREE): ... this.
+ (MYDBM_SET_TIME): Remove macro.
+
+ * src/catman.c (parse_for_sec): Take a MYDBM_FILE argument rather than a
+ database path.
+ * src/check_mandirs.c (gripe_rwopen_failed, testmandirs, create_db,
+ update_db, purge_missing): Likewise.
+ * src/mandb.c (update_one_file, update_db_wrapper): Likewise.
+ * src/straycats.c (straycats): Likewise.
+ * src/check_mandirs.h (create_db, update_db, purge_missing): Update
+ prototypes.
+ * src/straycats.h (straycats): Likewise.
+
+ * src/check_mandirs.c (ensure_db_open): New function.
+ (testmandirs): Only open the database if it wasn't already open, and
+ don't close it.
+ (update_db, purge_missing): Likewise.
+ * src/mandb.c (update_one_file): Likewise.
+ * src/straycats.c (straycats): Assert that the database is already open,
+ and don't close it.
+
+ * src/accessdb.c (main): Update database opening code.
+ * src/catman.c (post_fork): Update database closing code.
+ (parse_for_sec): Move database opening and closing code to ...
+ (main): ... here, and update it.
+ * src/man.c (dbdelete_wrapper): Update database opening and closing
+ code.
+ * src/whatis.c (search): Update database opening and closing code.
+
+ * src/check_mandirs.c (purge_missing): Don't reorganize the database.
+ * src/mandb.c (mandb): Create a MYDBM_FILE from the database path, and
+ close and free it before returning. Rearrange purging so that it runs
+ on the temporary database copy, which we close and remove if
+ purge_missing finds a consistency problem requiring us to rescan from
+ scratch. Unless purging requires a rescan, all of the purge, main, and
+ stray cats phases now run on the same open database file. Reorganize
+ the database before closing it if the purge phase did any work.
+ (process_manpath): Rename the temporary database into place if either of
+ the purge or stray cats phases did any work, even if the main phase
+ didn't.
+
+ * src/check_mandirs.c (update_db_time): Remove.
+ (create_db): Don't manually update the database mtime.
+ (update_db, purge_missing): Likewise.
+
+ * src/tests/Makefile.am (ALL_TESTS): Add mandb-purge-updates-timestamp.
+ (check_PROGRAMS): Add get-mtime.
+ (get_mtime_SOURCES, get_mtime_LDADD): Add.
+ * src/tests/get-mtime.c: New file: test helper to get a file's mtime
+ portably.
+ * src/tests/mandb-purge-updates-timestamp: New file.
+ * .gitignore: Add src/tests/get-mtime.
+
+ * NEWS: Document this.
+
+2022-01-29 Colin Watson <cjwatson@debian.org>
+
+ man: Make dbdelete_wrapper use the correct database
+
+ Even if it has permissions to delete stale entries from the database,
+ dbdelete_wrapper can't assume that the most recently opened database is
+ the one from which it should delete the entry; it needs to use the
+ database to which the candidate in question belongs.
+
+ * src/man.c (database): Remove global variable.
+ (dbdelete_wrapper): Add a manpath argument, and attempt to open the
+ associated database locally.
+ (display_database_check): Pass the candidate's path (i.e. manpath) to
+ dbdelete_wrapper.
+ (try_db): Make the database path a local variable. Reorganize cleanup
+ paths.
+ (main): Stop freeing database, since it's no longer a global variable.
+
+2022-01-29 Colin Watson <cjwatson@debian.org>
+
+ mandb: Fix some details of error handling
+
+ * src/check_mandirs.c (testmandirs): Return -1 rather than -errno on
+ failure to create the database.
+ (create_db, update_db): Only call update_db_time if amount > 0, rather
+ than if it is non-zero (since it may be negative to indicate an error,
+ and updating the database time doesn't make sense in that case).
+ (update_db): Return -1 rather than EOF.
+ * src/mandb.c (update_db_wrapper): Check whether amount is non-zero
+ rather than whether it is unequal to EOF.
+
+2022-01-29 Colin Watson <cjwatson@debian.org>
+
+ libdb: Remove unused MYDBM_CRWOPEN macro
+
+ * libdb/mydbm.h (MYDBM_CRWOPEN): Remove.
+
+2022-01-29 Colin Watson <cjwatson@debian.org>
+
+ mandb: Call purge_missing and straycats from mandb
+
+ We can simplify some logic by pushing these down a layer.
+
+ * src/check_mandirs.c (purge_missing): Remove will_run_mandb argument,
+ which was always true due to --filename implying --no-purge.
+ * src/check_mandirs.h (purge_missing): Update prototype.
+ * src/mandb.c (process_manpath): Move purge_missing and straycats calls
+ to ...
+ (mandb): ... here.
+
+2022-01-29 Colin Watson <cjwatson@debian.org>
+
+ mandb: Factor out some duplicate code
+
+ * src/mandb.c (mandb): Move common create/update logic outside the
+ database-type-specific #ifdefs.
+
+2022-01-26 Colin Watson <cjwatson@debian.org>
+
+ Use bool in more places in mandb
+
+ * src/check_mandirs.c (testmandirs): Change "create" parameter and
+ "created" local variable types to bool. Update all callers.
+ (check_multi_key): Change "valid" local variable to bool.
+ (purge_missing): Change "will_run_mandb" parameter and "db_exists" local
+ variable types to bool. Update all callers.
+ * src/check_mandirs.h (purge_missing): Update prototype.
+ * src/mandb.c (struct tried_catdirs_entry): Change "seen" element type
+ to bool. Update all users.
+ (mandb): Change "should_create" and "cachedir_tag_exists" local variable
+ types to bool.
+ (process_manpath): Change "run_mandb" local variable type to bool.
+ (is_lang_dir): Return bool.
+
+2022-01-26 Yi-Jyun Pan <pan93412@gmail.com>
+
+ Update Traditional Chinese translation
+
+ * po/zh_TW.po: Update from Translation Project.
+ * man/THANKS: Update translator credit.
+
+2022-01-25 Colin Watson <cjwatson@debian.org>
+
+ Add Spanish translator credit
+
+ * man/THANKS: Add translator credit.
+
+2022-01-25 Petr Pisar <petr.pisar@atlas.cz>
+
+ Update Czech translation
+
+ * po/cs.po: Update from Translation Project.
+ * man/THANKS: Add translator credit.
+
+2022-01-24 Mario Blättermann <mario.blaettermann@gmail.com>
+
+ Update German manual page translation
+
+ * man/po4a/po/de.po: Update from Translation Project.
+
+2022-01-24 Alejandro Cendejas Tena <alex.cendejas@gmail.com>
+
+ Update Spanish manual page translation
+
+ * man/po4a/po/es.po: Update from Translation Project.
+
+2022-01-24 Alejandro Cendejas Tena <alex.cendejas@gmail.com>
+
+ Update Spanish manual page translation
+
+ * man/po4a/po/es.po: Update from Translation Project.
+
+2022-01-24 Colin Watson <cjwatson@debian.org>
+
+ Fix upload/release machinery to handle .tar.xz
+
+ Release man-db 2.10.0-pre1
+
+2022-01-24 Colin Watson <cjwatson@debian.org>
+
+ Improve documentation of search path handling
+
+ Fixes Savannah bug #61862.
+
+ * man/man5/manpath.man5 (SEARCH PATH): New section.
+ * man/man1/apropos.man1 (ENVIRONMENT): Refer to manpath(5) for details
+ of MANPATH.
+ * man/man1/man.man1 (ENVIRONMENT): Likewise.
+ * man/man1/manpath.man1 (ENVIRONMENT): Likewise.
+ * man/man1/whatis.man1 (ENVIRONMENT): Likewise.
+ * man/man8/catman.man8 (ENVIRONMENT): Likewise.
+
+2022-01-24 Colin Watson <cjwatson@debian.org>
+
+ Fix typos in descriptions of --systems
+
+ Fixes Savannah bug #61861.
+
+ * man/man1/apropos.man1 (OPTIONS): "system's" → "systems'".
+ * man/man1/man.man1 (Finding manual pages): Likewise.
+ * man/man1/manpath.man1 (OPTIONS): Likewise.
+ * man/man1/whatis.man1 (OPTIONS): Likewise.
+
+2022-01-24 Colin Watson <cjwatson@chiark.greenend.org.uk>
+
+ Merge branch 'optimize-decompression' into 'main'
+
+ Significantly improve mandb performance
+
+ See merge request cjwatson/man-db!2
+
+2022-01-24 Colin Watson <cjwatson@debian.org>
+
+ Optimize manconv_inprocess for UTF-8 target encoding
+
+ If the target encoding is UTF-8, then manconv's first stage (trial
+ conversion from UTF-8) can more efficiently be replaced with UTF-8
+ validation, leaving the original decompressed buffer unchanged on
+ success. Suggested by Steinar H. Gunderson.
+
+ * src/manconfig.h (UNLIKELY): New macro.
+ * src/decompress.c (decompress_inprocess_buf): New function.
+ * src/decompress.h (decompress_inprocess_buf): Add prototype.
+ * src/utf8.c, src/utf8.h: New files, based on glib's UTF-8 validation
+ code.
+ * src/manconv_client.c (manconv_inprocess): Optimize case where
+ source_encoding is not UTF-8 and target_encoding is UTF-8 by returning
+ early if UTF-8 validation passes.
+ * src/Makefile.am (lexgrog_SOURCES, man_SOURCES, man_recode_SOURCES,
+ mandb_SOURCES): Add utf8.c and utf8.h.
+
+2022-01-24 Colin Watson <cjwatson@debian.org>
+
+ Significantly improve mandb performance
+
+ Forking large numbers of subprocesses is slow. An ideal fix would
+ involve work in libpipeline (e.g. generator functions or
+ multithreading), but in the meantime we can do much better in the common
+ case of moderately-sized pages compressed using zlib by doing in-process
+ decompression. On my test system, this takes `mandb -c` from 344
+ seconds (or 152 seconds with `MAN_DISABLE_SECCOMP=1` before 50200d151d,
+ or 78 seconds with `MAN_DISABLE_SECCOMP=1` after 50200d151d) to 10
+ seconds.
+
+ Thanks to Steinar H. Gunderson for a proof of concept, which I reworked
+ extensively.
+
+ Fixes Debian bugs #630799 and #1003089, and Ubuntu bug #1858777.
+
+ * NEWS.md: Document this. Bump version to 2.10.0.
+ * src/decompress.c (enum decompress_tag): Add DECOMPRESS_INPROCESS.
+ (struct decompress_inprocess): New structure.
+ (struct decompress): Add an inprocess element.
+ (decompress_new_inprocess, decompress_try_zlib, decompress_is_pipeline,
+ decompress_inprocess_len, decompress_inprocess_replace): New functions.
+ (decompress_open): Add flags argument. Try in-process zlib
+ decompression if requested via DECOMPRESS_ALLOW_INPROCESS. Update all
+ callers to pass a flags argument (0 unless otherwise stated).
+ (decompress_start, decompress_read, decompress_peek,
+ decompress_peek_skip, decompress_readline, decompress_peekline,
+ decompress_wait, decompress_free): Implement in-process mode.
+ * src/decompress.h (DECOMPRESS_ALLOW_INPROCESS): Define.
+ (decompress_open): Update prototype.
+ (decompress_fdopen): Update comment to indicate that this always uses
+ pipeline-based decompression.
+ (decompress_is_pipeline, decompress_inprocess_len,
+ decompress_inprocess_replace): Add prototypes.
+ (decompress_start, decompress_wait): Update comments to document
+ behaviour for in-process decompressors.
+
+ * src/manconv.c (add_output): Add output buffer argument; append to
+ output buffer if given, otherwise write to stdout as before.
+ (try_iconv): Add and pass output buffer argument.
+ (manconv): Likewise. Update all callers to pass output buffer argument
+ (NULL unless otherwise stated).
+ * src/manconv.h (struct manconv_outbuf): New structure.
+ (manconv): Update prototype.
+ * src/manconv_client.c (manconv_inprocess): New function.
+ * src/manconv_client.h (manconv_inprocess): Add prototype.
+
+ * src/lexgrog.l (find_name): Request in-process decompression unless
+ operating on a cat page. Use manconv_inprocess rather than add_manconv
+ in the in-process case.
+ * src/man.c (grep): Request in-process decompression.
+ * src/ult_src.c (ult_src): Likewise.
+ * src/zsoelim.l (try_compressed, zsoelim_open_file): Likewise.
+
+2022-01-24 Colin Watson <cjwatson@debian.org>
+
+ Avoid a manconv subprocess in more cases
+
+ Suggested by Steinar H. Gunderson.
+
+ * src/manconv_client.c (add_manconv): Return early if the source and
+ target encodings are equal, not just if they're both UTF-8.
+
+2022-01-22 Colin Watson <cjwatson@debian.org>
+
+ Make manconv error handling less abrupt
+
+ Exiting immediately on errors works OK if manconv is only ever used in a
+ subprocess, but that approach makes it hard to use in an in-process
+ context.
+
+ * src/manconv.c (add_output): New function, factored out of try_iconv
+ and manconv.
+ (tried_iconv): New enumeration.
+ (try_iconv): Use add_output. Return TRIED_ICONV_FATAL where we would
+ previously have exited the process.
+ (manconv): Use add_output. Return non-zero if add_output returns
+ non-zero or try_iconv returns TRIED_ICONV_FATAL.
+ * src/manconv.h (manconv): Update prototype.
+ * src/manconv_client.c (manconv_stdin): Exit with FATAL if manconv
+ returns non-zero.
+ * src/manconv_main.c (main): Likewise.
+
+2022-01-22 Colin Watson <cjwatson@debian.org>
+
+ Clarify argument naming in add_manconv
+
+ Suggested by Steinar H. Gunderson.
+
+ * src/manconv_client.c (add_manconv): Rename source to source_encoding,
+ and target to target_encoding.
+ * src/manconv_client.h (add_manconv): Update prototype.
+
+2022-01-19 Colin Watson <cjwatson@debian.org>
+
+ Add a layer of abstraction to decompression
+
+ It would be useful to have an optimized version of the common case of
+ zlib decompression that doesn't involve forking subprocesses. As
+ preparation for this, insert an abstraction layer around code that reads
+ from decompressors. This abstraction layer looks almost identical to
+ the `libpipeline` API except for name changes, but having it allows us
+ to implement decompression in some other way.
+
+ Code that requires `libpipeline`-based decompression can use
+ `decompress_get_pipeline` to assert that the decompressor uses
+ `libpipeline` and return the underlying `pipeline *`.
+
+ * src/decompress.c (enum decompress_tag, struct decompress,
+ decompress_new_pipeline, decompress_get_pipeline, decompress_start,
+ decompress_read, decompress_peek, decompress_peek_skip,
+ decompress_readline, decompress_peekline, decompress_wait,
+ decompress_free): Add.
+ (decompress_open, decompress_fdopen): Return `decompress *` rather than
+ `pipeline *`.
+ * src/decompress.h (decompress): New typedef.
+ (decompress_open, decompress_fdopen): Update prototypes.
+ (decompress_get_pipeline, decompress_start, decompress_read,
+ decompress_peek, decompress_peek_skip, decompress_readline,
+ decompress_peekline, decompress_wait, decompress_free): Add prototypes.
+
+ * src/lexgrog.l (YY_INPUT, find_name, find_name_decompressed): Use
+ decompression API.
+ * src/man-recode.c (recode): Likewise.
+ * src/man.c (get_preprocessors_from_file, get_preprocessors,
+ make_roff_command, format_display_and_save, format_display,
+ display_catman, display, display_pages, grep): Likewise.
+ * src/manconv.c (check_preprocessor_encoding, try_iconv, manconv):
+ Likewise.
+ * src/manconv_client.c (manconv_stdin): Likewise.
+ * src/manconv_main.c (main): Likewise.
+ * src/straycats.c (check_for_stray): Likewise.
+ * src/ult_src.c (ult_src): Likewise.
+ * src/zsoelim.l (YY_INPUT, <<EOF>>, zsoelim_parse_file, try_compressed,
+ zsoelim_open_file): Likewise.
+
+ * src/lexgrog.h (find_name_decompressed): Update prototype.
+ * src/manconv.h (check_preprocessor_encoding, manconv): Likewise.
+
+2022-01-19 Alejandro Cendejas Tena <alex.cendejas@gmail.com>
+
+ Update Spanish manual page translation
+
+ * man/po4a/po/es.po: Update from Translation Project.
+
+2022-01-18 Colin Watson <cjwatson@debian.org>
+
+ Fix missing options when invoking troff
+
+ Broken by 000cda3ec5.
+
+ * configure.ac: Move PROG_TROFF definition after all assignments to
+ $troff.
+
+2022-01-18 Colin Watson <cjwatson@debian.org>
+
+ Fix override-dir handling
+
+ Broken by 000cda3ec5.
+
+ * m4/man-arg-override-dir.m4 (MAN_ARG_OVERRIDE_DIR): Remove superfluous
+ "$" from AC_DEFINE_UNQUOTED call.
+
+2022-01-17 Colin Watson <cjwatson@debian.org>
+
+ Remove AM_MAINTAINER_MODE
+
+ I enabled this in fb4afb0b75, saying that timestamps were too fragile
+ for the rebuild rules to work well. However, I've changed my mind: git
+ is good at making sure that file modification times are updated when
+ checking out a different commit, and tarballs include timestamp
+ information. Moreover, with `AM_MAINTAINER_MODE` and without passing
+ `--enable-maintainer-mode`, flex output isn't automatically regenerated,
+ which is impossibly annoying and has tripped me up countless times since
+ 2010.
+
+ * configure.ac (AM_MAINTAINER_MODE): Remove.
+
+2022-01-17 Colin Watson <cjwatson@debian.org>
+
+ NEWS.md: Document previous commit
+
+2022-01-17 Colin Watson <cjwatson@chiark.greenend.org.uk>
+
+ Merge branch 'C0rn3j-main-patch-74046' into 'main'
+
+ man-db.timer: Use RandomizedDelaySec over AccuracySec
+
+ See merge request cjwatson/man-db!1
+
+2022-01-17 Colin Watson <cjwatson@debian.org>
+
+ Avoid libpipeline linkage in libman
+
+ Since it's only used by one function, and not all of man-db's tools need
+ libpipeline in their own right (e.g. accessdb), it seems worth pushing
+ this up a layer.
+
+ * lib/encodings.c (struct conversion_entry, conversion_table,
+ convert_encoding, check_preprocessor_encoding): Move to ...
+ * src/manconv.c: ... here.
+ * lib/encodings.h (check_preprocessor_encoding): Move to ...
+ * src/manconv.h: ... here.
+ * lib/Makefile.am (libman_la_CPPFLAGS): Remove $(libpipeline_CFLAGS).
+ (libman_la_LDFLAGS): Remove $(libpipeline_LIBS).
+ * src/man-recode.c, src/man.c, src/manconv.c: Include manconv.h.
+
+2022-01-17 Colin Watson <cjwatson@debian.org>
+
+ Pacify cppcheck in check_preprocessor_encoding
+
+ * lib/encoding.c (check_preprocessor_encoding): Explicitly initialize
+ directive_end and ppsearch. If directive is non-NULL by the time these
+ are used then they're always initialized, but cppcheck didn't manage to
+ spot that.
+
+2022-01-16 Colin Watson <cjwatson@debian.org>
+
+ Update to Gnulib 20220116
+
+ * bootstrap: Sync to Gnulib 1eae0f7ea3c220d054025f2c9211700665f9f4a0.
+ * bootstrap.conf (GNULIB_REVISION): Set to
+ 1eae0f7ea3c220d054025f2c9211700665f9f4a0.
+
+2022-01-16 Colin Watson <cjwatson@debian.org>
+
+ Move some more declarations out of manconfig.h
+
+ Header includes should be in the same translation unit as the code that
+ uses them rather than being ambient across the whole project.
+
+ * include/manconfig.h: Remove obsolete header comment about program
+ paths.
+
+ * include/manconfig.h: Remove includes of "xvasprintf.h", <stddef.h>,
+ "xalloc.h", and "xstrndup.h", as well as "struct pipeline" declaration.
+ Update all files that relied on these to include/declare them directly
+ instead as needed.
+
+ * include/manconfig.h (MAN_DB, mkdbname): Move to ...
+ * libdb/mydbm.h: ... here.
+
+2022-01-16 Colin Watson <cjwatson@debian.org>
+
+ Move appendstr out of manconfig.h
+
+ * include/manconfig.h (appendstr): Move to ...
+ * lib/appendstr.h: ... here (new file).
+ * lib/Makefile.am (libman_la_SOURCES): Add appendstr.h.
+ * lib/README: Update file names.
+ * lib/appendstr.c, libdb/db_delete.c, src/catman.c, src/check_mandirs.c,
+ src/compression.c, src/filenames.c, src/globbing.c, src/man.c,
+ src/manconv_client.c, src/manconv_main.c, src/manp.c, src/straycats.c,
+ src/whatis.c, src/zsoelim.l: Include appendstr.h.
+
+2022-01-16 Colin Watson <cjwatson@debian.org>
+
+ Move debug-related declarations out of manconfig.h
+
+ * include/manconfig.h (debug_level, init_debug, debug, debug_error):
+ Move to ...
+ * lib/debug.h: ... here (new file).
+ * lib/Makefile.am (libman_la_SOURCES): Add debug.h.
+ * lib/README: Update file names.
+ * lib/debug.c, lib/encodings.c, lib/sandbox.c, lib/security.c,
+ lib/util.c, libdb/db_btree.c, libdb/db_delete.c, libdb/db_gdbm.c,
+ libdb/db_lookup.c, libdb/db_store.c, libdb/db_ver.c, src/accessdb.c,
+ src/catman.c, src/check_mandirs.c, src/descriptions.c,
+ src/descriptions_store.c, src/filenames.c, src/globbing.c,
+ src/globbing_test.c, src/lexgrog_test.c, src/man-recode.c, src/man.c,
+ src/manconv.c, src/manconv_main.c, src/mandb.c, src/manp.c,
+ src/manpath.c, src/straycats.c, src/ult_src.c, src/whatis.c,
+ src/zsoelim.l, src/zsoelim_main.c: Include debug.h.
+
+2022-01-16 Colin Watson <cjwatson@debian.org>
+
+ Move create_tempdir out of manconfig.h
+
+ * include/manconfig.h (create_tempdir): Move to ...
+ * lib/tempfile.h: ... here (new file).
+ * lib/Makefile.am (libman_la_SOURCES): Add tempfile.h.
+ * lib/tempfile.c, src/man.c: Include tempfile.h.
+
+2022-01-16 Colin Watson <cjwatson@debian.org>
+
+ Move util.c-related declarations out of manconfig.h
+
+ * include/manconfig.h (is_changed, is_directory, escape_shell,
+ remove_directory, trim_spaces, lang_dir, init_locale): Move to ...
+ * lib/util.h: ... here (new file).
+ * lib/Makefile.am (libman_la_SOURCES): Add util.h.
+ * lib/util.c, src/accessdb.c, src/catman.c, src/check_mandirs.c,
+ src/descriptions.c, src/globbing.c, src/globbing_test.c, src/lexgrog.l,
+ src/lexgrog_test.c, src/man-recode.c, src/man.c, src/manconv_main.c,
+ src/mandb.c, src/manp.c, src/manpath.c, src/straycats.c, src/whatis.c,
+ src/zsoelim_main.c: Include util.h.
+
+2022-01-16 Colin Watson <cjwatson@debian.org>
+
+ Move comp_info and comp_file out of manconfig.h
+
+ * include/manconfig.h (comp_info, comp_file): Move to ...
+ * src/compression.h: ... here (new file).
+ * src/Makefile.am (lexgrog_SOURCES, man_SOURCES, man_recode_SOURCES,
+ mandb_SOURCES): Add compression.h.
+ * src/compression.c, src/filenames.c, src/man-recode.c, src/man.c,
+ src/straycats.c, src/ult_src.c: Include compression.h.
+
+2022-01-16 Colin Watson <cjwatson@debian.org>
+
+ Move straycats out of manconfig.h
+
+ * include/manconfig.h (straycats): Move to ...
+ * src/straycats.h: ... here (new file).
+ * src/Makefile.am (mandb_SOURCES): Add straycats.h.
+ * src/mandb.c, src/straycats.c: Include straycats.h.
+
+2022-01-16 Colin Watson <cjwatson@debian.org>
+
+ Use lexgrog type definitions consistently
+
+ * include/manconfig.h (MANPAGE, CATPAGE): Move to ...
+ * src/lexgrog.h (MANPAGE, CATPAGE): ... here.
+ * src/lexgrog.l (find_name, find_name_decompressed): Compare p_lg->type
+ against CATPAGE rather than testing its truth value.
+ * src/lexgrog_test.c (main): Set type to MANPAGE/CATPAGE rather than
+ 0/1.
+
+2022-01-16 Colin Watson <cjwatson@debian.org>
+
+ Update translation files
+
+ * po/man-db.pot, po/*.po: Update.
+
+2022-01-16 Colin Watson <cjwatson@debian.org>
+
+ Fix build system following changes to include/*.h
+
+ * Makefile.am (noinst_HEADERS): Add include/comp_src.h and
+ include/manconfig.h.
+ * lib/Makefile.am (libman_la_CPPFLAGS): Replace
+ -I$(top_builddir)/include with -I$(top_srcdir)/include.
+ * libdb/Makefile.am (libmandb_la_CPPFLAGS): Likewise.
+ * src/Makefile.am (AM_CPPFLAGS): Likewise.
+ * src/tests/Makefile.am (AM_CPPFLAGS): Likewise.
+
+2022-01-16 Colin Watson <cjwatson@debian.org>
+
+ Remove Checker support
+
+ The GNU Checker package was last released in 2005, and its web page
+ (https://www.gnu.org/software/checker/) says that it has been
+ decommissioned in favour of Valgrind.
+
+ * include/manconfig.h (chkr_garbage_detector): Remove.
+ * src/man.c (main): Remove call to chkr_garbage_detector.
+ * src/mandb.c (main): Likewise.
+ * src/whatis.c (search): Likewise.
+
+2022-01-16 Colin Watson <cjwatson@debian.org>
+
+ Remove obsolete include/README
+
+ * include/README: Remove; it claimed that this directory contains files
+ created by configure, which is no longer true, and it said nothing else
+ useful.
+ * Makefile.am (dist_noinst_DATA): Remove include/README.
+
+2022-01-16 Colin Watson <cjwatson@debian.org>
+
+ Stop generating include/*.h from configure
+
+ This was inconvenient when making changes to those central header files.
+ All `configure`-generated preprocessor symbols are now in `config.h`.
+
+ * configure.ac: Define various PROG_* symbols. Remove AC_SUBST calls
+ for compressors and decompressors.
+ (AC_CONFIG_FILES): Remove include/comp_src.h and include/manconfig.h.
+ * m4/man-arg-override-dir.m4: Define OVERRIDE_DIR symbol.
+ * include/manconfig.h.in: Rename to ...
+ * include/manconfig.h: ... this. Remove PROG_*, OVERRIDE_DIR, and
+ COMPRESS_EXT definitions.
+ * include/comp_src.h.in: Rename to ...
+ * include/comp_src.h: ... this.
+ * README.md: Update references to include/manconfig.h.
+ * .gitignore: Remove include/*.h.
+
+2022-01-16 Colin Watson <cjwatson@debian.org>
+
+ Rename program preprocessor symbols to PROG_*
+
+ This is mainly in order to avoid potential confusion with `PIC` (defined
+ when building position-independent code), but I renamed all these
+ variables for consistency.
+
+ * include/manconfig.h.in (PAGER, CAT, WEB_BROWSER, TR, GREP, TROFF,
+ NROFF, EQN, NEQN, TBL, COL, VGRIND, REFER, GRAP, PIC, COMPRESSOR,
+ GUNZIP, UNCOMPRESS, BUNZIP2, UNLZMA, UNXZ, LZIP, UNZSTD): Rename to ...
+ (PROG_PAGER, PROG_CAT, PROG_BROWSER, PROG_TR, PROG_GREP, PROG_TROFF,
+ PROG_NROFF, PROG_EQN, PROG_NEQN, PROG_TBL, PROG_COL, PROG_VGRIND,
+ PROG_REFER, PROG_GRAP, PROG_PIC, PROG_COMPRESSOR, PROG_GUNZIP,
+ PROG_UNCOMPRESS, PROG_BUNZIP2, PROG_UNLZMA, PROG_UNXZ, PROG_LZIP,
+ PROG_UNZSTD): ... these (respectively). Update all references.
+
+2022-01-16 Colin Watson <cjwatson@debian.org>
+
+ Move lexgrog-related bits out of manconfig.h
+
+ It's generally cleaner for things like this to be in a dedicated header
+ file.
+
+ * include/manconfig.h.in (struct lexgrog, find_name,
+ find_name_decompressed): Move to ...
+ * src/lexgrog.h: ... here (new file). Simplify declarations slightly.
+ * include/manconfig.h.in (lexgrog filter enum): Move to ...
+ * src/lexgrog.l: ... here.
+ * src/Makefile.am (lexgrog_SOURCES, mandb_SOURCES): Add lexgrog.h.
+ * src/check_mandirs.c, src/lexgrog.l, src/lexgrog_test.c,
+ src/straycats.c: Include lexgrog.h.
+
+2022-01-16 Martin <spleefer90@gmail.com>
+
+ man-db.timer: Use RandomizedDelaySec Avoids congesting resources, otherwise this runs daily at 12:00 and 00:00 https://www.freedesktop.org/software/systemd/man/systemd.timer.html
+
+2022-01-09 Colin Watson <cjwatson@debian.org>
+
+ Recognize Arabic and Persian translations of NAME
+
+ * src/lexgrog.l (ar_name, fa_name): Add.
+ (name): Add ar_name and fa_name.
+ * NEWS.md: Document this.
+
+2022-01-09 Colin Watson <cjwatson@debian.org>
+
+ Note Macedonian support
+
+ * src/lexgrog.l: Note that bg_name also works for mk (Macedonian).
+
+2022-01-09 Colin Watson <cjwatson@debian.org>
+
+ Downgrade "malformed .lf request" warning to debug
+
+ Fixes Debian bug #998426.
+
+ * src/zsoelim.l (<lfnumber,lfname>.): Downgrade and rephrase message,
+ since *roff arithmetic expressions are valid here and we can't
+ reasonably parse them.
+ * NEWS.md: Document this.
+
+2022-01-09 Colin Watson <cjwatson@debian.org>
+
+ NEWS.md: Fix rendering with some parsers
+
+2022-01-09 Colin Watson <cjwatson@debian.org>
+
+ Use MAYBE_UNUSED rather than _GL_UNUSED
+
+ We should be using the public name from Gnulib's `attribute.h`.
+
+ * lib/orderfiles.c (order_files) [!HAVE_LINUX_FIEMAP_H &&
+ !HAVE_POSIX_FADVISE]: Use MAYBE_UNUSED rather than _GL_UNUSED.
+ * lib/sandbox.c (_sandbox_load) [!HAVE_LIBSECCOMP]: Likewise.
+ * lib/security.c (drop_privs): Likewise.
+ * libdb/db_ndbm.c (unsorted_nextkey): Likewise.
+ * src/accessdb.c (help_filter): Likewise.
+ * src/check_mandirs.c (chown_if_possible) [!MAN_OWNER]: Likewise.
+ * src/convert.c (close_conv_to_locale): 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.
+
+2022-01-09 Colin Watson <cjwatson@debian.org>
+
+ lexgrog: Produce output in the user's locale
+
+ Fixes Debian bug #970482.
+
+ * src/whatis.c (simple_convert): Move to ...
+ * src/convert.c: ... here (new file). Rename to convert_to_locale, and
+ automatically handle setup/teardown of the iconv descriptor.
+ * src/convert.h: New file.
+
+ * src/whatis.c (display): Use convert_to_locale instead of
+ simple_convert.
+ (main): Remove setup/teardown of iconv descriptor, now handled
+ automatically by convert_to_locale.
+ * src/lexgrog_test.c (main): Convert name and whatis to the user's
+ locale.
+ * src/Makefile.am (lexgrog_SOURCES, whatis_SOURCES): Add convert.c and
+ convert.h.
+ * NEWS.md: Document this.
+
+2022-01-03 Colin Watson <cjwatson@debian.org>
+
+ Add man-pages(7) reference to man(1)
+
+ Fixes Debian bug #974174.
+
+ * man/man1/man.man1 (DESCRIPTION): Add man-pages(7) reference to
+ description of section 7.
+ * man/po4a/po/man-db-manpages.pot, man/po4a/po/*.po: Update.
+ * NEWS.md: Document this.
+
+2022-01-03 Colin Watson <cjwatson@debian.org>
+
+ Document MAN_DISABLE_SECCOMP and PIPELINE_DEBUG
+
+ Fixes Debian bug #941622.
+
+ * man/man1/man.man1 (ENVIRONMENT): Document MAN_DISABLE_SECCOMP and
+ PIPELINE_DEBUG.
+ * man/po4a/po/man-db-manpages.pot, man/po4a/po/*.po: Update.
+ * NEWS: Document this.
+
+2022-01-03 Colin Watson <cjwatson@debian.org>
+
+ NEWS: Document previous commit
+
+2022-01-03 Colin Watson <cjwatson@debian.org>
+
+ Reduce overhead of MAN_DISABLE_SECCOMP=1
+
+ If MAN_DISABLE_SECCOMP=1 is set (or if seccomp is otherwise
+ unavailable), then there's no need to call seccomp_init and friends,
+ which can have significant overhead even if we never actually load the
+ resulting filter.
+
+ Pointed out by Steinar H. Gunderson in https://bugs.debian.org/1003089.
+
+ * lib/sandbox.c (make_seccomp_filter): Return NULL early if
+ can_load_seccomp returns false.
+ (_sandbox_load): Return early if the relevant context is NULL.
+ (sandbox_free): Only call seccomp_release if the relevant context is
+ non-NULL.
+
+2022-01-03 Colin Watson <cjwatson@debian.org>
+
+ Indicate that merge requests are preferred
+
+ * docs/HACKING.md (Sending patches): Describe merge request workflow and
+ indicate that it is preferred.
+
+2022-01-03 Colin Watson <cjwatson@debian.org>
+
+ Reformat hacking documentation as Markdown
+
+ * docs/HACKING: Move to ...
+ * docs/HACKING.md: ... here. Reformat as Markdown.
+ * docs/Makefile.am (dist_noinst_DATA): Replace HACKING with HACKING.md.
+
+2022-01-03 Colin Watson <cjwatson@debian.org>
+
+ Add release automation
+
+ When a tag is pushed to GitLab, upload the bootstrapped source tarball
+ to the package registry, and create a release in GitLab associated with
+ the tag.
+
+ * .gitlab-ci.yml (stages): Remove test, since it had no jobs. Add
+ upload and release.
+ (build-distcheck:script): Configure with --enable-maintainer-mode, to
+ ensure that flex-generated scanners are fresh.
+ (upload, release): New jobs.
+ * release.sh: Remove. GitLab CI handles building releases now.
+ * Makefile.am (EXTRA_DIST): Remove release.sh.
+ * docs/HACKING: Update for GitLab-based release process.
+
+2022-01-03 Colin Watson <cjwatson@debian.org>
+
+ Reformat release notes as Markdown
+
+ * NEWS: Move to ...
+ * NEWS.md: ... here. Reformat as Markdown.
+ * Makefile.am (dist_noinst_DATA): Remove NEWS; Automake automatically
+ includes this file (or NEWS.md) in the distribution without help.
+ * README.md, docs/HACKING: Refer to NEWS.md instead of NEWS.
+
+2022-01-02 Colin Watson <cjwatson@debian.org>
+
+ Remove superfluous quotes
+
+ * Makefile.am (gen_start_date): Remove superfluous quotes.
+
+2022-01-02 Colin Watson <cjwatson@debian.org>
+
+ Add build-distcheck CI artifact
+
+ This should eventually allow publishing release tarballs built by a CI
+ process rather than on my laptop.
+
+ * .gitlab-ci.yml (variables): Set GIT_DEPTH to 0; we need full history
+ in order to build the ChangeLog file.
+ (bootstrap:before_script): Add wget, needed to fetch Gnulib PO files.
+ (build-distcheck:before_script): Add git, needed by gitlog-to-changelog.
+ (build-distcheck:artifacts): Add bootstrapped/*.tar.xz.
+
+2022-01-02 Colin Watson <cjwatson@debian.org>
+
+ Switch CI image to debian:unstable
+
+ This gives us newer versions of various dependencies such as the
+ autotools.
+
+ * .gitlab-ci.yml (default:image): Switch from gcc to debian:unstable.
+ (pre-commit:before_script, bootstrap:before_script): Explicitly install
+ git.
+
+2022-01-02 Colin Watson <cjwatson@debian.org>
+
+ Pacify gcc -fanalyzer in manconv
+
+ * src/manconv_main.c (main): Assert that from_code is non-NULL; this is
+ guaranteed by the argp state machine, but the compiler can't prove that.
+
+2022-01-02 Colin Watson <cjwatson@debian.org>
+
+ Fix crash in globbing if run with no arguments
+
+ * src/globbing_test.c (parse_opt): Emit a usage message if there are no
+ non-option arguments.
+ (main): Assert that remaining_args is non-NULL; this is now guaranteed
+ by the argp state machine, but the compiler can't prove that.
+ * NEWS: Document this.
+
+2022-01-02 Colin Watson <cjwatson@debian.org>
+
+ Pacify gcc -fanalyzer in catman
+
+ It isn't actually possible for sections to be NULL after argp parsing
+ has finished, but "gcc -fanalyzer" can't easily determine that, and it's
+ easy enough to arrange for it not to matter.
+
+ * src/catman.c (main): Handle case where sections is NULL.
+
+2022-01-02 Colin Watson <cjwatson@debian.org>
+
+ Pacify gcc -fanalyzer in some database functions
+
+ In GCC 11.2.0, -fanalyzer seems to get confused by copies by assignment
+ of "struct datum", and thinks that there are use-after-free or
+ double-free possibilities with multiple loop iterations. These seem to
+ be false positives, so ignore them for now.
+
+ * libdb/db_lookup.c (dblookup_pattern): Ignore false use-after-free
+ diagnostic.
+ * src/accessdb.c (main): Ignore false double-free diagnostics.
+ * src/catman.c (parse_for_sec): Ignore false use-after-free diagnostics.
+ * src/check_mandirs.c (sanity_check_db): Ignore false double-free
+ diagnostics.
+ (purge_pointers, purge_missing): Ignore false use-after-free
+ diagnostics.
+ * src/whatis.c (do_apropos): Ignore false use-after-free and double-free
+ diagnostics.
+
+2022-01-02 Colin Watson <cjwatson@debian.org>
+
+ Pacify gcc -fanalyzer in dbdelete
+
+ The refs list can't in fact be empty by this point (because we checked
+ earlier that we could look up this_ref in it), but it's hard for "gcc
+ -fanalyzer" to prove that, so help it understand that multi_content can
+ never end up being NULL.
+
+ * libdb/db_delete.c (dbdelete): Initialize multi_content before looping
+ over refs.
+
+2022-01-02 Colin Watson <cjwatson@debian.org>
+
+ Assert that some xasprintf calls return non-NULL
+
+ "gcc -fanalyzer" notices that xasprintf can return NULL in some
+ situations (string length > INT_MAX, invalid format string, or multibyte
+ conversion error), and that we weren't handling this in various cases
+ where we use the return value in contexts that require non-NULL values.
+ The situations seem obscure enough for simple asserts to be appropriate.
+
+ * lib/pathsearch.c (pathsearch): Assert that xasprintf returns non-NULL.
+ * lib/tempfile.c (create_tempdir): Likewise.
+ * lib/util.c (remove_directory): Likewise.
+ * libdb/db_lookup.c (make_multi_key): Likewise.
+ * libdb/db_store.c (make_content, dbstore): Likewise.
+ * src/check_mandirs.c (add_dir_entries, fix_permissions_tree): Likewise.
+ * src/compression.c (comp_file): Likewise.
+ * src/globbing.c (look_for_file): Likewise.
+ * src/man.c (main): Likewise.
+ * src/mandb.c (mandb, purge_catsubdirs): Likewise.
+ * src/manp.c (pathappend): Likewise.
+ * src/ult_src.c (find_include): Likewise.
+ * src/whatis.c (use_grep): Likewise.
+ * src/zsoelim.l (zsoelim_open_file): Likewise.
+
+2022-01-02 Colin Watson <cjwatson@debian.org>
+
+ Fix path searching crash if getcwd fails
+
+ xgetcwd can return NULL if getcwd returns NULL for reasons other than
+ ENOMEM, so we should handle this. Found by "gcc -fanalyzer".
+
+ * lib/pathsearch.c (pathsearch, directory_on_path): Emit a fatal error
+ if xgetcwd returns NULL.
+ * po/POTFILES.in: Add lib/pathsearch.c.
+ * NEWS: Document this.
+
+2022-01-02 Colin Watson <cjwatson@debian.org>
+
+ Update to Gnulib 20211231
+
+ In line with Gnulib, we now require Autoconf 2.64.
+
+ * bootstrap: Sync to Gnulib 14db2b71b5bd05b94ec6126617fd32cd5f1016cd.
+ * bootstrap.conf (GNULIB_REVISION): Set to
+ 14db2b71b5bd05b94ec6126617fd32cd5f1016cd.
+ (buildreq): Bump required autoconf version to 2.64.
+ * configure.ac (AC_PREREQ): Bump to 2.64.
+ (--enable-gcc-warnings): New option, based on code in coreutils. Use
+ this to enable -fanalyzer only if --enable-gcc-warnings=expensive is
+ used; it's useful but slow.
+ * include/manconfig.h.in (create_tempdir, appendstr): Move NODISCARD to
+ the start of these function declarations, required by draft C2x.
+ * patches/argp-domain.patch: Rebase.
+ * NEWS: Document this.
+
+2022-01-02 Colin Watson <cjwatson@debian.org>
+
+ Fix NULL dereference in get_locale_charset callers
+
+ * lib/encodings.c (get_canonical_charset_name): Declare argument and
+ return value as non-NULL.
+ (get_locale_charset): Declare return value as non-NULL. Fall back to
+ "ANSI_X3.4-1968" if locale_charset returned NULL or the empty string.
+
+2022-01-02 Colin Watson <cjwatson@debian.org>
+
+ Trim down direct Gnulib dependencies a little
+
+ * bootstrap.conf (gnulib_modules): Add c99 (already used indirectly, but
+ seems like a good idea to request directly now). Remove getopt-gnu,
+ lock, and unsetenv, none of which we use directly. Replace fcntl with
+ fcntl-h and signal with signal-h, since we use the corresponding header
+ files directly but not the corresponding functions.
+ * .gitignore: Remove lib/getopt.h.
+
+2022-01-01 Colin Watson <cjwatson@debian.org>
+
+ Fix warnings with Autoconf >= 2.70
+
+ * configure.ac (AC_PROG_LEX): Add noyywrap argument (new in Autoconf
+ 2.70, but ignored in previous versions).
+ * m4/man-bdb.m4 (MAN_CHECK_BDB): Autoconf 2.70 warns about non-literal
+ arguments to AC_CHECK_HEADERS. Refactor loops so that the header and
+ library names are visible to m4.
+
+2022-01-01 Colin Watson <cjwatson@debian.org>
+
+ Add an SC_ALLOW_PERMISSIVE macro
+
+ This plays slightly better with clang-format.
+
+ * lib/sandbox.c (SC_ALLOW_PERMISSIVE): New macro.
+ (make_seccomp_filter): Use SC_ALLOW_PERMISSIVE instead of forms such as
+ "if (permissive) SC_ALLOW (name);".
+
+2022-01-01 Colin Watson <cjwatson@debian.org>
+
+ Use Gnulib attribute.h properly
+
+ manconfig.h previously used _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM without
+ first including "stdio.h", which caused build failures. We should be
+ using the public names anyway.
+
+ * bootstrap.conf (gnulib_modules): Add attribute.
+
+ * include/manconfig.h.in (create_tempdir, appendstr): Use NODISCARD
+ rather than _GL_ATTRIBUTE_NODISCARD.
+
+ * include/manconfig.h.in (debug, debug_error): Use ATTRIBUTE_FORMAT
+ rather than _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM.
+ * lib/debug.c (vdebug): Likewise.
+
+ * include/manconfig.h.in (appendstr): Use ATTRIBUTE_SENTINEL rather than
+ _GL_ATTRIBUTE_SENTINEL.
+
+ * lib/encodings.c (get_page_encoding): Use ATTRIBUTE_MALLOC rather than
+ _GL_ATTRIBUTE_MALLOC.
+ * lib/util.c (trim_spaces): Likewise.
+
+ * lib/encodings.c (is_roff_device, get_output_encoding,
+ get_less_charset, get_jless_charset): Use ATTRIBUTE_PURE rather than
+ _GL_ATTRIBUTE_PURE.
+ * lib/glcontainers.c (string_equals, string_hash): Likewise.
+ * lib/security.c (running_setuid): Likewise.
+ * src/manp.c (canonicalized_path_equals, canonicalized_path_hash):
+ Likewise.
+ * src/whatis.c (match): Likewise.
+
+ * libdb/db_lookup.c (dash_if_unset): Use ATTRIBUTE_CONST rather than
+ _GL_ATTRIBUTE_CONST.
+ * libdb/db_store.c (compare_ids): Likewise.
+
+2022-01-01 Colin Watson <cjwatson@debian.org>
+
+ Reduce indentation depth using C99
+
+ * src/man.c (parse_opt): Remove an enclosing block and associated
+ indentation level, since C99 allows mixing declarations and code.
+
+2022-01-01 Colin Watson <cjwatson@debian.org>
+
+ Pacify pre-commit
+
+ * lib/mp.h: Remove trailing whitespace.
+
+2022-01-01 Colin Watson <cjwatson@debian.org>
+
+ Simplify interface to container iterator macros
+
+ The Gnulib container iterator macros (GL_LIST_FOREACH_* and
+ GL_MAP_FOREACH_*) have to run code both before and after a chunk of
+ user-supplied code. This previously required a START/END macro pair
+ used something like this:
+
+ GL_LIST_FOREACH_START (names, name) {
+ ...
+ } GL_LIST_FOREACH_END (names);
+
+ This doesn't look natural in C, and so it was easy to get it wrong.
+
+ It's possible to do better, at the cost of some tricky macros.
+ Fortunately, Simon Tatham has already done the hard work in
+ https://www.chiark.greenend.org.uk/~sgtatham/mp/, and the necessary
+ header file is MIT-licensed, so we can incorporate it. Now these
+ iterator macros are used more like this, which is a much more natural C
+ style:
+
+ GL_LIST_FOREACH (names, name) {
+ ...
+ }
+
+ * lib/mp.h: New file.
+ * lib/Makefile.am (libman_la_SOURCES): Add mp.h.
+ * lib/README: Add mp.h. Rephrase introductory text about licensing to
+ account for an MIT-licensed file.
+ * lib/glcontainers.h (GL_LIST_FOREACH_START, GL_LIST_FOREACH_END):
+ Rewrite as ...
+ (GL_LIST_FOREACH): ... this. Update all callers.
+ (GL_MAP_FOREACH_START, GL_MAP_FOREACH_END): Rewrite as ...
+ (GL_MAP_FOREACH): ... this. Update all callers.
+ * NEWS, README.md, docs/HACKING: Document C99 compiler requirement.
+
+2022-01-01 Colin Watson <cjwatson@debian.org>
+
+ Simplify some GCC attribute handling
+
+ * include/manconfig.h.in (ATTRIBUTE_FORMAT_PRINTF,
+ ATTRIBUTE_WARN_UNUSED_RESULT, ATTRIBUTE_SENTINEL): Remove in favour of
+ Gnulib-provided macros.
+ (create_tempdir, appendstr): Use _GL_ATTRIBUTE_NODISCARD rather than
+ ATTRIBUTE_WARN_UNUSED_RESULT.
+ (debug, debug_error): Use _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM rather than
+ ATTRIBUTE_FORMAT_PRINTF.
+ (appendstr): Use _GL_ATTRIBUTE_SENTINEL rather than ATTRIBUTE_SENTINEL.
+ * lib/debug.c (vdebug): Use _GL_ATTRIBUTE_FORMAT_PRINTF_SYSTEM rather
+ than ATTRIBUTE_FORMAT_PRINTF.
+
+2022-01-01 Colin Watson <cjwatson@debian.org>
+
+ Introduce pre-commit
+
+ * .pre-commit-config.yaml: New file.
+ * .gitlab-ci.yml (stages): Add bootstrap.
+ (pre-commit): New job.
+ (bootstrap): Move to bootstrap stage.
+
+ Remove trailing whitespace from all files.
+
+2022-01-01 Colin Watson <cjwatson@debian.org>
+
+ Update licence texts
+
+ There are no substantive licensing changes here, only formatting
+ adjustments and referring to the "GNU Lesser General Public License"
+ rather than the "GNU Library General Public License".
+
+ * docs/COPYING: Update from current contents of
+ https://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
+ * docs/COPYING.LIB: Update from current contents of
+ https://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt.
+
+2021-12-31 Colin Watson <cjwatson@debian.org>
+
+ Document migration to GitLab
+
+ * README.md: Add link to GitLab repository.
+ (Contacting the maintainer): Add GitLab issues link.
+ * docs/HACKING (Revision control): Update for GitLab.
+ * man/man1/apropos.man1 (BUGS): Add GitLab issues link.
+ * man/man1/lexgrog.man1 (BUGS): Likewise.
+ * man/man1/man-recode.man1 (BUGS): Likewise.
+ * man/man1/man.man1 (BUGS): Likewise.
+ * man/man1/manconv.man1 (BUGS): Likewise.
+ * man/man1/manpath.man1 (BUGS): Likewise.
+ * man/man1/whatis.man1 (BUGS): Likewise.
+ * man/man1/zsoelim.man1 (BUGS): Likewise.
+ * man/man5/manpath.man5 (BUGS): Likewise.
+ * man/man8/accessdb.man8 (BUGS): Likewise.
+ * man/man8/catman.man8 (BUGS): Likewise.
+ * man/man8/mandb.man8 (BUGS): Likewise.
+ * NEWS: Document this.
+
+2021-11-17 Colin Watson <cjwatson@debian.org>
+
+ Reformat README
+
+ * README: Move to ...
+ * README.md: ... here. Reformat as Markdown.
+ * Makefile.am (dist_noinst_DATA): Replace README with README.md.
+ * docs/INSTALL.quick: Likewise.
+
+2021-11-16 Colin Watson <cjwatson@debian.org>
+
+ Add .gitlab-ci.yml
+
+2021-09-19 Colin Watson <cjwatson@debian.org>
+
+ Update some obsolete Autoconf macros
+
+ * configure.ac: Replace AC_GNU_SOURCE and AC_ISC_POSIX with
+ AC_USE_SYSTEM_EXTENSIONS. Replace AC_CONFIG_HEADER with
+ AC_CONFIG_HEADERS. Remove an obsolete comment.
+
+2021-09-19 Colin Watson <cjwatson@debian.org>
+
+ Stop using obsolete AC_TRY_LINK
+
+ This has been obsolete since Autoconf 2.55. Use its AC_LINK_IFELSE
+ expansion instead.
+
+ * m4/man-bdb.m4 (MAN_CHECK_BDB): Expand AC_TRY_LINK call using
+ AC_LINK_IFELSE.
+
+2021-09-18 Mario Blättermann <mario.blaettermann@gmail.com>
+
+ Update German manual page translation
+
+ * man/po4a/po/de.po: Update from Translation Project.
+
+2021-09-18 Mario Blättermann <mario.blaettermann@gmail.com>
+
+ Update German manual page translation
+
+ * man/po4a/po/de.po: Update from Translation Project.
+
+2021-07-11 Colin Watson <cjwatson@debian.org>
+
+ Fix mishandling of suffix matches in manpath
+
+ Fixes Savannah bug #60906.
+
+ * src/manp.c (pathappend): strstr might return matches that are not at
+ the start of a manpath element, resulting in incorrect truncation. Skip
+ any such matches.
+
+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-02 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-03 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-10 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-05 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-08-31 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-23 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-23 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-23 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-04 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-04 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-17 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-22 Colin Watson <cjwatson@debian.org>
+
+ NEWS: Document recent Solaris portability changes
+
+2014-10-22 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-22 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-22 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-27 Colin Watson <cjwatson@debian.org>
+
+ * Version: 2.7.0.2.
+
+2014-09-27 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-23 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-15 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-15 Colin Watson <cjwatson@debian.org>
+
+ * tools/README: Update heading to reflect moves to build-aux.
+
+2014-09-15 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-15 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-15 Colin Watson <cjwatson@debian.org>
+
+ Remove unused code in lexgrog
+
+ * src/lexgrog.l (rule_profile): Remove unused function and
+ associated global declarations.
+
+2014-09-15 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-12 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-12 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-08 Colin Watson <cjwatson@debian.org>
+
+ * man/po4a/po/da.po: Fix po4a syntax error.
+
+2014-09-08 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.