diff options
Diffstat (limited to '')
-rw-r--r-- | ChangeLog | 8824 | ||||
-rw-r--r-- | ChangeLog-2013 | 13184 |
2 files changed, 22008 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. diff --git a/ChangeLog-2013 b/ChangeLog-2013 new file mode 100644 index 0000000..1a5b00d --- /dev/null +++ b/ChangeLog-2013 @@ -0,0 +1,13184 @@ +Mon Dec 9 00:49:22 GMT 2013 Colin Watson <cjwatson@debian.org> + + * .bzrignore: Move to ... + * .gitignore: ... here, adjusting for differences between bzr and + git. + * Makefile.am (EXTRA_DIST): Replace .bzrignore with .gitignore. + * gnulib: Add --no-vc-files. + +Wed Nov 27 11:54:17 GMT 2013 Colin Watson <cjwatson@debian.org> + + * configure.ac: Only call AC_PROG_AR if it is defined, to restore + compatibility with Automake 1.10. + * NEWS: Document this. + +Wed Nov 27 11:48:29 GMT 2013 Colin Watson <cjwatson@debian.org> + + Upgrade to Automake 1.14 and Gnulib 20130805. + +Sat Nov 9 16:21:05 GMT 2013 Colin Watson <cjwatson@debian.org> + + * src/tests/man-4: Remove non-portable uses of "echo -n". Reported + by TheSin. + +Mon Jul 8 03:00:20 BST 2013 Colin Watson <cjwatson@debian.org> + + * src/check_mandirs.c (gripe_rwopen_failed, update_db_time): + Downgrade EAGAIN/EWOULDBLOCK errors from attempts to open a + database read-write to debug messages (Debian bug #684235). + +Mon Jul 8 02:26:07 BST 2013 Colin Watson <cjwatson@debian.org> + + * man/man1/whatis.man1 (NAME): Clarify that whatis displays one-line + descriptions, rather than e.g. the contents of DESCRIPTION + sections (Debian bug #713992). + +Mon Jul 8 02:15:52 BST 2013 Colin Watson <cjwatson@debian.org> + + Reimplement 'apropos --and' in a way that works with the + optimisations introduced in 2.6.2 (Debian bug #678670). + + * src/whatis.c (any_set, all_set): New functions. + (parse_name, parse_whatis): Take an additional found_here + parameter and set its elements. Return void. + (do_apropos): Combine results from parse_name and parse_whatis + properly according to whether --and is set, rather than relying on + counters that will only ever coincidentally match the number of + search keywords. + (main): Remove apropos_seen hash table. + * NEWS: Document this. + +Mon Jul 8 01:30:56 BST 2013 Colin Watson <cjwatson@debian.org> + + * src/man.c (format_display): Simplify using xasprintf. + * src/whatis.c (do_apropos): Likewise. + +Mon Jul 8 00:29:00 BST 2013 Colin Watson <cjwatson@debian.org> + + * man/po4a/po/zh_CN.po: Fix po4a syntax errors. + +Sun Jul 7 22:53:02 BST 2013 Wylmer Wang <wantinghard@gmail.com> + + * man/po4a/po/zh_CN.po: Update from Translation Project. + +Fri Jun 28 06:13:17 BST 2013 Colin Watson <cjwatson@debian.org> + + * lib/encodings.c (find_charset_locale): Attempt fallback locales + even if /usr/share/i18n/SUPPORTED exists. (It may exist but none + of the UTF-8 locales mentioned it in may be present; nevertheless, + C.UTF-8 may be available.) + +Thu Jun 27 11:38:56 BST 2013 Colin Watson <cjwatson@debian.org> + + * Version: 2.6.5. + +Thu Jun 27 11:34:40 BST 2013 Colin Watson <cjwatson@debian.org> + + * src/mandb.c (xcopy): Allocate buf on the heap, as 32768 bytes may + be too large for some stacks. Reported by Coverity via Peter + Schiffer. + +Thu Jun 27 10:47:13 BST 2013 Colin Watson <cjwatson@debian.org> + + * docs/HACKING: Mention that xasprintf may be more readable than + appendstr. + * include/manconfig.h.in (mkdbname): Rephrase using xasprintf. + * lib/decompress.c (decompress_open): Likewise. + * lib/pathsearch.c (pathsearch): Likewise. + * lib/tempfile.c (create_tempdir): Likewise. + * lib/util.c (remove_directory): Likewise. + * src/check_mandirs.c (add_dir_entries, mkcatdirs): Likewise. + * src/compression.c (comp_file): Likewise. + * src/convert_name.c (convert_name): Likewise. + * src/globbing.c (make_pattern, match_in_directory, look_for_file): + Likewise. + * src/man.c (parse_opt, display_filesystem, display_database, + do_global_apropos_section): Likewise. + * src/manconv_client.c (add_manconv): Likewise. + * src/mandb.c (mandb, process_manpath, purge_catsubdirs, + purge_catdirs, main): Likewise. + * src/manp.c (pathappend, get_nls_manpath, get_manpath, + read_config_file, has_mandir): Likewise. + * src/ult_src.c (ult_hardlink): Likewise. + * src/whatis.c (simple_convert, use_grep, display, main): Likewise. + * src/zsoelim.l (zsoelim_open_file): Likewise. + + * src/accessdb.c (parse_opt): Use mkdbname to construct default + database path. + +Thu Jun 27 09:43:35 BST 2013 Peter Schiffer <pschiffe@redhat.com> + + * lib/encodings.c (get_locale_charset): Free saved_locale. + * src/check_mandirs.c (testmandirs): Close directory handle on + early-return paths. + * src/man.c (local_man_loop): Free locale_manpath's argument after + call. + (main): Likewise. Free cwd, internal_locale, and program_name + before calling gripe_no_name. Free database before exiting. + (format_display) [TROFF_IS_GROFF]: Free old_cwd. + (display) [TROFF_IS_GROFF]: Free page_lang. + (display): Free formatted_encoding. + (find_cat_file): Free cat_dir. + (try_section): Free info and info_buffer if they weren't added to + the candidates. + (display_filesystem): Free title and filename. + (try_db): Free database before setting it. + (man): Free each candidate using free_candidate, not free. + * src/manp.c (get_nls_manpath): Free manpathlist_copy. + (add_nls_manpaths): Free locales_copy. + (add_to_dirlist): Free buf before returning. + * src/whatis.c (suitable_manpath): Free locale_manpath's argument + after call. + (do_whatis): Free page on early-continue path. + +Thu Jun 27 09:38:35 BST 2013 Colin Watson <cjwatson@debian.org> + + * src/manp.c (add_nls_manpaths): Duplicate manpathlist in the case + where locales is NULL or empty, allowing the manpathlist parameter + to be made const. + * src/manp.h (add_nls_manpaths): Update prototype. + * src/man.c (locale_manpath): Make manpath parameter const. + * src/whatis.c (locale_manpath): Likewise. + +Thu Jun 27 09:25:19 BST 2013 Colin Watson <cjwatson@debian.org> + + * src/man.c (get_preprocessors_from_file): Return a non-const string + rather than keeping a static copy. + (get_preprocessors): Return a non-const string. + (make_roff_command): Free the return value of get_preprocessors + before returning. + +Thu Jun 27 08:39:26 BST 2013 Colin Watson <cjwatson@debian.org> + + * src/manconv_client.c (add_manconv): Don't allocate codes until + after checking for the UTF-8/UTF-8 early-return case. + +Thu Jun 27 00:09:48 BST 2013 Colin Watson <cjwatson@debian.org> + + * lib/encodings.c (find_charset_locale): Fix memory leaks. + +Thu Jun 27 00:07:09 BST 2013 Peter Schiffer <pschiffe@redhat.com> + + * src/check_mandirs.c (testmandirs): Check return value of chdir. + +Wed Jun 26 22:41:22 BST 2013 Peter Schiffer <pschiffe@redhat.com> + + * lib/encodings.c (find_charset_locale): Fall back to C.UTF-8 then + en_US.UTF-8 if /usr/share/i18n/SUPPORTED does not exist, the + requested character set is UTF-8, and the current LC_CTYPE locale + is not UTF-8 (Fedora bug #657409). + * src/tests/man-6: New file. + * src/tests/Makefile.am (ALL_TESTS): Add man-6. + * NEWS: Document this. + +Wed Jun 26 22:33:00 BST 2013 Colin Watson <cjwatson@debian.org> + + * configure.ac: Move check for whether nroff supports warning + control down below check for whether troff is groff, otherwise it + always returns false. Reported by Niels Thykier. + * NEWS: Document this. + +Sun Jun 23 22:50:24 BST 2013 Colin Watson <cjwatson@debian.org> + + * Version: 2.6.4. + +Sun Jun 23 22:44:19 BST 2013 Colin Watson <cjwatson@debian.org> + + Upgrade to Gnulib 20130623. + +Sun Jun 23 21:21:13 BST 2013 Peter Schiffer <pschiffe@redhat.com> + Colin Watson <cjwatson@debian.org> + + Search the full manpath when expanding manual pages that consist + only of a .so directive (Fedora bug #693458). + + * src/ult_src.c (find_include): New function, handling manpath + search where necessary. + (ult_src): Call it when a .so directive is found. + * src/Makefile.am (lexgrog_SOURCES): Add globbing.c and globbing.h. + * src/tests/man-5: New file. + * src/tests/Makefile.am (ALL_TESTS): Add man-5. + * NEWS: Document this. + +Sun Jun 23 21:15:45 BST 2013 Colin Watson <cjwatson@debian.org> + + * src/tests/mandb-3: Don't rely on ".so test.1" not working. + +Sun Jun 23 14:35:51 BST 2013 Colin Watson <cjwatson@debian.org> + + * src/manp.c (def_path): Expand wildcards in MANDATORY_MANPATH. + +Sun Jun 23 14:29:34 BST 2013 Colin Watson <cjwatson@debian.org> + + * src/manp.c (guess_manpath): Honour MAN_TEST_DISABLE_PATH + environment variable, allowing the test suite to disable PATH + handling. (May change without notice.) + (read_config_file): Honour MAN_TEST_DISABLE_SYSTEM_CONFIG + environment variable, allowing the test suite to disable reading + the system configuration file. (May change without notice.) + * src/tests/testlib.sh: Set MAN_TEST_DISABLE_SYSTEM_CONFIG=1. + * src/tests/man-4: Set MAN_TEST_DISABLE_PATH=1. + +Sun Jun 23 12:28:19 BST 2013 Colin Watson <cjwatson@debian.org> + + * src/ult_src.c (test_for_include): Return NULL immediately if + buffer is NULL. + (ult_src): Use this to remove a level of indentation. + +Sun Jun 23 11:14:27 BST 2013 Colin Watson <cjwatson@debian.org> + + Upgrade to Automake 1.13.3. + +Fri Jun 14 09:53:47 BST 2013 Robert Luberda <robert@debian.org> + + * man/po4a/po/pl.po: Update from Translation Project. + +Tue Jun 11 12:44:24 BST 2013 Colin Watson <cjwatson@debian.org> + + * man/po4a/po/zh_CN.po: New from Translation Project (thanks, Wylmer + Wang). + * configure.ac (AC_CONFIG_FILES): Add man/zh_CN/Makefile. + * man/LINGUAS.po4a: Add zh_CN. + * man/Makefile.am (DIST_SUBDIRS): Add zh_CN. + * man/zh_CN/Makefile.am, man/zh_CN/translator.add: New files. + * man/po4a/Makefile.am (POFILES): Add po/zh_CN.po. + * man/po4a/po4a.cfg (po4a_langs): Add zh_CN. + * man/THANKS: Add translator credit. + * .bzrignore: Add man/zh_CN/man1, man/zh_CN/man5, and + man/zh_CN/man8. + +Thu Jun 6 12:24:27 BST 2013 Colin Watson <cjwatson@debian.org> + + * configure.ac: Check whether tbl supports the 'x' format character + (e.g. versions of groff before 1.20), and substitute TBL_X_FORMAT + accordingly. + * man/replace.sin.in: Replace "l lx." with "l l." if tbl does not + support the 'x' format character. + +Thu Jun 6 12:03:59 BST 2013 Colin Watson <cjwatson@debian.org> + + * configure.ac: Add a check for whether 'nroff -wmac' works. + * src/man.c (default_roff_warnings, roff_warnings): Define if + NROFF_WARNINGS is defined, rather than TROFF_IS_GROFF. + (options): Hide the --warnings option unless NROFF_WARNINGS is + defined. + (parse_opt, make_roff_command): Handle the --warnings option if + NROFF_WARNINGS is defined, rather than TROFF_IS_GROFF. + +Thu Jun 6 11:11:36 BST 2013 Colin Watson <cjwatson@debian.org> + + * configure.ac: Set MANDIR_LAYOUT using AC_SUBST as well as + AC_DEFINE/AC_DEFINE_UNQUOTED. + * src/tests/Makefile.am (TESTS_ENVIRONMENT): Export MANDIR_LAYOUT. + * src/tests/testlib.sh (skip): New function. + * src/tests/man-3: Skip unless the GNU layout is in use. + +Thu Jun 6 10:57:17 BST 2013 Colin Watson <cjwatson@debian.org> + + * src/tests/man-1, src/tests/man-2, src/tests/man-3, + src/tests/man-4, src/tests/mandb-1, src/tests/mandb-2, + src/tests/mandb-3, src/tests/mandb-4, src/tests/mandb-5, + src/tests/mandb-6, src/tests/whatis-1, src/tests/zsoelim-1: Export + MANPATH separately rather than trying to set it just for the 'run' + function. The latter approach does not seem to work reliably in + FreeBSD's /bin/sh. + * src/tests/testlib.sh: Stop exporting MANPATH here. + +Thu Jun 6 09:37:46 BST 2013 Colin Watson <cjwatson@debian.org> + + * configure.ac: Use BSD layout on *-*bsd* (e.g. FreeBSD), not just + *-bsd*. + Test for Berkeley DB in libc, as is the case on FreeBSD. + +Thu Jun 6 09:36:09 BST 2013 Colin Watson <cjwatson@debian.org> + + * src/check_mandirs.c (purge_missing) [NDBM]: Check for the + existence of DATABASE.dir rather than DATABASE. + +Thu Jun 6 09:32:24 BST 2013 Colin Watson <cjwatson@debian.org> + + * src/catman.c (add_arg): MYDBM_DSIZE may return size_t; cast (for + the cases where it returns int instead) and format using %zu + rather than %d. + +Thu Jun 6 09:01:46 BST 2013 Trần Ngọc Quân <vnwildman@gmail.com> + + * po/vi.po: Update from Translation Project. + +Thu Jun 6 02:51:15 BST 2013 Colin Watson <cjwatson@debian.org> + + * src/tests/testlib.sh: Export LC_ALL and MANPATH, for the benefit + of shells that do not automatically re-export variables they + receive in their environment. + +Thu Jun 6 02:50:25 BST 2013 Colin Watson <cjwatson@debian.org> + + * src/descriptions_store.c (store_description): Format size_t using + %zu, not %d. + +Thu Jun 6 02:40:10 BST 2013 Colin Watson <cjwatson@debian.org> + + * src/tests/manconv-2, src/tests/manconv-3: Use octal escapes rather + than hexadecimal escapes; the latter are not portable to all + printf(1) implementations. + +Thu Jun 6 01:49:32 BST 2013 Colin Watson <cjwatson@debian.org> + + * man/Rules.man (TESTS_ENVIRONMENT): Quote variable assignments. + +Thu Jun 6 01:43:29 BST 2013 Colin Watson <cjwatson@debian.org> + + * man/Rules.man (TESTS_ENVIRONMENT): Move environment variable + settings here, rather than using non-portable 'export'. + +Thu Jun 6 01:39:29 BST 2013 Colin Watson <cjwatson@debian.org> + + * docs/INSTALL.quick: Reformat external package requirements as a + bullet list. Add flex >= 2.5.30. + +Thu Jun 6 01:32:19 BST 2013 Colin Watson <cjwatson@debian.org> + + * tools/config.guess: Update to 2013-05-16. + * tools/config.sub: Update to 2013-04-24. + +Tue Jun 4 09:38:08 BST 2013 David Prévot <david@tilapin.org> + + * man/po4a/po/fr.po: Update from Translation Project. + +Mon Jun 3 22:59:03 BST 2013 Yuri Kozlov <yuray@komyakino.ru> + + * man/po4a/po/ru.po: Update from Translation Project. + +Mon Jun 3 13:06:43 BST 2013 Colin Watson <cjwatson@debian.org> + + * Version: 2.6.4-pre1. + +Mon Jun 3 12:39:22 BST 2013 Colin Watson <cjwatson@debian.org> + + * NEWS: Document changes since 2.6.3. + +Mon Jun 3 12:18:55 BST 2013 Colin Watson <cjwatson@debian.org> + + * manual/files.me (NLS manual pages): Wrap a table cell to avoid a + line-width warning from nroff. + +Mon Jun 3 12:07:35 BST 2013 Colin Watson <cjwatson@debian.org> + + Quieten most warnings from compiling Gnulib (Debian bug #668429). + + * configure.ac: Add gl_WARN_ADD results to WARN_CFLAGS rather than + CFLAGS. + * lib/Makefile.am (AM_CFLAGS): Add $(WARN_CFLAGS). + * libdb/Makefile.am (AM_CFLAGS): Likewise. + * src/Makefile.am (AM_CFLAGS): Likewise. Move $(libpipeline_CFLAGS) + here from AM_CPPFLAGS. + +Mon Jun 3 00:01:47 BST 2013 Colin Watson <cjwatson@debian.org> + + * src/tests/Makefile.am (AM_LOG_FLAGS): Force each test to run with + the configure-detected shell. + +Thu May 30 12:57:50 BST 2013 Peter Schiffer <pschiffe@redhat.com> + Colin Watson <cjwatson@debian.org> + + Add support for wildcards in MANPATH (Fedora bug #677669). + + * src/Makefile.am (catman_SOURCES, manpath_SOURCES, whatis_SOURCES): + Add globbing.c and globbing.h. + * src/globbing.c (expand_path): New function. + * src/globbing.h (expand_path): Add prototype. + * src/manp.c (add_dir_to_list): Rename to ... + (add_expanded_dir_to_list): ... this. + (add_dir_to_list): New function, expanding wildcards and wrapping + add_expanded_dir_to_list. + (add_dir_to_path_list): Expand wildcards. + * src/tests/man-4: New file. + * src/tests/Makefile.am (ALL_TESTS): Add man-4. + +Thu May 30 11:51:54 BST 2013 Colin Watson <cjwatson@debian.org> + + * Makefile.am (EXTRA_DIST): Remove gnulib/gets.patch. + +Thu 30 May 11:42:29 BST 2013 Colin Watson <cjwatson@debian.org> + + Upgrade to Automake 1.13.2 and Gnulib 20130529. + + * .bzrignore: Add gnulib/lib/locale.h, man/**/*.log, man/**/*.trs, + src/tests/*.log, and src/tests/*.trs. + * autogen.sh: Drop gnulib/gets.patch backport. + * gnulib/gets.patch: Remove. + * configure.ac (AM_INIT_AUTOMAKE): Set minimum Automake version to + 1.11. Add parallel-tests option for compatibility with 1.11. + * man/Rules.man (TESTS_ENVIRONMENT): Move to ... + (LOG_COMPILER): ... this. + * src/tests/Makefile.am (TESTS_ENVIRONMENT): Rewrite as a list of + variable exports rather than as a command prefix, for + compatibility with parallel-tests. + +Tue May 14 22:55:09 BST 2013 Colin Watson <cjwatson@debian.org> + + * src/lexgrog.l: Define YY_NO_INPUT, suppressing a -Wunused-function + warning from GCC (thanks, Bjarni Ingi Gislason). + * src/zsoelim.l: Likewise. + +Tue May 7 15:27:28 BST 2013 Colin Watson <cjwatson@debian.org> + + * src/man.c (escape_less): Revert handling of incompatible option + string escaping in less 456. That change was reverted upstream in + less 457. + +Sun Mar 3 14:22:32 GMT 2013 Felipe Castro <fefcas@gmail.com> + + * po/eo.po: New from Translation Project. + * po/LINGUAS: Add eo. + * man/THANKS: Add translator credit. + +Sun Mar 3 14:19:38 GMT 2013 Robert Luberda <robert@debian.org> + + * po/pl.po: Update from Translation Project. + * man/po4a/po/pl.po: Likewise. + +Tue Jan 29 13:15:26 GMT 2013 Will <cwr@netcom.co.uk> + + * src/manp.c (add_to_dirlist): Increase key length to handle buried + binutils manual page paths. + +Mon Jan 21 11:20:48 GMT 2013 Colin Watson <cjwatson@debian.org> + + * configure.ac (AC_HEADER_SYS_WAIT): Remove; no longer used. + +Mon Jan 21 11:04:44 GMT 2013 Colin Watson <cjwatson@debian.org> + + Upgrade to Libtool 2.4.2-1.2 (from Debian). + +Sat Dec 22 13:59:14 GMT 2012 Colin Watson <cjwatson@debian.org> + + Document default section list in manual pages (Debian bug #611007). + + * man/replace.sin.in: Substitute %sections%. + * man/man1/man.man1 (DESCRIPTION): Fix misplaced comma. Document + configured list of sections rather than simply saying "a + pre-defined order". + (ENVIRONMENT): Document default for $MANSECT. + * man/man8/catman.man8 (ENVIRONMENT): Likewise. + * man/po4a/po/man-db-manpages.pot, man/po4a/po/*.po: Update. + +Fri Dec 21 21:29:27 GMT 2012 Colin Watson <cjwatson@debian.org> + + * src/man.c (main): Use $MANLESS as the default for prompt_string if + the -r option was not used. + (setenv_less): Remove code to copy $MANLESS verbatim into $LESS. + * man/man1/man.man1 (Controlling formatted output, ENVIRONMENT): + Describe new behaviour of $MANLESS. + * man/po4a/po/man-db-manpages.pot, man/po4a/po/*.po: Update. + +Sun Dec 16 12:00:55 GMT 2012 Colin Watson <cjwatson@debian.org> + + * src/man.c (escape_less): Handle incompatible change to option + string escaping in less 456. Reported by Vincent Lefevre. + +Sat Dec 15 10:49:46 GMT 2012 Joe Hansen <joedalton2@yahoo.dk> + + * man/po4a/po/da.po: Update from Translation Project. + +Sat Nov 24 22:42:01 GMT 2012 Colin Watson <cjwatson@debian.org> + + * man/po4a/po/da.po: New from Translation Project (thanks, Joe + Hansen). + * configure.ac (AC_CONFIG_FILES): Add man/da/Makefile. + * man/LINGUAS.po4a: Add da. + * man/Makefile.am (DIST_SUBDIRS): Add da. + * man/da/Makefile.am, man/da/translator.add: New files. + * man/po4a/Makefile.am (POFILES): Add po/da.po. + * man/po4a/po4a.cfg (po4a_langs): Add da. + * man/THANKS: Credit Joe Hansen with man/da as well as da.po. + * .bzrignore: Add man/da/man1, man/da/man5, and man/da/man8. + +Mon Sep 17 23:22:48 BST 2012 Colin Watson <cjwatson@debian.org> + + * Version: 2.6.3. + +Mon Sep 17 23:20:19 BST 2012 Colin Watson <cjwatson@debian.org> + + Stop distributing .tar.gz, as promised in the release notes for + 2.6.2. + + * configure.ac (AM_INIT_AUTOMAKE): Add no-dist-gzip. + * docs/man-db.lsm (Primary-site): Drop .tar.gz size. + +Mon Sep 17 22:53:40 BST 2012 Colin Watson <cjwatson@debian.org> + + * autogen.sh, release.sh: Use 'set -e' rather than '#! /bin/sh -e', + to avoid accidents when debugging with 'sh -x'. + +Mon Sep 17 22:53:14 BST 2012 Colin Watson <cjwatson@debian.org> + + * Makefile.am (EXTRA_DIST): Add gnulib/gets.patch. + +Mon Sep 17 22:33:41 BST 2012 Colin Watson <cjwatson@debian.org> + + * configure.ac: Use AM_PROG_AR before LT_INIT, for compatibility + with Automake 1.12. + * NEWS: Document this. + +Mon Sep 17 22:28:27 BST 2012 Colin Watson <cjwatson@debian.org> + + Backport Gnulib commit 66712c23388e93e5c518ebc8515140fa0c807348 to + stop assuming gets (Savannah bug #37255). + + * gnulib/gets.patch: New file. + * autogen.sh: Apply gnulib/gets.patch. + * NEWS: Document this. + +Mon Sep 17 22:07:02 BST 2012 Colin Watson <cjwatson@debian.org> + + Upgrade to Automake 1.11.6. + +Thu Aug 16 12:08:48 BST 2012 Trần Ngọc Quân <vnwildman@gmail.com> + + * po/vi.po: Update from Translation Project. + * man/THANKS: Update. + +Mon Jun 18 13:37:45 BST 2012 Colin Watson <cjwatson@debian.org> + + * Version: 2.6.2. + * man/po4a/po/man-db-manpages.pot, po/man-db.pot, po/*.po: Update. + +Mon Jun 18 13:34:31 BST 2012 Ville Skyttä <ville.skytta@iki.fi> + + * configure.ac: Add elinks and w3m to list of HTML browsers to + search for. + +Mon Jun 18 13:02:06 BST 2012 Colin Watson <cjwatson@debian.org> + + * configure.ac: Adjust indentation. Set unlzma to empty if xz is + found. + +Mon Jun 18 12:56:56 BST 2012 Ville Skyttä <ville.skytta@iki.fi> + + * configure.ac: Only check for lzma if xz is not found. + * include/comp_src.h.in (comp_list): Likewise. + +Mon Jun 18 11:40:27 BST 2012 Colin Watson <cjwatson@debian.org> + + * configure.ac (AM_INIT_AUTOMAKE): Distribute tarballs compressed + using xz as well as gzip. + +Mon Jun 18 11:24:30 BST 2012 Colin Watson <cjwatson@debian.org> + + * src/whatis.c (main): Make the global configuration file optional + if a user configuration file was supplied. Fixes test suite. + +Mon Jun 18 10:59:41 BST 2012 Colin Watson <cjwatson@debian.org> + + * README (Copyright and licensing): Update FSF copyright years. + +Mon Jun 18 10:55:53 BST 2012 Colin Watson <cjwatson@debian.org> + + Upgrade to Autoconf 2.69, Automake 1.11.5, and Gnulib + 20120404-stable. + +Mon Jun 18 04:20:41 BST 2012 Colin Watson <cjwatson@debian.org> + + Avoid fatal errors when opening a 64-bit GDBM database from a 32-bit + process (Ubuntu bug #1001189). + + * libdb/db_gdbm.c (trap_error): New function. + (man_gdbm_open_wrapper): Rearrange interface to call gdbm_open + rather than taking its return value as an argument. Fetch a test + value from the database after opening it, inside a setjmp/longjmp + guard to prevent GDBM from exiting. + * include/mydbm.h (man_gdbm_open_wrapper): Update prototype. + (MYDBM_CTRWOPEN, MYDBM_CRWOPEN, MYDBM_RWOPEN, MYDBM_RDOPEN): + Update man_gdbm_open_wrapper calls, since it now calls gdbm_open + itself. + * NEWS: Document this. + +Mon May 14 16:40:00 PDT 2012 Colin Watson <cjwatson@debian.org> + + * NEWS: The fix for Ubuntu bug #927028 also fixed Debian bug #672661 + along the way. Document this. + +Fri May 4 15:36:58 BST 2012 Martin Eberhard Schauer <Martin.E.Schauer@gmx.de> + + * man/po4a/po/de.po: Update from Translation Project. + +Thu Apr 26 09:28:44 BST 2012 Arun Persaud <arun@nubati.net> + + * po/de.po: Update from Translation Project. + +Thu Apr 19 11:19:19 BST 2012 Arun Persaud <arun@nubati.net> + + * po/de.po: Update from Translation Project. + * man/THANKS: Update. + +Sun Apr 8 09:43:11 BST 2012 Marek Černocký <marek@manet.cz> + + * po/cs.po: Update from Translation Project. + +Mon Mar 19 10:57:16 GMT 2012 Joe Hansen <joedalton2@yahoo.dk> + + * po/da.po: Update from Translation Project. + +Mon Feb 27 13:26:47 GMT 2012 Colin Watson <cjwatson@debian.org> + + * src/whatis.c (main): Move locale manpath expansion to ... + (locale_manpath): ... here (new function). + (suitable_manpath): New function. + (do_whatis): If a page contains a slash and is a path to an + executable on $PATH, then look up its base name only in + appropriate manual hierarchies. + (search): Pass current manpath entry to do_whatis. + * src/tests/whatis-1: New file. + * src/tests/Makefile.am (ALL_TESTS): Add whatis-1. + * NEWS: Document this. + +Wed Feb 22 03:04:45 GMT 2012 Colin Watson <cjwatson@debian.org> + + Optimise apropos when given many arguments (Ubuntu bug #927028). + + * src/whatis.c (use_grep, do_whatis, parse_name, parse_whatis, + do_apropos, search): Operate on multiple pages. + (use_grep, do_whatis, do_apropos): Update an output array rather + than returning an int. + (parse_name, parse_whatis): Update an output array as well as + returning an int. + (display, do_whatis_section): Constify page argument. + (match): Constify lowpage and whatis arguments. + (main): Process all arguments using a single call to search. + * NEWS: Document this. + +Wed Feb 22 02:46:22 GMT 2012 Colin Watson <cjwatson@debian.org> + + * lib/encodings.c (fallback_source_encoding, fallback_roff_encoding, + fallback_less_charset): Save memory by declaring as const char[] + rather than const char * (see http://glandium.org/blog/?p=2361). + (find_charset_locale): Likewise for supported_path. + * src/man.c (default_roff_warnings): Likewise. + +Sat Feb 18 09:34:42 GMT 2012 Colin Watson <cjwatson@debian.org> + + * lib/hashtable.c (hashtable_lookup_structure): Make return type + more precise. + * lib/hashtable.h (hashtable_lookup_structure): Update prototype. + +Thu Feb 16 10:55:05 GMT 2012 Colin Watson <cjwatson@debian.org> + + * Makefile.am (EXTRA_DIST): Add gnulib/m4/math_h.m4. + +Tue Feb 14 12:18:50 GMT 2012 Colin Watson <cjwatson@debian.org> + + * Version: 2.6.1. + * man/po4a/po/man-db-manpages.pot, po/man-db.pot, po/*.po: Update. + +Thu Feb 9 08:44:09 GMT 2012 Colin Watson <cjwatson@debian.org> + + Upgrade to Automake 1.11.3. + +Thu Feb 9 08:16:12 GMT 2012 Colin Watson <cjwatson@debian.org> + + * src/lexgrog.l, src/zsoelim.l: Ensure that config.h is included at + the very top of the scanner, before any other headers. This + should fix a compilation problem on Solaris reported by Clark J. + Wang. + +Wed Feb 8 14:07:41 GMT 2012 Joe Hansen <joedalton2@yahoo.dk> + + * po/da.po: Update from Translation Project. + +Tue Feb 7 00:20:51 GMT 2012 Colin Watson <cjwatson@debian.org> + + * docs/INSTALL.quick: Document requirement for libiconv >= 1.8 on + non-glibc systems. + +Mon Feb 6 23:00:33 GMT 2012 David Prévot <david@tilapin.org> + + * man/po4a/po/fr.po, po/fr.po: Update from Translation Project. + +Mon Feb 6 22:57:12 GMT 2012 Yuri Kozlov <yuray@komyakino.ru> + + * man/po4a/po/ru.po, po/ru.po: Update from Translation Project. + +Mon Feb 6 10:45:22 GMT 2012 Colin Watson <cjwatson@debian.org> + + * FAQ: New file. + * Makefile.am (dist_noinst_DATA): Add FAQ. + +Sun Feb 5 21:59:39 GMT 2012 Colin Watson <cjwatson@debian.org> + + * README (Notice to users of man-db version 2.2 or 2.2.1): Remove + this section. The chances of anyone still running man-db versions + from 1995 seem remote in the extreme. + +Sun Feb 5 21:57:49 GMT 2012 Colin Watson <cjwatson@debian.org> + + * release.sh: Make sure that src/lexgrog.c and src/zsoelim.c are + fresh. + +Sun Feb 5 15:36:52 GMT 2012 Colin Watson <cjwatson@debian.org> + + * README (Copyright and licensing): New year. + +Sun Feb 5 13:14:42 GMT 2012 Colin Watson <cjwatson@debian.org> + + * manual/README: Fix spelling mistake. + +Sun Feb 5 02:11:04 GMT 2012 Colin Watson <cjwatson@debian.org> + + * Version: 2.6.1-pre1. + * man/po4a/po/man-db-manpages.pot, po/man-db.pot, po/*.po: Update. + +Sun Feb 5 01:34:14 GMT 2012 Colin Watson <cjwatson@debian.org> + + Fix 'make distcheck' to pass with Automake 1.11.2. + + * Makefile.am (distuninstallcheck_listfiles): Ignore the + configuration file, which is deliberately left in place on + uninstall. + * configure.ac (AM_INIT_AUTOMAKE): Add -Wno-override. + * src/Makefile.am (EXTRA_DIST): Force distribution of lexgrog.c and + zsoelim.c. + +Sun Feb 5 00:53:23 GMT 2012 Colin Watson <cjwatson@debian.org> + + * docs/HACKING (Revision control): Recommend 'bzr branch' rather + than 'bzr get'; the latter is apparently deprecated in bzr 2.4. + +Sat Feb 4 23:38:15 GMT 2012 David Prévot <taffit@debian.org> + + * man/man1/apropos.man1 (SEE ALSO), man/man1/lexgrog.man1 (SEE + ALSO), man/man1/man.man1 (SEE ALSO), man/man1/manconv.man1 (SEE + ALSO), man/man1/manpath.man1 (SEE ALSO), man/man1/whatis.man1 (SEE + ALSO), man/man1/zsoelim.man1 (SEE ALSO), man/man8/catman.man8 (SEE + ALSO), man/man8/mandb.man8 (SEE ALSO): Alphabetise references and + remove trailing full stops, per man-pages(7) (Debian bug #651482). + * man/po4a/po/man-db-manpages.pot, man/po4a/po/*.po: Update. + +Sat Feb 4 23:27:39 GMT 2012 Marek Černocký <marek@manet.cz> + + * po/cs.po: Update from Translation Project. + * man/THANKS: Update. + +Sat Feb 4 23:10:58 GMT 2012 Colin Watson <cjwatson@debian.org> + + * libdb/db_lookup.c (split_data): Use ngettext to translate strings + containing plural forms (Savannah bug #34968). + * src/lexgrog.l (too_big): Likewise. + * src/mandb.c (main): Likewise. + * po/man-db.pot, po/*.po: Update. + +Sat Feb 4 21:44:47 GMT 2012 Colin Watson <cjwatson@debian.org> + + * src/man.c (options): Add --path as an alias for -w. + (main): Running 'man -w' (etc.) without a name now prints the + manpath, for compatibility with other man implementations. + * NEWS: Document this. + +Thu Feb 2 18:05:16 GMT 2012 Colin Watson <cjwatson@debian.org> + + * include/comp_src.h.in (comp_list): Don't handle .lzma files using + lzip. Requested by Matias A. Fonzo. + +Thu Feb 2 01:51:18 GMT 2012 Colin Watson <cjwatson@debian.org> + + Fix some errors spotted by the clang static analyser. Some just + needed to be suppressed, but there were two real bugs. + + * src/manconv.c (try_iconv): Make sure outptr is always initialised, + even in the corner case where we convert some input text but don't + get any UTF-8 text in return. + * src/manp.c (get_catpath): Handle manpaths not containing a slash. + + * src/convert_name.c: Mark as non-returning, and add an abort after + error (FATAL) to help the compiler prove this. + * src/man.c (format_display): Add an assert to help clang prove that + old_cwd is always non-NULL when used. + * src/ult_src.c: Add asserts to help clang prove that buf is always + non-NULL when used. + +Thu Feb 2 00:02:07 GMT 2012 Matias A. Fonzo <selk@dragora.org> + + Add support for Lzip-compressed manual pages. + + * configure.ac: Check for lzip. Don't test for lzma if lzip is + present, as was already the case for xz. + * include/comp_src.h.in (comp_list): Add lzip. + * include/manconfig.h.in: Define UNLZIP. + * NEWS: Document this. + +Wed Feb 1 23:25:03 GMT 2012 Colin Watson <cjwatson@debian.org> + + Upgrade to Automake 1.11.2 and Gnulib 20111211-stable. + + * gnulib: Import closedir, fstat, and opendir modules. + +Wed Nov 2 14:33:18 GMT 2011 Robert Luberda <robert@debian.org> + + * man/po4a/po/pl.po: Update from Translation Project. + +Sun Oct 9 23:32:41 BST 2011 Colin Watson <cjwatson@debian.org> + + * lib/hashtable.c (null_hashtable_free): Use ATTRIBUTE_UNUSED to + appease compiler warnings rather than assigning an argument to + itself. + * src/mandb.c (cleanup_sigsafe, cleanup): Likewise. + +Sun Oct 9 23:14:11 BST 2011 Colin Watson <cjwatson@debian.org> + + * src/man.c (get_roff_line_length, add_roff_line_length): Only + compile if either TROFF_IS_GROFF or HEIRLOOM_NROFF is defined. + Spotted by cppcheck. + +Sun Oct 9 22:50:36 BST 2011 Colin Watson <cjwatson@debian.org> + + * src/manp.c (add_to_dirlist): Read lines from configuration file + using getline rather than fgets with a fixed-size buffer. + +Sun Oct 9 22:42:00 BST 2011 Colin Watson <cjwatson@debian.org> + + * gnulib: Import getline module (used in lib/encodings.c). + +Sun Oct 9 22:26:15 BST 2011 Colin Watson <cjwatson@debian.org> + + * man/es/man8/accessdb.man8: Remove; this is simply an out-of-date + copy of the English page. Reported by Křištof Želechovski. + * man/es/Makefile.am (man8_MANS): Remove man8/accessdb.8. + +Sun Oct 9 22:21:19 BST 2011 Colin Watson <cjwatson@debian.org> + + Upgrade to Gnulib 20110908-stable. + +Sun Oct 9 00:24:22 BST 2011 Peter Schiffer <pschiffe@redhat.com> + + * src/filenames.c (filename_info): Zero-initialise the contents of + info to avoid a double-free in store_descriptions (Fedora bug + #702904). + * src/tests/mandb-6: New file. + * src/tests/Makefile.am (ALL_TESTS): Add mandb-6. + * NEWS: Document this. + +Sun Oct 9 00:16:25 BST 2011 Colin Watson <cjwatson@debian.org> + + * NEWS: Update. + +Sat Oct 8 23:34:26 BST 2011 Colin Watson <cjwatson@debian.org> + + Convert the German manual pages translation to po4a. + + * man/po4a/po/de.po: New from Translation Project (thanks, Martin + Eberhard Schauer). + * man/LINGUAS: Remove de. + * man/LINGUAS.po4a: Add de. + * man/de/man1, man/de/man5, man/de/man8: Remove. + * man/de/Makefile.am (PO4A_LINGUA): Set to yes. + (EXTRA_DIST): Add translator.add. + (man1_MANS): Add man1/lexgrog.1 and man1/manconv.1. + * man/po4a/Makefile.am (POFILES): Add po/de.po. + * man/po4a/po4a.cfg (po4a_langs): Add de. + * man/THANKS: Credit Martin Schauer with man/de as well as de.po. + * .bzrignore: Add man/de/man1, man/de/man5, and man/de/man8. + +Sat Oct 8 17:11:08 BST 2011 Yasuaki Taniguchi <yasuakit@gmail.com> + + * po/ja.po: Update from Translation Project. + +Sat Oct 8 17:09:41 BST 2011 Colin Watson <cjwatson@debian.org> + + * man/THANKS: Consolidate duplicated credit. + +Sat Oct 8 17:07:17 BST 2011 Colin Watson <cjwatson@debian.org> + + Convert the Japanese manual pages translation to po4a. + + * man/po4a/po/ja.po: New from Translation Project (thanks, Yasuaki + Taniguchi). + * man/LINGUAS: Remove ja. + * man/LINGUAS.po4a: Add ja. + * man/ja/man1, man/ja/man5, man/ja/man8: Remove. + * man/ja/Makefile.am (PO4A_LINGUA): Set to yes. + (EXTRA_DIST): Add translator.add. + (man1_MANS): Add man1/lexgrog.1 and man1/manconv.1. + * man/po4a/Makefile.am (POFILES): Add po/ja.po. + * man/po4a/po4a.cfg (po4a_langs): Add ja. + * man/THANKS: Add Yasuaki Taniguchi. + * .bzrignore: Add man/ja/man1, man/ja/man5, and man/ja/man8. + +Sun Sep 18 18:28:37 BST 2011 Colin Watson <cjwatson@debian.org> + + * src/tests/mandb-5: Make executable. + +Sat Sep 17 13:28:33 BST 2011 Colin Watson <cjwatson@debian.org> + + * docs/HACKING (Revision control): man-db's Bazaar repository now + requires bzr 1.16 or later. + +Mon Sep 5 11:29:53 BST 2011 Colin Watson <cjwatson@debian.org> + + * src/mandb.c: Include "xvasprintf.h" for xasprintf. + +Mon Aug 8 14:00:32 BST 2011 Colin Watson <cjwatson@debian.org> + + * src/mandb.c (mandb): Create a cache directory tag, per + http://www.brynosaurus.com/cachedir/ ("Cache Directory Tagging + Standard"). Suggested by Josh Triplett (Debian bug #637046). + +Fri Jul 8 13:27:41 BST 2011 Colin Watson <cjwatson@debian.org> + + * src/mandb.c (xcopy): Use a 32KiB buffer when copying files, rather + than a 1KiB buffer. This seems somewhat faster (although it's + hard to tell on an SSD!). + +Fri Jul 8 12:49:46 BST 2011 Colin Watson <cjwatson@debian.org> + + Upgrade to Gnulib 20110609-stable. + +Thu Jun 16 12:18:08 BST 2011 Colin Watson <cjwatson@debian.org> + + * libdb/db_btree.c, libdb/db_ndbm.c: Stop including "flock.h", + removed in 2.6.0. Reported by Maciej Mrozowski. Include + <sys/file.h> unconditionally, since Gnulib now provides it. + * NEWS: Document this. + +Mon Jun 6 11:25:28 BST 2011 Colin Watson <cjwatson@debian.org> + + * man/po4a/Locale/Po4a/Manext.pm (translate): Exclude a number of + untranslatable table entries from translation. + +Mon Jun 6 10:36:01 BST 2011 David Prévot <david@tilapin.org> + + * man/po4a/po/fr.po: Update from Translation Project. + +Mon Jun 6 10:34:26 BST 2011 Colin Watson <cjwatson@debian.org> + + * man/man8/accessdb.man8 (NAME): Remove trailing full stop + (suggested by David Prévot). Unfuzzy all translations. + +Mon Jun 6 10:06:09 BST 2011 Colin Watson <cjwatson@debian.org> + + * src/straycats.c (check_for_stray): Pass mandir_base as base + argument to store_descriptions, not mandir. Regression introduced + in man-db 2.6.0 (r1309). + +Sat Jun 4 07:33:36 BST 2011 Colin Watson <cjwatson@debian.org> + + * src/straycats.c (check_for_stray): When invoking col, try to + ensure that LC_CTYPE is set to a UTF-8 locale (Arch Linux bug + #18722). + +Fri Jun 3 10:05:45 BST 2011 David Prévot <david@tilapin.org> + + * man/po4a/po/fr.po: Update from Translation Project. + +Tue May 31 01:04:26 BST 2011 Colin Watson <cjwatson@debian.org> + + * lib/encodings.c (get_locale_charset): Eliminate ctype variable, + which was set but not used. + * src/man.c (make_roff_command): Preprocess out code to set + using_tbl if GNU_NROFF is defined, since that code is only used if + it is not defined. + +Tue May 31 00:59:01 BST 2011 Colin Watson <cjwatson@debian.org> + + * src/man.c (locale_macros): Add a backslash to the end of the .if + line, to avoid adding a blank line to the output (Debian bug + #628639). + +Fri May 20 16:35:02 BST 2011 Yasuaki Taniguchi <yasuakit@gmail.com> + + * po/ja.po: Update from Translation Project. + +Wed May 18 17:25:46 BST 2011 Yasuaki Taniguchi <yasuakit@gmail.com> + + * po/ja.po: Update from Translation Project. + * man/THANKS: Update. + +Fri May 13 16:11:07 BST 2011 Martin Eberhard Schauer <Martin.E.Schauer@gmx.de> + + * po/de.po: Update from Translation Project. + +Sat Apr 23 18:54:06 BST 2011 Colin Watson <cjwatson@debian.org> + + * src/Makefile.am (SUBDIRS): Build this directory before tests/, so + that 'make check' works even if 'make' has not been run. + +Sat Apr 23 18:00:34 BST 2011 Colin Watson <cjwatson@debian.org> + + Upgrade to Autoconf 2.68 and Gnulib 20110412-stable. + +Wed Apr 13 11:22:39 BST 2011 Colin Watson <cjwatson@debian.org> + + * Version: 2.6.0.2. + * man/po4a/po/man-db-manpages.pot, po/man-db.pot, po/*.po: Update. + +Wed Apr 13 10:26:07 BST 2011 Colin Watson <cjwatson@debian.org> + + * src/descriptions.c (parse_descriptions): Once we've seen at least + one record, ignore any further records that don't include a whatis + description, as they tend to be noise (Arch Linux bug #22866). + * NEWS: Document this. + +Tue Apr 12 14:10:17 BST 2011 Jordi Mallach <jordi@gnu.org> + + * po/ca.po: Update from Translation Project. + +Tue Apr 12 14:03:38 BST 2011 Colin Watson <cjwatson@debian.org> + + * src/check_mandirs.c (test_manfile): whatis->whatis may be NULL in + the case of an empty page. Guard against this (Debian bug + #622104). + * src/tests/mandb-5: New file. + * src/tests/Makefile.am (ALL_TESTS): Add mandb-5. + * NEWS: Document this. + +Sun Apr 10 22:09:10 BST 2011 Colin Watson <cjwatson@debian.org> + + * Version: 2.6.0.1. + * man/po4a/po/man-db-manpages.pot, po/man-db.pot, po/*.po: Update. + +Sun Apr 10 14:45:52 BST 2011 Colin Watson <cjwatson@debian.org> + + * src/manp.c (read_config_file): Read a user-specified configuration + file even if HOME is unset. + * NEWS: Document this. + +Sun Apr 10 02:10:56 BST 2011 Colin Watson <cjwatson@debian.org> + + * src/descriptions_store.c (store_descriptions): Ensure that the + target of a symlink or .so chain is always recorded as a real + page. Fixes mandb-2 test failures. + * NEWS: Document this. + +Sun Apr 10 01:55:28 BST 2011 Colin Watson <cjwatson@debian.org> + + * src/tests/mandb-2: Test the case where a manual page changes from + a symbolic link to a regular file, as well as vice versa. + +Sat Apr 9 13:30:16 BST 2011 Colin Watson <cjwatson@debian.org> + + * Version: 2.6.0. + * man/po4a/po/man-db-manpages.pot, man/po4a/po/*.po, po/man-db.pot, + po/*.po: Update. + +Sat Apr 9 13:21:08 BST 2011 Colin Watson <cjwatson@debian.org> + + Upgrade to Libtool 2.4. + +Sat Apr 9 12:56:02 BST 2011 Colin Watson <cjwatson@debian.org> + + * man/man1/man.man1 (Controlling formatted output): Wrap first cell + in --ascii translation table. + * man/man8/mandb.man8 (DATABASE CACHES): Wrap second cell in + database type table. + * man/po4a/Locale/Po4a/Manext.pm (shiftline): Fix T} detection. + * man/po4a/po/ru.po: Don't translate "\\*[softhyphen]". + +Sat Apr 9 11:52:20 BST 2011 Colin Watson <cjwatson@debian.org> + + * man/man1/man.man1 (DESCRIPTION): Typeset ellipses in roman rather + than bold (thanks, David Prévot). + * man/po4a/po/man-db-manpages.pot, man/po4a/po/*.po: Update. + Manually unfuzzy translations. + +Sat Apr 9 11:42:51 BST 2011 Robert Luberda <robert@debian.org> + + * man/po4a/po/pl.po: Update from Translation Project. + * po/pl.po: Likewise. + +Sat Apr 9 11:38:52 BST 2011 Yuri Kozlov <yuray@komyakino.ru> + + * man/po4a/po/ru.po: Update from Translation Project. + +Thu Apr 7 12:46:34 BST 2011 Colin Watson <cjwatson@debian.org> + + * lib/cleanup.c (do_cleanups): Set tos and nslots to 0 before + freeing stack, in case do_cleanups_sigsafe is called again from a + signal handler (Fedora bug #694332). + * NEWS: Document this. + +Sat Apr 2 12:20:30 BST 2011 David Prévot <david@tilapin.org> + + * po/fr.po: Update from Translation Project. + +Mon Mar 28 17:59:45 BST 2011 Yuri Kozlov <yuray@komyakino.ru> + + * po/ru.po: Update from Translation Project. + +Mon Mar 28 17:40:36 BST 2011 Colin Watson <cjwatson@debian.org> + + * gnulib: Import flock module. + * lib/Makefile.am (libman_la_SOURCES): Remove flock.h. + * lib/README: Remove flock.*. + * lib/flock.c, lib/flock.h: Remove. + +Mon Mar 28 13:07:50 BST 2011 Colin Watson <cjwatson@debian.org> + + * libdb/mydbm.h (btree_close, btree_exists, btree_fetch, + btree_firstkey, btree_nextkey, btree_replace, btree_nextkeydata): + Drop inline specifier; these functions are typically used from + different translation units from their definitions. + +Mon Mar 28 12:59:54 BST 2011 Colin Watson <cjwatson@debian.org> + + * configure.ac: Add support for db5. + * NEWS: Document this. + +Mon Mar 28 12:26:54 BST 2011 Colin Watson <cjwatson@debian.org> + + * configure.ac: Apply correct M4 quotation throughout. + * m4/man-bdb.m4: Likewise. + * m4/man-gnu-nroff.m4: Likewise. + * m4/man-linguas.m4: Likewise. + * m4/man-trans-subst.m4: Likewise. + + * m4/man-bdb.m4: Use AS_VAR_IF rather than AS_IF plus AS_VAR_GET. + +Mon Mar 28 11:15:16 BST 2011 Joe Hansen <joedalton2@yahoo.dk> + + * po/da.po: Update from Translation Project. + +Mon Mar 28 11:12:38 BST 2011 David Prévot <david@tilapin.org> + + * man/po4a/po/fr.po: Update from Translation Project. + * man/THANKS: Update. + +Mon Mar 28 11:09:19 BST 2011 David Prévot <david@tilapin.org> + + * po/fr.po: Update from Translation Project. + +Mon Mar 28 11:06:04 BST 2011 Colin Watson <cjwatson@debian.org> + + * m4/man-gcc-warning.m4: Remove. + * gnulib: Import warnings module. + * configure.ac: Replace MAN_GCC_WARNING with gl_WARN_ADD. + +Sun Mar 27 18:25:25 BST 2011 Colin Watson <cjwatson@debian.org> + + * Version: 2.6.0-pre1. + * po/man-db.pot, po/*.po: Update. + * man/po4a/po/man-db-manpages.pot: Update. + +Thu Mar 24 12:46:38 GMT 2011 Colin Watson <cjwatson@debian.org> + + * lib/security.c (do_system_drop_privs_child): Remove unused + variable. + +Thu Mar 24 12:43:51 GMT 2011 Colin Watson <cjwatson@debian.org> + + * src/man.c (lang): Make non-const. + (local_man_loop): Free lang after calling display. + (display_filesystem): Likewise. + (display_database): Likewise. + (do_global_apropos_section): Ensure lang is set while calling + display. + * NEWS: Document this. + +Thu Mar 24 01:22:00 GMT 2011 Colin Watson <cjwatson@debian.org> + + Help novices find their way around. See + http://brainstorm.ubuntu.com/idea/25975. + + * src/man.c (main): Add "(press h for help or q to quit)" to the + default less prompt string. + * man/man1/man.man1 (Controlling formatted output): Update + documentation. + * man/po4a/po/man-db-manpages.pot, man/po4a/po/*.po: Update. + * NEWS: Document this. + +Thu Mar 24 01:03:13 GMT 2011 Colin Watson <cjwatson@debian.org> + + Rewrite all remaining subprocess handling in terms of libpipeline. + + * lib/security.c (do_system_drop_privs_child): New function. + (do_system_drop_privs): Rewrite using libpipeline. + * src/catman.c (post_fork): New function. + (catman): Rewrite using libpipeline. + (add_arg): Rewrite as a wrapper around pipecmd_arg. + (do_catman): Remove. + (reset_cursor): Remove. + (parse_for_sec): Use libpipeline for subprocess handling. + (main): Install custom post-fork handler. + * src/man.c (gripe_no_man) [_AIX || __sgi]: Rewrite vendor fallback + using libpipeline. + * src/Makefile.am (catman_LDADD): Add $(libpipeline_LIBS). + + * src/catman.c (main): Duplicate the output of setlocale if + non-NULL. + + * configure.ac (AC_FUNC_VFORK): Remove. + (AC_REPLACE_FUNCS): Remove waitpid. + * gnulib: Remove waitpid module. + * lib/README: Remove waitpid.c. + * lib/waitpid.c: Remove. + +Sun Mar 20 12:58:42 GMT 2011 Colin Watson <cjwatson@debian.org> + + Remove the need for our patched version of xstrdup. + + * lib/encodings.c (get_locale_charset): Check return value of + setlocale before passing to xstrdup. + (find_charset_locale): Likewise. + * lib/pathsearch.c (pathsearch): Check return value of getenv before + passing to xstrdup. + (pathsearch_executable): Likewise. + * lib/tempfile.c (create_tempdir): Adjust appendstr call to avoid + needing to pass return value of path_search to xstrdup. + * src/check_mandirs.c (test_manfile): Don't pass NULL lg.whatis to + xstrdup. + * src/descriptions.c (parse_descriptions): Don't pass NULL + head->whatis to xstrdup. + * src/man.c (main): Check return value of setlocale before passing + to xstrdup. + (add_col): Only call find_charset_locale if locale_charset is + non-NULL. + (add_candidate): Don't pass NULL ult to xstrdup. + * src/manp.c (read_config_file): Adjust appendstr call to avoid + needing to pass return value of getenv to xstrdup. + * src/whatis.c (do_apropos): Don't pass NULL info.whatis to xstrdup. + (main): Check return value of setlocale before passing to xstrdup. + * src/zsoelim.l (zsoelim_stdin_data_new): Don't pass NULL path to + xstrdup. + + * Makefile.am (EXTRA_DIST): Remove gnulib/lib/xmalloc.c.orig and + gnulib/lib/xmalloc.patch. + * autogen.sh: Stop applying gnulib/lib/xmalloc.patch. + * gnulib/lib/xmalloc.c.orig, gnulib/lib/xmalloc.patch: Remove. + +Sun Mar 20 01:39:41 GMT 2011 Colin Watson <cjwatson@debian.org> + + * gnulib: Import waitpid module. + +Sun Mar 20 01:31:33 GMT 2011 Colin Watson <cjwatson@debian.org> + + Upgrade to Gnulib 20110216-stable. + +Tue Mar 15 10:55:52 GMT 2011 Colin Watson <cjwatson@debian.org> + + * include/manconfig.h.in (STD_SECTIONS): Add section 0 between 3 and + 2, matching a change in man-db 2.5.6. + +Tue Mar 15 10:52:58 GMT 2011 Colin Watson <cjwatson@debian.org> + + * src/man.c (compare_candidates): If the user asked for an explicit + section, sort exact matches first (Fedora bug #684977). + * src/tests/man-3: New file. + * src/tests/Makefile.am (ALL_TESTS): Add man-3. + * NEWS: Document this. + +Tue Mar 15 10:48:19 GMT 2011 Colin Watson <cjwatson@debian.org> + + * src/manp.c (add_sections): Put user entries in a separate list. + (get_sections): If any user entries are present, use them rather + than system entries. + (add_to_dirlist): Pass user to add_sections. + * NEWS: Document this. + +Mon Mar 14 10:55:39 GMT 2011 Joe Hansen <joedalton2@yahoo.dk> + + * po/da.po: Update from Translation Project. + * man/THANKS: Update. + +Wed Mar 2 11:12:13 GMT 2011 Colin Watson <cjwatson@debian.org> + + * src/mandb.c (main): Reset SIGPIPE to SIG_DFL on startup, to avoid + noisy output in the event that mandb was started from a context + where SIGPIPE was ignored (e.g. Fedora bug #649674). + * NEWS: Document this. + +Tue Jan 25 00:20:29 GMT 2011 Colin Watson <cjwatson@debian.org> + + * src/lexgrog.l (MAN_NAME): Consider .PD requests as paragraph + breaks, to work around poor lexical analysis that causes them to + be matched as .P and emit a stray trailing "D" (Debian bug + #611012). + +Sun Jan 23 23:50:38 GMT 2011 Colin Watson <cjwatson@debian.org> + + * Makefile.am (EXTRA_DIST): Remove gnulib/m4/sockpfaf.m4, which was + removed along with the internal copy of libpipeline. + * man/po4a/Makefile.am (EXTRA_DIST): Add Locale/Po4a/Manext.pm. + (PO4A_ENVIRONMENT): Set PERL5LIB to $(srcdir), not `pwd`. + +Sun Jan 23 17:01:51 GMT 2011 Colin Watson <cjwatson@debian.org> + + * man/man1/apropos.man1 (OPTIONS), man/man1/lexgrog.man1 (OPTIONS), + man/man1/man.man1 (OPTIONS), man/man1/manconv.man1 (OPTIONS), + man/man1/manpath.man1 (OPTIONS), man/man1/whatis.man1 (OPTIONS), + man/man1/zsoelim.man1 (OPTIONS), man/man8/accessdb.man8 (OPTIONS), + man/man8/catman.man8 (OPTIONS), man/man8/mandb.man8 (OPTIONS): + Print commas in roman rather than bold. Based on a patch from + David Prévot (Debian bug #600002). + * man/po4a/po/man-db-manpages.pot, man/po4a/po/*.po: Update. + Manually unfuzzy translations. + +Mon Jan 10 20:08:03 GMT 2011 Colin Watson <cjwatson@debian.org> + + If mandb sees that A is a symlink to B, it should never store a + whatis reference for B (Debian bug #204249). + + * src/check_mandirs.c (whatis_hashtable_free): New function. + (test_manfile): Change whatis_hash free function to + whatis_hashtable_free. Fetch an ult_trace structure from ult_src, + record it in whatis_hash in the case of a cache miss, and pass it + to store_descriptions. + * src/descriptions_store.c (is_prefix): New function. + (store_descriptions): Add path and trace parameters. Update all + callers. + * src/descriptions.h (store_descriptions): Update prototype. Count + a match for any name in the provided ult_trace structure as + indicating that we shouldn't create a whatis reference. If a name + matches a trace entry outside the current manual hierarchy, skip + that name entirely. + * src/ult_src.c (ult_trace, free_ult_trace): New functions. + (ult_src): Add trace parameter. Record each file name we + encounter in the trace. Update all callers. + * src/ult_src.h (ult_src): Update prototype. + (free_ult_trace): Add prototype. + * src/Makefile.am (lexgrog_SOURCES): Add filenames.c and + filenames.h. + + * src/tests/mandb-2: Test two-level symlinks. + * src/tests/mandb-4: New file. + * src/tests/Makefile.am (ALL_TESTS): Add mandb-4. + +Mon Jan 10 16:20:22 GMT 2011 Colin Watson <cjwatson@debian.org> + + * man/man1/man.man1 (DESCRIPTION), man/de/man1/man.man1 + (BESCHREIBUNG), man/es/man1/man.man1 (DESCRIPCIÓN), + man/it/man1/man.man1 (DESCRIZIONE), man/ja/man1/man.man1 (説明): + Enclose long table cells in T{ T}. + * man/po4a/Locale/Po4a/Manext.pm: New file, to let us translate + individual table cells separately. + * man/po4a/Makefile.am: Run po4a with PERL5LIB=`pwd`. + * man/po4a/po4a.cfg: Change type to manext. + * man/po4a/po/man-db-manpages.pot, man/po4a/po/*.po: Update. + * man/check-man: Stop ignoring "table wider than line width" + warnings. + * NEWS: Document this. + +Sat Jan 8 18:21:07 GMT 2011 Colin Watson <cjwatson@debian.org> + + * po/POTFILES.in: Remove lib/pipeline.c (file removed) and + src/descriptions.c (no translatable strings). + * po/man-db.pot, po/*.po: Update. + +Sat Jan 8 18:14:18 GMT 2011 Colin Watson <cjwatson@debian.org> + + Remove obsolete cat* subdirectories as well as NLS subdirectories. + + * src/mandb.c (process_manpath): Store the manpath in tried_catdirs + along with whether it has been seen. + (tried_catdirs_free): New function. + (purge_catdir): Improve message. + (purge_catsubdirs): New function. + (purge_catdirs): Adjust tried_catdirs handling. Call + purge_catsubdirs for both top-level catdirs and NLS catdirs. + (main): Set tried_catdirs free function to tried_catdirs_free. + * NEWS: Document this. + +Sat Jan 8 11:42:13 GMT 2011 Colin Watson <cjwatson@debian.org> + + Remove obsolete NLS subdirectories of cat directories (Debian bug + #558804). + + * lib/hashtable.c (hashtable_iterate): New function. + * lib/hashtable.h (hashtable_iterate): Add prototype. + + * lib/util.c (remove_directory): Add recurse parameter. Add missing + closedir calls. + * include/manconfig.h.in (remove_directory): Update prototype. + * src/man.c (format_display): Update remove_directory callers. + + * src/mandb.c (process_manpath): Add catpath to tried_catpath hash. + Check that manpath exists and is a directory here rather than in + the caller. + (is_lang_dir, purge_catdir, purge_catdirs): New functions. + (main): Create and free tried_catdirs. Move manpath stat checks + to process_manpath. Call purge_catdirs after all manpath entries + have been processed. + + * NEWS: Document this. + +Fri Jan 7 23:49:55 GMT 2011 Colin Watson <cjwatson@debian.org> + + * src/man.c (format_display_and_save): Drop SIGPIPE handling. + pipeline_pump handles this itself, and doing it here means that + SIGPIPE is incorrectly ignored in subprocesses (Debian bug + #597756). + +Fri Jan 7 23:25:39 GMT 2011 Colin Watson <cjwatson@debian.org> + + * src/man.c (make_roff_command): Use running_setuid. + * src/manp.c (get_def): Likewise. + +Tue Jan 4 11:09:00 GMT 2011 Colin Watson <cjwatson@debian.org> + + * lib/security.c (running_setuid): New function. + * lib/security.h (running_setuid): Add prototype. + * src/manconv_client.c (manconv_stdin): If running setuid, exec + manconv as an external process, since iconv_open is not guaranteed + to work correctly in setuid processes. + + * configure.ac: Require libpipeline >= 1.1.0. + * docs/INSTALL.quick: Document increased version requirement. + + * NEWS: Document this. + +Mon Jan 3 03:02:50 GMT 2011 Colin Watson <cjwatson@debian.org> + + Add basic support for the Heirloom Documentation Tools. + + * m4/man-heirloom-nroff.m4: New file. + * configure.ac: Call MAN_PROG_HEIRLOOM_NROFF. If successful and an + nroff macro was found, prepend -mg -msafe -mpadj to the nroff and + troff options. + * lib/encodings.c (charset_table) [HEIRLOOM_NROFF]: Disable latin1 + and nippon devices. + (device_table) [HEIRLOOM_NROFF]: Add locale device. + * src/man.c (heirloom_line_length) [HEIRLOOM_NROFF]: New function. + (add_roff_line_length): Optionally return a command, which should + be inserted before troff. + (add_roff_line_length) [HEIRLOOM_NROFF]: Support Heirloom, which + needs text inserted at the start of the input. + (make_roff_command) [HEIRLOOM_NROFF]: Use locale device instead of + utf8 in UTF-8 locales. Handle add_roff_line_length return value. + Unset TROFFMACS if running setuid. + (make_browser): Compile only if TROFF_IS_GROFF. + (format_display): Only declare variables related to HTML output if + TROFF_IS_GROFF. + * src/tests/zsoelim-1: Ignore .ll and .lt lines inserted by + heirloom_line_length. + * NEWS: Document this. + +Mon Jan 3 00:56:55 GMT 2011 Colin Watson <cjwatson@debian.org> + + * src/manp.c (get_manpath_from_path): Return an empty string rather + than asserting if no path elements with corresponding manpaths + were found (Debian bug #608490). + * src/man.c (local_man_loop): Skip executable processing if no + useful manpath was returned. + * src/tests/man-2: New test for this bug. + * src/tests/Makefile.am (ALL_TESTS): Add man-2. + + * README (Copyright and licensing): New year. + +Thu Dec 23 16:00:06 GMT 2010 Colin Watson <cjwatson@debian.org> + + * src/check_mandirs.c (testmandirs): Make output neater when stderr + is not a tty. Suggested by C W Rose. + * NEWS: Document this. + +Thu Dec 23 15:50:39 GMT 2010 Colin Watson <cjwatson@debian.org> + + * src/lexgrog.l (glyphs, perldocs): Remove terminating NULL entries; + these arrays are handled using bsearch with an explicit length, + and NULL-terminating them causes crashes. + +Mon Dec 20 00:41:04 GMT 2010 Colin Watson <cjwatson@debian.org> + + * src/catman.c (main): Initialise locale using the LC_MESSAGES + category rather than LC_ALL. glibc returns a composite name for + the latter. + * lib/util.c (init_locale): Return void instead of returning the + result of setlocale. + * include/manconfig.h.in (init_locale): Update prototype. + +Sun Dec 19 16:10:35 GMT 2010 Colin Watson <cjwatson@debian.org> + + * gnulib: Import idpriv-drop and idpriv-droptemp modules. + * configure.ac: Stop checking for seteuid, setreuid, and setresuid. + * lib/security.c (POSIX_SAVED_IDS, SET_EUID, SWAP_UIDS): Remove in + favour of idpriv.h. + (drop_effective_privs): Use idpriv_temp_drop. + (regain_effective_privs): Use idpriv_temp_restore. + (do_system_drop_privs): Use idpriv_drop. Drop saved-IDs case; + avoiding a fork doesn't justify having two code paths. + +Sun Dec 5 20:58:10 GMT 2010 Colin Watson <cjwatson@debian.org> + + Provide byte positions in manconv errors (Debian bug #562789). + + * src/manconv.c (locate_error): New function. + (try_iconv): Skip over processed input data after handling errors. + Use locate_error to produce exact byte positions for conversion + errors. + +Thu Dec 2 23:54:03 GMT 2010 Colin Watson <cjwatson@debian.org> + + Allow passing multiple sections to whatis and apropos (Debian bug + #571285). + + * src/whatis.c (options): Allow spelling --section as --sections; + this is now the preferred long spelling. Document that the + argument may be colon-separated. + (split_sections): New function. + (parse_opt): Pass -s argument through split_sections. + (do_whatis): Move most logic to ... + (do_whatis_section): ... here. + (do_whatis): Iterate over sections, calling do_whatis_section for + each. + (do_apropos): Test all requested sections. + * man/man1/apropos.man1 (SYNOPSIS, OPTIONS), man/man1/whatis.man1 + (SYNOPSIS, OPTIONS): Document new semantics. + * man/po4a/po/man-db-manpages.pot, man/po4a/po/*.po: Update. + * NEWS: Document this. + +Thu Dec 2 23:32:07 GMT 2010 Colin Watson <cjwatson@debian.org> + + * src/whatis.c (parse_opt): Make -f and -k force program identity to + whatis and apropos respectively. This is useful when running + directly from the build tree, since libtool makes it hard to + detect the program name correctly. + +Thu Dec 2 19:28:06 GMT 2010 Colin Watson <cjwatson@debian.org> + + * src/catman.c (parse_for_sec): Format ARG_MAX - arg_size using %zd. + * src/manp.c (has_mandir): Cast printf field precisions to int. + (create_pathlist): Use %td to format pointer differences. + +Thu Dec 2 19:23:36 GMT 2010 Colin Watson <cjwatson@debian.org> + + * src/man.c (make_display_command): Make sure the returned pipeline + is never NULL; this causes crashes later. + +Thu Dec 2 12:33:43 GMT 2010 Colin Watson <cjwatson@debian.org> + + * src/man.c (make_display_command): Don't start a pager if standard + output is not a tty (Fedora bug #658132). + * NEWS: Document this. + +Thu Dec 2 00:31:31 GMT 2010 Colin Watson <cjwatson@debian.org> + + Handle roff named glyphs and perldoc strings in NAME sections + (Debian bug #601025). + + * src/lexgrog.l (glyphs, perldocs): New arrays. + (MAN_NAME): Call newline_found on encountering \& at the start of + a line. Call add_glyph_to_whatis on roff named glyphs, and + add_perldoc_to_whatis on perldoc strings. + (compare_macro, add_macro_to_whatis, add_glyph_to_whatis, + add_perldoc_to_whatis): New functions. + * NEWS: Document this. + +Wed Dec 1 22:24:51 GMT 2010 Colin Watson <cjwatson@debian.org> + + Improve .so searching (Debian bug #503472). + + * src/Makefile.am (zsoelim_SOURCES): Add manp.c and manp.h. + * src/zsoelim.l (zsoelim_parse_file): Take manpathlist and + parent_path arguments, and save those to pass on to + zsoelim_open_file. + (try_compressed): New function, split out from zsoelim_open_file. + (zsoelim_open_file): Take manpathlist and parent_path arguments. + Rearrange search logic as follows: (1) if there is no parent_path, + try opening directly; (2) look up filename within each manpath + entry, treating filenames without directory parts as full manual + page lookups; (3) if there is a parent_path, try opening directly. + (zsoelim_stdin): Pass path and manpathlist from input data to + zsoelim_open_file and zsoelim_parse_file. + (zsoelim_stdin_data_new, zsoelim_stdin_data_free): New functions. + * src/zsoelim.h (zsoelim_open_file, zsoelim_parse_file): Update + prototypes. + (zsoelim_stdin_data_new, zsoelim_stdin_data_free): Add prototypes. + * src/zsoelim_main.c (main): Initialise locale and manpath. Pass + manpath to zsoelim_open_file and zsoelim_parse_file. + * src/man.c (main): Calculate manpath before handling -l option. + (make_roff_command): Pass dir and manpathlist to zsoelim_stdin. + * src/tests/zsoelim-1: New test. + * src/tests/Makefile.am (ALL_TESTS): Add zsoelim-1. + * NEWS: Document this. + + * src/manp.c (get_def): If not setuid, make this identical to + get_def_user. + * src/manp.h (get_def): Likewise. + +Wed Dec 1 14:15:34 GMT 2010 Colin Watson <cjwatson@debian.org> + + * lib/security.c (do_system_drop_privs): Copy-edit header comment, + and update it for libpipeline. + +Mon Nov 29 17:48:29 GMT 2010 Colin Watson <cjwatson@debian.org> + + Remove obsolete versions of lexgrog. They're still available in + revision control if people want them. + + * src/Makefile.am (EXTRA_DIST): Remove. + * src/README.lexgrog, src/lexgrog.l-2.3.8, src/lexgrog.l-2.4a, + src/lexgrog.l.new: Remove. + +Sun Nov 28 15:01:21 GMT 2010 Colin Watson <cjwatson@debian.org> + + Remove internal copy of libpipeline. + + * configure.ac: Remove --enable-socketpair-pipe and + --with-external-pipeline options. Remove INTERNAL_PIPELINE + Automake conditional. Check for libpipeline unconditionally. + * docs/INSTALL.quick: Mention the need to install libpipeline. + * gnulib: Remove strsignal and sys_select modules. + * lib/Makefile.am (libman_la_SOURCES): Never add pipeline.c or + pipeline.h. + * lib/pipeline.c, lib/pipeline.h: Remove. + * m4/man-socketpair.m4: Remove. + * NEWS: Document this. Bump to 2.6.0. + +Thu Nov 18 13:46:04 GMT 2010 Colin Watson <cjwatson@debian.org> + + Reducing linkage when we switched to libtool caused build failures + with versions of GNU ld that default to --no-copy-dt-needed-entries. + Partially revert these changes, this time taking care to directly + link programs against libraries if and only if they use symbols from + those libraries directly (otherwise, the linkage from libman.la and + libmandb.la should be sufficient). + + * src/Makefile.am (LIBMAN): Add $(top_builddir)/gnulib/lib/libgnu.la + and @LTLIBINTL@. + (LIBMANDB): Add $(LIBMAN) and $(DBLIBS). + (lexgrog_LDADD, man_LDADD, manconv_LDADD, mandb_LDADD): Add + $(libpipeline_LIBS) and $(LTLIBICONV). + (whatis_LDADD, zsoelim_LDADD): Add $(libpipeline_LIBS). + * NEWS: Document this. + +Wed Nov 17 11:43:30 GMT 2010 Colin Watson <cjwatson@debian.org> + + * Version: 2.5.9. + * man/po4a/po/man-db-manpages.pot, po/man-db.pot, po/*.po: Update. + +Wed Nov 17 11:34:36 GMT 2010 Colin Watson <cjwatson@debian.org> + + * lib/util.c (init_locale): Avoid warnings if configured with + --disable-nls. Remove arguments, since this was only ever called + as 'init_locale (LC_ALL, "")' anyway, and that required callers to + explicitly include <locale.h>. Update all callers. + * include/manconfig.h.in (init_locale): Update prototype. + +Wed Nov 17 11:22:28 GMT 2010 Colin Watson <cjwatson@debian.org> + + * src/check_mandirs.c (test_manfile): Revert changes to this + function from 2010-11-14. Explicitly deleting bad links from the + database was overly sensitive to directory ordering, and caused + test failures on some systems. + * NEWS: Document this. + +Mon Nov 15 22:34:57 GMT 2010 Colin Watson <cjwatson@debian.org> + + * Version: 2.5.8. + * man/po4a/po/man-db-manpages.pot, po/man-db.pot, po/*.po: Update. + +Mon Nov 15 22:22:47 GMT 2010 Colin Watson <cjwatson@debian.org> + + * man/Rules.man (distclean-hook): Rename to ... + (distclean-local): ... this, and fix syntax so that it actually + works. + +Mon Nov 15 21:38:04 GMT 2010 Colin Watson <cjwatson@debian.org> + + * src/man.c (local_man_loop): Simplify and improve code to make a + temporary copy of manpathlist, in order that it can't free + unallocated memory (may fix Savannah bug #31633). + +Mon Nov 15 13:48:26 GMT 2010 Colin Watson <cjwatson@debian.org> + + * man/po4a/Makefile.am (clean-local): Remove; distclean-hook in + man/Rules.man already takes care of this (thanks, Denis Barbier). + +Sun Nov 14 22:12:21 GMT 2010 Colin Watson <cjwatson@debian.org> + + Prevent repeated rescans when a link is broken. Thanks to Daniel + Isenmann for debugging information. + + * src/check_mandirs.c (test_manfile): Explicitly delete bad links + from the database. + (count_glob_matches, purge_whatis, purge_missing): Extract the + database mtime, and ignore any pages at least as old as that for + the purposes of deciding whether a whatis entry has been replaced + by a real page. + * src/tests/mandb-3: New test. + * src/tests/Makefile.am (ALL_TESTS): Add mandb-3. + * NEWS: Document this. + +Wed Nov 3 23:40:25 GMT 2010 Jordi Mallach <jordi@gnu.org> + + * po/ca.po: Update from Translation Project. + +Wed Nov 3 20:27:46 GMT 2010 Colin Watson <cjwatson@debian.org> + + * src/catman.c (parse_for_sec): Explicitly pass -S before section + number, to reduce ambiguity. + * src/man.c (main): In catman mode, never try to guess whether a + page argument is a section, as it's too easy to get this wrong + (Ubuntu bug #664211). + +Fri Oct 29 07:25:44 BST 2010 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.h (pipeline_install_post_fork): Clarify that this is + run in the child process. + (pipeline_wait_all): Clarify that SIGPIPE is considered equivalent + to exiting zero. + +Fri Oct 29 06:18:31 BST 2010 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.c (pipecmd_new_sequencev): New function. + (pipecmd_new_sequence): Rewrite in terms of pipecmd_new_sequence. + (pipeline_new_command_argv): New function. + (pipeline_new_command_args): Rewrite in terms of + pipeline_new_command_argv. + (pipeline_command_argv): New function. + (pipeline_command_args): Rewrite in terms of + pipeline_command_argv. + * lib/pipeline.h (pipecmd_new_sequencev, pipeline_new_command_argv, + pipeline_command_argv): Add prototypes. + +Fri Oct 29 05:28:33 BST 2010 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.c (pipeline_wait): Rename to ... + (pipeline_wait_all): ... this. Return 127 rather than 1 if + closing the pipeline output fails. Return 127 if a command other + than the last one fails. Return the statuses and the number of + statuses in new output parameters if they are non-NULL. + (pipeline_wait): Add new wrapper function. + * lib/pipeline.h (pipeline_wait_all): Add prototype. + +Fri Oct 29 03:50:16 BST 2010 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.c (pipeline_new): Default ignore_signals to 0. + * lib/decompress.c (decompress_open, decompress_fdopen): Remove + redundant calls to pipeline_ignore_signals. + * src/man.c (make_browser): Explicitly ignore SIGINT and SIGQUIT + when running the browser. + (make_display_command): Explicitly ignore SIGINT and SIGQUIT when + running the pager. + +Fri Oct 29 03:28:57 BST 2010 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.c, lib/pipeline.h: Rename command to pipecmd, + command_* to pipecmd_*, and COMMAND_* to PIPECMD_*. Update all + callers. + +Fri Oct 29 03:24:10 BST 2010 Colin Watson <cjwatson@debian.org> + + * man/po4a/po/nl.po: Use I<> rather than U<>. + +Tue Oct 26 12:43:45 BST 2010 Erwin Poeze <erwin.poeze@gmail.com> + + * man/po4a/po/nl.po: Update from Translation Project. + +Tue Oct 26 12:40:12 BST 2010 Martin Schauer <Martin.E.Schauer@gmx.de> + + * po/de.po: Update from Translation Project. + * man/THANKS: Update. + +Mon Oct 25 17:59:01 BST 2010 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.c (pipeline_install_post_fork): New function. + (pipeline_start): Call post-fork handler rather than hardcoding + pop_all_cleanups. + * lib/pipeline.h (pipeline_install_post_fork): Add prototype. + + * src/lexgrog_test.c (main), src/man.c (main), src/manconv_main.c + (main), src/mandb.c (main), src/whatis.c (main), + src/zsoelim_main.c (main): Install pop_all_cleanups as a post-fork + handler. + +Mon Oct 25 16:18:08 BST 2010 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.c (command_unsetenv): New function. + (command_dup, command_dump, command_tostring): Check for NULL + cmd->env[i].value. + (command_start_child): If cmd->env[i].value is NULL, call unsetenv + rather than setenv. + * lib/pipeline.h (command_unsetenv): Add prototype. + +Sun Oct 24 23:37:08 BST 2010 Colin Watson <cjwatson@debian.org> + + Allow building with an external libpipeline. + + * configure.ac: Add --with-external-pipeline option. + * lib/Makefile.am (libman_la_CPPFLAGS): Add $(libpipeline_CFLAGS). + (libman_la_SOURCES): Include pipeline.c and pipeline.h only + conditionally. + (libman_la_LDFLAGS): Add $(libpipeline_LIBS). + * src/Makefile.am (AM_CPPFLAGS): Add $(libpipeline_CFLAGS). + * NEWS: Document this. + +Sun Oct 24 21:15:07 BST 2010 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.c (command_start_child): Add trailing newline to + "nice failed" debug message. + +Sun Oct 24 21:10:20 BST 2010 Colin Watson <cjwatson@debian.org> + + Make command and pipeline opaque types. + + * lib/pipeline.c (command_nice, command_discard_err, + pipeline_get_ncommands, pipeline_get_command, + pipeline_set_command, pipeline_want_in, pipeline_want_out, + pipeline_want_infile, pipeline_want_outfile, + pipeline_ignore_signals): New functions. + * lib/pipeline.h (command_nice, command_discard_err, + pipeline_get_ncommands, pipeline_get_command, + pipeline_set_command, pipeline_want_in, pipeline_want_out, + pipeline_want_infile, pipeline_want_outfile, + pipeline_ignore_signals): Add prototypes. + + * lib/pipeline.h (enum command_tag, struct command_env, struct + command, struct pipeline): Move to ... + * lib/pipeline.c (enum command_tag, struct command_env, struct + command, struct pipeline): ... here. + + Redirections are now handled slightly differently internally, + allowing redirection from/to fd 0. + + * lib/pipeline.c (pipeline_new, pipeline_join): Set redirect_in and + redirect_out. + (pipeline_connect): Use pipeline_want_in and pipeline_want_out. + Check source->redirect_out. + (pipeline_start): Handle new redirection semantics. + + * lib/decompress.c (decompress_open, decompress_fdopen): Use new + accessor functions rather than accessing pipeline fields directly. + * src/man.c (make_display_command, discard_stderr, open_cat_stream, + format_display, display_catman, display): Likewise. + +Sun Oct 24 21:04:45 BST 2010 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.c (pipeline_run): This would be a more convenient + wrapper for the common case if it freed the pipeline as well, so + do that. (Callers that don't want this should call pipeline_start + and pipeline_wait separately.) + * lib/pipeline.h (pipeline_run): Update comment. + * lib/security.c (do_system_drop_privs): Consistently free the + supplied pipeline, and document doing so. + * src/man.c (format_display): Remove pipeline_free after + do_system_drop_privs. + * src/whatis.c (use_grep): Remove pipeline_free after pipeline_run. + +Sun Oct 24 21:03:25 BST 2010 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.c (pipeline_new_command_args): New function. + * lib/pipeline.h (pipeline_new_command_args): Add prototype. + * src/man.c (make_browser): Use it. + +Sun Oct 24 20:59:27 BST 2010 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.c (pipeline_run): New function. + * lib/pipeline.h (pipeline_run): Add prototype. + * lib/security.c (do_system_drop_privs): Use it. + * src/man.c (do_extern, run_mandb): Likewise. + * src/whatis.c (use_grep): Likewise. + +Sun Oct 24 20:56:00 BST 2010 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.h (pipeline_pump): Mention in comment that arguments + must be NULL-terminated. + +Sun Oct 24 20:55:10 BST 2010 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.h (pipeline_new_commandv): Fix comment. + +Sat Oct 23 20:52:24 BST 2010 Colin Watson <cjwatson@debian.org> + + * configure.ac (AC_TYPE_SIGNAL): Remove (unused). + +Tue Oct 12 11:16:31 BST 2010 Colin Watson <cjwatson@debian.org> + + * lib/util.c (init_locale): New function. + * include/manconfig.h.in (init_locale): Add prototype. + * src/Makefile.am (AM_CPPFLAGS): Move -DLOCALEDIR to ... + * lib/Makefile.am (libman_la_CPPFLAGS): ... here. + + * src/accessdb.c (main), src/catman.c (main), src/globbing_test.c + (main), src/lexgrog_test.c (main), src/man.c (main), + src/manconv_main.c (main), src/mandb.c (main), src/manpath.c + (main), src/whatis.c (main), src/zsoelim.c (main): Use + init_locale. + + * lib/util.c (init_locale): Suppress warning message if + DPKG_RUNNING_VERSION is set in the environment. + * NEWS: Document this. + +Mon Oct 11 09:38:03 BST 2010 Colin Watson <cjwatson@debian.org> + + * docs/HACKING (Revision control): Update for restored bzr+ssh + access. + +Mon Oct 11 09:36:55 BST 2010 Colin Watson <cjwatson@debian.org> + + * .bzrignore: Remove tools/config.rpath.*, which hasn't been needed + here since 2009-04-14. + +Tue Oct 5 11:48:57 BST 2010 Colin Watson <cjwatson@debian.org> + + * man/po4a/Makefile.am (clean-local): Don't use 'po4a + --rm-translations', since it sometimes updates PO/POT files and + the obvious workaround for that breaks 'make distcheck'. + Reimplement it by hand instead. + +Tue Oct 5 10:59:02 BST 2010 Colin Watson <cjwatson@debian.org> + + * man/check-man: Use libtool to run man from the build tree. + +Tue Oct 5 10:36:35 BST 2010 Colin Watson <cjwatson@debian.org> + + It turns out that AM_GNU_GETTEXT([use-libtool]) is unsupported. + Switch to external libintl instead. + + * configure.ac (AM_GNU_GETTEXT): Set external. + (AC_CONFIG_FILES): Remove intl/Makefile. + * Makefile.am (SUBDIRS): Remove intl. + (EXTRA_DIST): Add gnulib/m4/glibc2.m4, gnulib/m4/intdiv0.m4, + gnulib/m4/intl.m4, gnulib/m4/intmax.m4, gnulib/m4/inttypes-pri.m4, + gnulib/m4/lcmessage.m4, gnulib/m4/printf-posix.m4, + gnulib/m4/uintmax_t.m4, and gnulib/m4/visibility.m4. + * intl: Remove. + * lib/Makefile.am (libman_la_CPPFLAGS): Remove + -I$(top_builddir)/intl. + * libdb/Makefile.am (libmandb_la_CPPFLAGS): Likewise. + * src/Makefile.am (AM_CPPFLAGS): Likewise. + * .bzrignore: Remove intl/Makefile, intl/charset.alias, + intl/libgnuintl.h, intl/libintl.h, intl/ref-add.sed, and + intl/ref-del.sed. + * NEWS: Document this. + +Tue Oct 5 01:05:24 BST 2010 Colin Watson <cjwatson@debian.org> + + * configure.ac (AM_GNU_GETTEXT): Set use-libtool. + +Tue Oct 5 00:11:23 BST 2010 Colin Watson <cjwatson@debian.org> + + * lib/Makefile.am (libman_la_LIBADD): Include @LTLIBINTL@ rather + than @LIBINTL@. + * src/Makefile.am (whatis_LDADD): Include $(LTLIBICONV) rather than + $(LIBICONV). + +Mon Oct 4 23:56:36 BST 2010 Colin Watson <cjwatson@debian.org> + + * po/POTFILES.in: Add lib/security.c. Remove src/fake_security.c + and src/security.c. + * po/man-db.pot, po/*.po: Update. + * man/po4a/po/man-db-manpages.pot, man/po4a/po/*.po: Update. + +Sun Oct 3 23:57:45 BST 2010 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.c (command_argf): New function. + * lib/pipeline.h (command_argf): Add prototype. + * src/man.c (add_roff_line_length): Use it, reducing need for + temporary local variables. + (make_roff_command): Likewise. + +Sun Oct 3 23:30:06 BST 2010 Colin Watson <cjwatson@debian.org> + + * src/man.c (setenv_less): Take a command argument. Set environment + variables only for that command, not globally. + (make_display_command): Call setenv_less on the command + constructed from pager. + +Sun Oct 3 22:34:13 BST 2010 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.c (reap_children, pipeline_sigchld, + pipeline_install_sigchld): Move above pipeline_start. + (pipeline_install_sigchld): Make static. Return immediately if + already installed. + (pipeline_start): Call pipeline_install_sigchld. + * lib/pipeline.h (pipeline_start): Document that this installs a + SIGCHLD handler. + (pipeline_install_sigchld): Remove prototype. + * src/lexgrog_test.c (main), src/man.c (main), src/manconv_main.c + (main), src/mandb.c (main), src/whatis.c (main), + src/zsoelim_main.c (main): Stop calling pipeline_install_sigchld. + +Thu Sep 30 16:01:22 BST 2010 Colin Watson <cjwatson@debian.org> + + Convert the French manual pages translation to po4a. + + * man/LINGUAS: Remove fr. + * man/LINGUAS.po4a: Add fr. + * man/fr/man1, man/fr/man5, man/fr/man8: Remove. + * man/fr/Makefile.am (PO4A_LINGUA): Set to yes. + (EXTRA_DIST): Add translator.add. + (man1_MANS): Add man1/manconv.1. + * man/po4a/Makefile.am (POFILES): Add po/fr.po. + * man/po4a/po4a.cfg (po4a_langs): Add fr. + * man/THANKS: Add David Prévot. + * .bzrignore: Add man/fr/man1, man/fr/man5, and man/fr/man8. + +Thu Sep 30 15:44:46 BST 2010 David Prévot <david@tilapin.org> + + * po/fr.po: Update from Translation Project. + * man/po4a/po/fr.po: New from Translation Project. + * man/fr/translator.add: New file. + +Mon Sep 27 19:06:10 BST 2010 Colin Watson <cjwatson@debian.org> + + Move util to libman. + + * src/util.c: Move to ... + * lib/util.c: ... here. + * lib/Makefile.am (libman_la_SOURCES): Add util.c. + * src/Makefile.am (accessdb_SOURCES, catman_SOURCES, + globbing_SOURCES, lexgrog_SOURCES, man_SOURCES, mandb_SOURCES, + manpath_SOURCES, whatis_SOURCES, zsoelim_SOURCES): Remove util.c. + * lib/README: Add util.c. + +Mon Sep 27 00:50:37 BST 2010 Colin Watson <cjwatson@debian.org> + + * gnulib/m4/gnulib-cache.m4: Remove obsolete modules atexit, memcmp, + and strcspn. + +Mon Sep 27 00:24:50 BST 2010 Colin Watson <cjwatson@debian.org> + + Move security to libman. + + * src/security.c: Move to ... + * lib/security.c: ... here. + * src/security.h: Move to ... + * lib/security.h: ... here. + * lib/Makefile.am (libman_la_SOURCES): Add security.c and + security.h. + * src/Makefile.am (lexgrog_SOURCES): Remove fake_security.c and + security.h. + (man_SOURCES, mandb_SOURCES): Remove security.c and security.h. + * lib/README: Add security.*. + * src/lexgrog_test.c: Call init_security, so that we can use generic + security functions rather than fake_security. + * src/fake_security.c: Remove. + + * lib/security.c (do_system_drop_privs): Unroll calls to do_system + into calls to pipeline_start and pipeline_wait. + * src/whatis.c (use_grep): Likewise. + * src/util.c (do_system): Remove. + * include/manconfig.h.in (do_system): Remove. + + * src/*.c: Update #include grouping for movements to libman. + +Sun Sep 26 23:53:08 BST 2010 Colin Watson <cjwatson@debian.org> + + Get the tests working again following the switch to libtool. + + * src/tests/Makefile.am (TESTS_ENVIRONMENT): Remove CLEANPATH. + * src/tests/man-1, src/tests/mandb-1, src/tests/mandb-2: Set MANPATH + rather than using run_clean_path; running with a stripped-down + PATH is risky in general and breaks libtool in particular. + * src/tests/testlib.sh (run_clean_path): Remove. + + * src/tests/Makefile.am (TESTS_ENVIRONMENT): Add top_builddir. + * src/tests/testlib.sh (run): New function. + * src/tests/lexgrog-1, src/tests/man-1, src/tests/manconv-1, + src/tests/manconv-2, src/tests/manconv-3, src/tests/mandb-1, + src/tests/mandb-2, src/tests/testlib.sh (accessdb_filter): Use run + when running programs from the build tree. + +Sun Sep 26 23:25:31 BST 2010 Colin Watson <cjwatson@debian.org> + + Move encodings to libman. + + * src/encodings.c: Move to ... + * lib/encodings.c: ... here. + * src/encodings.h: Move to ... + * lib/encodings.h: ... here. + * lib/Makefile.am (libman_la_SOURCES): Add encodings.c and + encodings.h. + * src/Makefile.am (lexgrog_SOURCES, man_SOURCES, manconv_SOURCES, + mandb_SOURCES, manpath_SOURCES): Remove encodings.c and + encodings.h. + * lib/README: Add encodings.*. + +Sun Sep 26 23:15:00 BST 2010 Colin Watson <cjwatson@debian.org> + + * src/encodings.c (struct manconv_codes, manconv_stdin, + free_manconv_codes, add_manconv): Move to ... + * src/manconv_client.c: ... here (new file). + * src/encodings.h (add_manconv): Move to ... + * src/manconv_client.h: ... here (new file). + * src/lexgrog.l, src/man.c, src/straycats.c: Include + manconv_client.h. + * src/Makefile.am (lexgrog_SOURCES, man_SOURCES, mandb_SOURCES): Add + manconv_client.c and manconv_client.h. + + * src/manp.c: Remove unnecessary inclusion of encodings.h. + +Sun Sep 26 22:59:54 BST 2010 Colin Watson <cjwatson@debian.org> + + * src/compression.c: Remove unnecessary inclusion of security.h. + * src/ult_src.c: Likewise. + +Sun Sep 26 22:47:02 BST 2010 Colin Watson <cjwatson@debian.org> + + * src/manp.c (mkcatdirs): Move to ... + * src/check_mandirs.c (mkcatdirs): ... here, as it's only used by + testmandirs. Removes dependency of manp.c on security.h. + * src/manp.h (mkcatdirs): Remove prototype. + * src/Makefile.am (catman_SOURCES, manpath_SOURCES, whatis_SOURCES): + Remove fake_security.c. + +Sun Sep 26 22:34:17 BST 2010 Colin Watson <cjwatson@debian.org> + + * src/security.c (remove_with_dropped_privs): Remove; no longer + used. + * src/fake_security.c (remove_with_dropped_privs): Likewise. + * src/security.h (remove_with_dropped_privs): Likewise. + +Sun Sep 26 22:23:26 BST 2010 Colin Watson <cjwatson@debian.org> + + * lib/Makefile.am (libman_la_LIBADD): Use $(LTLIBOBJS) rather than + $(LIBOBJS). + +Sun Sep 26 22:08:39 BST 2010 Colin Watson <cjwatson@debian.org> + + Build libman and libmandb as shared libraries, reducing our + installed footprint by about 200K. + + * configure.ac: Add LT_INIT. Move AC_GNU_SOURCE up to above it. + Remove redundant AC_PROG_RANLIB. + * gnulib/m4/gnulib-cache.m4: Enable libtool support. + * gnulib/m4/libtool.m4, gnulib/m4/ltoptions.m4, + gnulib/m4/ltsugar.m4, gnulib/m4/ltversion.m4, + gnulib/m4/lt~obsolete.m4, tools/ltmain.sh: New files, created by + libtoolize. + * autogen.sh: Export LIBTOOLIZE_OPTIONS=--quiet. + * lib/Makefile.am: Switch to libtool. Add ../gnulib/lib/libgnu.la, + $(LIBCOMPRESS), and @LIBINTL@ to LIBADD. Install the library in + $(pkglibdir), and instruct libtool to set an RPATH on binaries + built against this library. + * libdb/Makefile.am: Switch to libtool. Add ../lib/libman.la to + LIBADD. Install the library in $(pkglibdir), and instruct libtool + to set an RPATH on binaries built against this library. + * src/Makefile.am (LIBMAN): Reduce to libman. + (LIBMANDB): Reduce to libmandb. + (accessdb_LDADD, catman_LDADD, globbing_LDADD, lexgrog_LDADD, + man_LDADD, manconv_LDADD, mandb_LDADD, manpath_LDADD, + whatis_LDADD, zsoelim_LDADD): Remove dependencies of libman and + libmandb. + * .bzrignore: Add **/*.la, **/*.lo, **/.libs, and ./libtool. + * NEWS: Document this. + + Avoid symbol clashes between libgnu and libman. + + * lib/hashtable.c (null_hash_free, plain_hash_free, hash_create, + hash_lookup_structure, hash_lookup, hash_install, hash_remove, + hash_free): Rename to ... + (null_hashtable_free, plain_hashtable_free, hashtable_create, + hashtable_lookup_structure, hashtable_lookup, hashtable_install, + hashtable_remove, hashtable_free): ... these. Update all callers + and prototypes. + * lib/hashtable.h (hash_free_ptr): Rename to ... + (hashtable_free_ptr): ... this. Update all users. + +Thu Sep 16 13:53:11 BST 2010 Robert Luberda <robert@debian.org> + + * man/po4a/po/pl.po: Update from Translation Project. + +Tue Aug 17 15:31:38 BST 2010 Colin Watson <cjwatson@debian.org> + + * man/po4a/Makefile.am (clean-local): Make sure not to change PO or + POT files when removing generated translations. + +Tue Aug 17 15:26:12 BST 2010 Colin Watson <cjwatson@debian.org> + + Upgrade to Autoconf 2.67. + +Tue Aug 17 14:29:53 BST 2010 Colin Watson <cjwatson@debian.org> + + * src/man.c (display_catman): Add iconv to format_cmd before adding + a compressor. + * NEWS: Document this. + +Tue Aug 17 14:22:06 BST 2010 Colin Watson <cjwatson@debian.org> + + * src/man.c (add_output_iconv): Make static. + +Tue Jul 20 08:18:41 BST 2010 Colin Watson <cjwatson@debian.org> + + Upgrade to Gnulib 20100704. + + * configure.ac (AM_GNU_GETTEXT_VERSION): Upgrade to gettext 0.18.1. + +Wed May 19 12:38:31 BST 2010 Colin Watson <cjwatson@debian.org> + + * src/descriptions.c (parse_descriptions): Free record. + * src/encodings.c (check_preprocessor_encoding): Free directive. + (manconv_stdin): Free p. + * src/lexgrog_test.c (main): Free lg.filters and lg.whatis. + +Thu May 13 11:45:02 CEST 2010 Clytie Siddall <clytie@riverland.net.au> + + * po/vi.po: Update from Translation Project. + +Mon May 10 09:42:41 CEST 2010 Yuri Kozlov <yuray@komyakino.ru> + + * man/po4a/po/ru.po: Update from Translation Project. + +Sun May 9 07:37:14 BST 2010 Colin Watson <cjwatson@debian.org> + + * Version: 2.5.8-pre1. + * release.sh: Remove man/po4a/po/man-db-manpages.pot before running + 'make distcheck', to force it to be regenerated with the current + version number. + * man/po4a/Makefile.am: Make po/man-db-manpages.pot depend on + update-po, rather than using dist-hook which is too late. + * po/man-db.pot, po/*.po: Update. + * man/po4a/po/man-db-manpages.pot, man/po4a/po/*.po: Update. + +Sat May 8 15:39:49 BST 2010 Colin Watson <cjwatson@debian.org> + + * src/filenames.c (filename_info): Explicitly fail if the extension + is zero-length. + +Sat May 8 15:35:17 BST 2010 Colin Watson <cjwatson@debian.org> + + * src/filenames.c (filename_info): Allow section and extension to + differ as long as the first character is the same. (This is my + understanding of what the code was originally meant to do, but it + only worked if the section was exactly one character long.) + +Tue Apr 27 11:02:48 BST 2010 Colin Watson <cjwatson@debian.org> + + Upgrade to Gnulib 20100424. + +Fri Apr 2 20:44:11 BST 2010 Ville Skyttä <ville.skytta@iki.fi> + + * configure.ac: Only test for lzma if xz is missing. Add xz to list + of compressors checked when deciding whether to define COMP_CAT or + COMP_SRC. + * include/comp_src.h.in (comp_list): If xz is available, use it for + .lzma files in preference. + +Fri Apr 2 20:26:41 BST 2010 Ville Skyttä <ville.skytta@iki.fi> + + * include/comp_src.h.in (comp_list): If compress is not available, + use gzip to handle .Z files. + +Mon Mar 29 09:36:00 BST 2010 Clytie Siddall <clytie@riverland.net.au> + + * po/vi.po: Update from Translation Project. + +Wed Mar 24 11:04:46 GMT 2010 Colin Watson <cjwatson@debian.org> + + Fix build regression when GNU_NROFF is undefined (Savannah bug + #29318). + + * src/man.c (add_col): New function, split out from + make_display_command. + (make_roff_command): Reinstate tbl/col logic here, as by the time + we get to make_display_command we've forgotten whether tbl was + used. + (make_display_command): Remove tbl/col logic, useless here. Use + add_col. + +Sun Mar 21 21:59:54 GMT 2010 Tanguy Ortolo <tanguy+debian@ortolo.eu> + + * src/man.c (main): Try underscore-separated subpages as well as + hyphen-separated ones (Debian bug #574641). + * man/man1/man.man1 (Finding manual pages): Document this. + * NEWS: Document this. + +Wed Mar 17 10:26:44 GMT 2010 Colin Watson <cjwatson@debian.org> + + * gnulib: Import localcharset module. + * src/encodings.c (struct charset_entry): Rename locale_charset to + charset_from_locale. Update all users. + (struct less_charset_entry): Likewise. + (get_locale_charset): Use locale_charset function from Gnulib, + rather than dealing with nl_langinfo and the fallback ourselves. + (get_default_device): Rename locale_charset parameter to + charset_from_locale. + (get_less_charset): Likewise. + (get_jless_charset): Likewise. + * src/tests/Makefile.am (TESTS_ENVIRONMENT): Add + @LOCALCHARSET_TESTS_ENVIRONMENT@. + +Sat Mar 13 22:15:54 GMT 2010 Colin Watson <cjwatson@debian.org> + + * man/check-man: Ignore "table wider than line width" warnings for + Dutch too. + +Sat Mar 13 21:33:48 GMT 2010 Colin Watson <cjwatson@debian.org> + + Upgrade to Gnulib 20100308. + +Thu Mar 11 01:26:56 GMT 2010 Colin Watson <cjwatson@debian.org> + + * configure.ac: Add AM_MAINTAINER_MODE. In the modern world, + timestamps are often just too fragile for those make targets to + work well; use ./autogen.sh instead. + +Tue Mar 2 19:11:44 GMT 2010 Darren Salt <linux@youmustbejoking.demon.co.uk> + + Add support for XZ-compressed manual pages (Debian bug #572233). + + * configure.ac: Check for xz. + * include/comp_src.h.in (comp_list): Add xz. + * include/manconfig.h.in: Define UNXZ. + * NEWS: Document this. + +Tue Mar 2 10:04:54 GMT 2010 Colin Watson <cjwatson@debian.org> + + Fix assertion failure on 'man -l' with an uncompressed page and + prefixed input (no-hyphenation, no-justification, or a non-English + page). + + * lib/pipeline.c (command_new_passthrough): New function. + * lib/pipeline.h (command_new_passthrough): Add prototype. + * src/man.c (display): Allow zero-command decompression pipelines + with prefix sequences. In that case, append a passthrough command + to the prefix sequence, and append the prefix sequence to the + decompression pipeline rather than replacing its first command. + * NEWS: Document this. + +Tue Mar 2 09:31:36 GMT 2010 Colin Watson <cjwatson@debian.org> + + * man/po4a/po/nl.po: New from Translation Project (thanks, Erwin + Poeze). + * configure.ac (AC_CONFIG_FILES): Add man/nl/Makefile. + * man/LINGUAS.po4a: Add nl. + * man/Makefile.am (DIST_SUBDIRS): Add nl. + * man/nl/Makefile.am, man/nl/translator.add: New files. + * man/po4a/Makefile.am (POFILES): Add po/nl.po. + * man/po4a/po4a.cfg (po4a_langs): Add nl. + * man/THANKS: Credit Erwin Poeze with man/nl as well as nl.po. + * .bzrignore: Add man/nl/man1, man/nl/man5, and man/nl/man8. + +Thu Feb 18 01:38:04 GMT 2010 Colin Watson <cjwatson@debian.org> + + * src/man.c (locale_macros): Explicitly set groff's hyphenation + language, to ensure that it only hyphenates languages it knows + about (Debian bug #570247). + +Tue Feb 16 23:11:58 GMT 2010 Colin Watson <cjwatson@debian.org> + + * Version: 2.5.7. + * po/man-db.pot, po/*.po: Update. + +Tue Feb 16 23:09:11 GMT 2010 Colin Watson <cjwatson@debian.org> + + * src/manp.c (get_catpath): Fix handling of non-translated cat + paths. + +Sun Feb 14 00:19:47 GMT 2010 Colin Watson <cjwatson@debian.org> + + Always save cat pages in UTF-8 (Debian bug #446741). + + * src/encodings.c (struct directory_entry): Remove + standard_output_encoding member. + (directory_table): Likewise. + (get_standard_output_encoding): Remove. + * src/encodings.h (get_standard_output_encoding): Remove prototype. + * src/man.c (my_locale_charset): New function, with code moved from + make_roff_command. + (make_roff_command): Return pipeline output encoding in a new + output parameter. Remove enforcement that cat pages could only be + saved for the manual hierarchy's default character set. Move + post-cat-page pipeline elements to ... + (add_output_iconv, make_display_command): ... here. + (make_display_command): Remove code for handling a named input + file, which has been unused for some time. New encoding argument. + (open_cat_stream): New encoding argument. Convert from it to + UTF-8 while saving the cat page. + (format_display_and_save): New encoding argument, passed to + open_cat_stream. + (display_catman): New encoding argument. Convert from it to UTF-8 + while saving the cat page. + (display): Get formatted encoding from make_roff_command and pass + it to display_catman, make_display_command, and + format_display_and_save. Assume UTF-8 when displaying an existing + cat page. + * NEWS: Document this. + +Sat Feb 13 14:25:42 GMT 2010 Vincent Lefèvre <vincent@vinc17.net> + + * lib/decompress.c (decompress_open): Fix sense of directory check + (Debian bug #537434). + +Mon Feb 8 07:01:35 GMT 2010 Colin Watson <cjwatson@debian.org> + + * src/manp.c (get_catpath): Handle man -> cat substitution correctly + for translated cat pages. + +Mon Feb 8 04:57:09 GMT 2010 Colin Watson <cjwatson@debian.org> + + * src/man.c (format_display_and_save): Use sigaction, not signal. + +Mon Feb 8 04:29:42 GMT 2010 Colin Watson <cjwatson@debian.org> + + * gnulib: Import getopt-gnu module rather than the obsolete getopt. + +Mon Feb 1 12:18:36 PST 2010 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.c (pipeline_wait): Don't bother printing error + messages for SIGINT and SIGQUIT, since these correspond to + explicit user actions (Debian bug #568000). + +Sun Jan 31 03:44:59 GMT 2010 Colin Watson <cjwatson@debian.org> + + * src/manconv.c (try_iconv): Don't lose iconv errors from converting + to UTF-8 when the target encoding is not UTF-8. + +Sun Jan 31 03:33:33 GMT 2010 Colin Watson <cjwatson@debian.org> + + Upgrade to Automake 1.11.1 and Gnulib 20100109. + +Thu Jan 14 11:51:59 GMT 2010 Colin Watson <cjwatson@debian.org> + + * src/whatis.c (search): "%s: nothing appropriate." is an error; + write it to stderr, not stdout (Debian bug #565255). + +Wed Jan 13 23:42:00 GMT 2010 Werner Fink <werner@suse.de> + + Add support for using socketpair(2) as a replacement for pipe(2), + which is faster on some systems (Savannah patch #6741). + + * configure.ac: Add --enable-socketpair-pipe option. + * m4/man-socketpair.m4: New file. + * lib/pipeline.c [USE_SOCKETPAIR_PIPE]: Redefine pipe() to a + construction based on socketpair(). + * NEWS: Document this. + +Wed Jan 13 22:04:23 GMT 2010 Colin Watson <cjwatson@debian.org> + + Upgrade to Autoconf 2.65 and Gnulib 20091120. + +Wed Jan 13 18:26:47 GMT 2010 Diego Pettenò <flameeyes@gentoo.org> + + Add support for heirloom-doctools (Savannah patch #6933). + + * configure.ac: Substitute TROFF. + * manual/Makefile.am (.pp.dvi, .pp.ps, .pp.tdvi, .pp.html): Use + $(TROFF) rather than groff or troff. + * src/man.c (options, parse_opt): Just ignore the --warnings option + when troff is not groff, rather than compiling it out entirely. + (make_roff_command): Only use gxditview variable when troff is + groff. + * NEWS: Document this. + +Tue Jan 12 13:33:51 GMT 2010 Samuel Thibault <sthibault@debian.org> + + * lib/pipeline.c (pipeline_pump): Fix off-by-one error when write + returns EAGAIN (Debian bug #564818). + +Fri Jan 1 17:03:18 GMT 2010 Colin Watson <cjwatson@debian.org> + + * README (Copyright and licensing): Update copyright years. + +Fri Jan 1 13:26:21 GMT 2010 Colin Watson <cjwatson@debian.org> + + * src/manconv.c (try_iconv): Only handle iconv errors when iconv + returned -1. + +Fri Jan 1 11:37:13 GMT 2010 Colin Watson <cjwatson@debian.org> + + * src/manconv.c (try_iconv): Handle iconv errors when attempting to + convert the last input encoding to UTF-8 (Debian bug #562503). + * src/tests/manconv-3: Add test for this. + * src/tests/Makefile.am (TESTS): Add manconv-3. + +Tue Dec 15 14:10:19 GMT 2009 Colin Watson <cjwatson@debian.org> + + * src/mandb.c (main): Fix possible crash when MAN_MUST_CREATE is + unset. + * NEWS: Document this. + +Tue Dec 15 13:47:50 GMT 2009 Colin Watson <cjwatson@debian.org> + + * lib/debug.c (init_debug): New function: check for MAN_DEBUG=1 in + the environment. + * include/manconfig.h.in (init_debug): Add prototype. + * src/accessdb.c (main), src/catman.c (main), src/globbing_test.c + (main), src/lexgrog_test.c (main), src/man.c (main), + src/manconv_main.c (main), src/mandb.c (main), src/manpath.c + (main), src/whatis.c (main), src/zsoelim_main.c (main): Call + init_debug. + * NEWS: Document this. + +Sat Dec 12 00:36:14 GMT 2009 Robert Luberda <robert@debian.org> + + * man/po4a/po/pl.po: Update from Translation Project. + +Tue Dec 1 17:01:19 GMT 2009 Colin Watson <cjwatson@debian.org> + + * src/man.c (do_extern): Pass section through to external program + (Savannah bug #28145). Fix passing of alternate system name to use + -m rather than -s. + +Tue Nov 24 18:27:59 GMT 2009 Robert Luberda <robert@debian.org> + + * po/pl.po: Update from Translation Project. + +Wed Nov 18 14:58:52 GMT 2009 Yuri Kozlov <yuray@komyakino.ru> + + * man/po4a/po/ru.po: Update from Translation Project. + +Wed Nov 18 14:55:31 GMT 2009 Yuri Kozlov <yuray@komyakino.ru> + + * po/ru.po: Update from Translation Project. + +Wed Nov 18 14:52:43 GMT 2009 Erwin Poeze <erwin.poeze@gmail.com> + + * po/nl.po: Update from Translation Project. + +Sun Nov 15 22:49:35 GMT 2009 Colin Watson <cjwatson@debian.org> + + * README (Non-generic arguments to configure): Use more readable + formatting. + * manual/options-only.me, manual/print-options: New file. + * manual/intro.me (Arguments to configure): Add hooks for + options-only.me. + * manual/Makefile.am (dist_noinst_DATA): Add options-only.me and + print-options. + +Sun Nov 15 16:15:56 GMT 2009 Colin Watson <cjwatson@debian.org> + + * docs/HACKING (Revision control): Savannah has disabled bzr+ssh for + the time being; update push URL. + +Sun Nov 15 16:05:26 GMT 2009 Colin Watson <cjwatson@debian.org> + + * Version: 2.5.7-pre1. + * po/man-db.pot, po/*.po: Update. + +Sun Nov 15 14:30:27 GMT 2009 Colin Watson <cjwatson@debian.org> + + * NEWS: Document previous change. + +Sun Nov 15 14:18:35 GMT 2009 Colin Watson <cjwatson@debian.org> + + * src/man.c (compare_candidates): Prefer getting a page from the + best manual section over getting a page in the correct language; I + have my reservations about this, but it seems to be what people + are requesting (Debian bug #519547). + +Sun Nov 15 14:02:11 GMT 2009 Colin Watson <cjwatson@debian.org> + + Search man<sec><ext> directories in the GNU layout (Debian bug + #519807, Arch Linux bug #13734). + + * src/globbing.c (match_in_directory): Optionally take allocated + count from caller. If it's non-zero, don't clear the glob. + (look_for_file): In the GNU layout, search all subdirectories of + hier that begin with the first character of the section. + * NEWS: Document this. + +Sun Nov 15 13:32:58 GMT 2009 Colin Watson <cjwatson@debian.org> + + * src/globbing.c (match_in_directory): Make this void; checking + whether any glob matches were returned is sufficient. Move + glob-clearing code to ... + (clear_glob): ... here (new function). + (look_for_file): Simplify since we now only need to check + gbuf.gl_pathc == 0, not the return value of match_in_directory as + well. Clear gbuf on entry. + +Sun Nov 15 13:18:38 GMT 2009 Colin Watson <cjwatson@debian.org> + + * src/tests/lexgrog-1, src/tests/man-1, src/tests/manconv-1, + src/tests/manconv-2, src/tests/mandb-1, src/tests/mandb-2: Use + 'diff -u', which produces more helpful output on failures. + +Sat Nov 14 20:10:57 GMT 2009 Colin Watson <cjwatson@debian.org> + + * README (System specific notes): Remove entirely. The notes about + Linux here only pertain to thoroughly obsolete systems. + +Sat Nov 14 20:08:40 GMT 2009 Colin Watson <cjwatson@debian.org> + + * configure.ac: Handle Ultrix-4.3a -YPOSIX requirement + automatically. + * README (System specific notes): Remove note about Ultrix-4.3a. + +Sat Nov 14 19:14:02 GMT 2009 Colin Watson <cjwatson@debian.org> + + * lib/README: Copyright is not the same as licensing; fix confusion. + +Sat Nov 14 18:57:42 GMT 2009 Colin Watson <cjwatson@debian.org> + + * src/man.c (options): Add --nh and --nj aliases for + --no-hyphenation and --no-justification respectively. + * man/man1/man.man1 (Controlling formatted output): Document new + aliases. + +Sat Nov 14 18:52:15 GMT 2009 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.c (argstr_get_word): Fix a small memory leak. + +Sat Nov 14 18:51:37 GMT 2009 Colin Watson <cjwatson@debian.org> + + Do what the user probably means when the full path to an executable + is given as an argument (Debian bug #505465). + + * lib/pathsearch.c (directory_on_path): New function. + * lib/pathsearch.h (directory_on_path): Add prototype. + * src/manp.c (get_manpath_from_path): Make external. Add 'mandatory' + argument to control the addition of MANDATORY_MANPATH entries. + (guess_manpath): Update caller. + * src/manp.h (get_manpath_from_path): Add prototype. + * src/man.c (main): Move locale manpath expansion to ... + (locale_manpath): ... here (new function). + (local_man_loop): If the argument is an executable, try looking up + the corresponding manual page in the appropriate part of the + manpath, rather than just trying to format the text of the + executable as a manual page. + * NEWS: Document this. + +Sat Nov 14 10:28:29 GMT 2009 Colin Watson <cjwatson@debian.org> + + Add option to disable justification (Debian bug #440047). + + * src/man.c (options, parse_opt): Accept --no-justification. Reset + corresponding variable with -D. + (disable_justification): New function. + (display): Append disable_justification to the decompressor + pipeline if --no-justification is used. + * man/man1/man.man1 (SYNOPSIS, Controlling formatted output): + Document --no-justification. + * NEWS: Document this. + +Sat Nov 14 10:23:28 GMT 2009 Colin Watson <cjwatson@debian.org> + + * include/manconfig.h.in (ATTRIBUTE_NORETURN): Define to an + attribute marking a function as non-returning if using GCC 2.5 or + newer. + * lib/pipeline.c (command_new_sequence, command_sequence_command): + New functions. + (command_dup, command_dump, command_tostring, command_free): + Handle commands of type COMMAND_SEQUENCE. + (pipeline_start): Move command execution to ... + (command_start_child): ... here (new function). Handle commands of + type COMMAND_SEQUENCE. + * lib/pipeline.h (enum command_tag): Add COMMAND_SEQUENCE. + (struct command): Add support for commands that consist of a + sequence of commands. + (command_new_sequence, command_sequence_command): Add prototypes. + * src/man.c (disable_hyphenation, locale_macros): Drop passthrough + code. + (display): Create a command sequence for hyphenation and + locale-macro decompressor prefixes if necessary. + +Mon Nov 9 16:59:47 GMT 2009 Colin Watson <cjwatson@debian.org> + + * configure.ac: Define a CROSS_COMPILING conditional if + cross-compiling. + * man/Rules.man, src/tests/Makefile.am: Don't run tests if + cross-compiling. + * NEWS: Document this. + +Mon Nov 9 16:53:10 GMT 2009 Colin Watson <cjwatson@debian.org> + + Upgrade to Gnulib 20090915. + +Mon Nov 9 16:27:44 GMT 2009 Colin Watson <cjwatson@debian.org> + + * src/encodings.c (find_charset_locale): New function. + * src/encodings.h (find_charset_locale): Add prototype. + * src/man.c (make_roff_command): When invoking col, ensure that + LC_CTYPE is set to an appropriate locale for the selected + character set (Debian bug #555331). + * NEWS: Document this. + +Thu Oct 8 23:22:57 BST 2009 Colin Watson <cjwatson@debian.org> + + * src/encodings.c: Include <unistd.h> for dup and STDIN_FILENO. + +Thu Oct 1 01:08:40 BST 2009 Colin Watson <cjwatson@debian.org> + + * src/accessdb.c (parse_opt), src/lexgrog_test.c (parse_opt), + src/whatis.c (parse_opt): Turn off ARGP_HELP_PRE_DOC to avoid + problems with translations of documentation strings beginning with + a vertical tab separator (i.e. no pre-option documentation). + +Thu Sep 24 12:32:48 BST 2009 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.c (pipeline_pump): When a source pipeline dies, make + sure to drain its output before discarding its output file + descriptor (Debian bug #548153). We still record the death to + avoid duplicate debugging messages. + * NEWS: Document this. + +Tue Sep 22 00:53:42 BST 2009 Colin Watson <cjwatson@debian.org> + + * src/encodings.c (get_default_device): If the locale encoding is + ASCII, then use the ascii device even if preconv is available; it + will do a better job than producing UTF-8 output and then recoding + that to ASCII (Debian bug #547695). + +Sat Sep 19 15:02:20 BST 2009 Clytie Siddall <clytie@riverland.net.au> + + * po/vi.po: Update from Translation Project. + +Fri Sep 11 01:19:41 BST 2009 Colin Watson <cjwatson@debian.org> + + * man/po4a/po/id.po: Fix syntax error. + +Wed Sep 9 14:42:18 BST 2009 Colin Watson <cjwatson@debian.org> + + * man/man1/man.man1 (General options): Refer to the "Warnings" node + in 'info groff' for a list of available warning names (Debian bug + #545805). + +Wed Sep 9 14:36:39 BST 2009 Arif E. Nugroho <arif_endro@yahoo.com> + + * man/po4a/po/id.po: Update from Translation Project. + +Tue Sep 8 19:14:23 BST 2009 Arif E. Nugroho <arif_endro@yahoo.com> + + * po/id.po: Update from Translation Project. + +Wed Aug 26 01:12:20 BST 2009 Colin Watson <cjwatson@debian.org> + + * Version: 2.5.6. + * po/man-db.pot, po/*.po: Update. + +Wed Aug 26 01:07:16 BST 2009 Colin Watson <cjwatson@debian.org> + + * src/whatis.c (display): Include the section in the hash key used + to determine whether a page has already been displayed. + +Wed Aug 26 00:20:45 BST 2009 Colin Watson <cjwatson@debian.org> + + * libdb/db_store.c (compare_ids): Fix documentation of return + values. + (replace_if_necessary): Don't replace ULT_MAN or SO_MAN with + lesser ids just because the mtime is newer. (This still satisfies + Debian bug #490582, but doesn't cause the database to be rebuilt + every time mandb runs on hierarchies with both symlinks and whatis + entries for the same name.) + +Tue Aug 25 17:07:05 BST 2009 Colin Watson <cjwatson@debian.org> + + * src/lexgrog.l (zh_CN_name, zh_TW_name): Add alternative + translation "名字", seen in testprns(1). + +Tue Aug 25 17:05:51 BST 2009 Colin Watson <cjwatson@debian.org> + + * src/tests/man-1: Restrict manpath to test directories. + +Tue Aug 25 10:30:58 BST 2009 Colin Watson <cjwatson@debian.org> + + * Makefile.am (EXTRA_DIST): Add .bzrignore, + gnulib/lib/xmalloc.c.orig, gnulib/m4/intldir.m4, + gnulib/m4/sockpfaf.m4, and release.sh, for consistency between + revision control and the distribution. + +Tue Aug 25 09:48:39 BST 2009 Colin Watson <cjwatson@debian.org> + + * po/POTFILES.in: Remove src/wrapper.c. + +Sun Aug 23 15:49:45 BST 2009 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.c (command_dup): Fix newcmd->nenv assertion. + +Sun Aug 23 15:41:32 BST 2009 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.c (command_dup, command_setenv): cmd->env does not + need to be { NULL, NULL }-terminated. + +Sun Aug 23 11:25:50 BST 2009 Colin Watson <cjwatson@debian.org> + + * Makefile.am (EXTRA_DIST): Distribute gnulib/m4/gnulib-tool.m4. + +Sun Aug 23 11:21:40 BST 2009 Colin Watson <cjwatson@debian.org> + + * Makefile.am (EXTRA_DIST): Distribute gnulib/lib/xmalloc.patch. + +Sun Aug 23 11:15:53 BST 2009 Colin Watson <cjwatson@debian.org> + + * docs/man-db.lsm (Keywords): Add accessdb and lexgrog. + +Sun Aug 23 11:14:04 BST 2009 Colin Watson <cjwatson@debian.org> + + * docs/INSTALL.autoconf: Update to instructions from Autoconf 2.64. + +Sun Aug 23 11:11:02 BST 2009 Colin Watson <cjwatson@debian.org> + + * m4/man-bdb.m4: Bump serial, forgotten in most recent change. + +Sun Aug 23 11:07:26 BST 2009 Colin Watson <cjwatson@debian.org> + + * lib/README: Update. + +Sun Aug 23 10:56:50 BST 2009 Colin Watson <cjwatson@debian.org> + + * docs/TODO: Remove entry about the other 'man' package; 'man -K' + was the last major missing feature relative to it. + * docs/HACKING (Testing): Document new test suite. + +Sun Aug 23 10:51:33 BST 2009 Colin Watson <cjwatson@debian.org> + + * tools/README: Don't bother describing files installed here by the + autotools. + +Sun Aug 23 10:47:16 BST 2009 Colin Watson <cjwatson@debian.org> + + * src/README.zsoelim: Remove, merging text into ... + * src/zsoelim.l: ... here. + * src/Makefile.am (EXTRA_DIST): Remove README.zsoelim. + +Sun Aug 23 10:36:28 BST 2009 Colin Watson <cjwatson@debian.org> + + Remove the old set-id wrapper, which hasn't been recommended for + several years now. + + * src/wrapper.c: Remove. + * src/Makefile.am (noinst_PROGRAMS, wrapper_LDADD, wrapper_SOURCES): + Remove. + +Sun Aug 23 10:26:32 BST 2009 Colin Watson <cjwatson@debian.org> + + * README: Various minor updates. + +Sun Aug 23 00:13:56 BST 2009 Colin Watson <cjwatson@debian.org> + + * manual/Makefile.am (noinst_DATA): Move $(MANUAL).dvi to ... + (CLEANFILES): ... here. + (install-data-hook): Stop installing the DVI version of the manual + by default. + +Sun Aug 23 00:07:03 BST 2009 Colin Watson <cjwatson@debian.org> + + * configure.ac: Add --enable-automatic-create, + --disable-automatic-update, and --disable-cats options. + * include/manconfig.h.in (MAN_DB_CREATES, MAN_DB_UPDATES, MAN_CATS): + Remove. + * manual/intro.me (Arguments to configure): Document new options. + * manual/misc.me (Modes of operation): Adjust configuration advice + to use new configure options. + * README (Non-generic arguments to configure): Update. + * NEWS: Document this. + +Sun Aug 23 00:04:56 BST 2009 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.c (command_setenv): New function, allowing + application code to ask for environment variables to be set when a + command is executed. + (command_new, command_new_function, command_dup, command_dump, + command_tostring, command_free): Handle new nenv, env_max, and env + members of 'struct command'. + (argstr_get_word): Add TODO comment for environment variable + support. + (pipeline_start): Set environment variables as requested. + * lib/pipeline.h (struct command_env): New structure. + (struct command): Add nenv, env_max, and env members. + (command_setenv): Add prototype. + * src/man.c (run_mandb): Set MAN_MUST_CREATE=1 environment variable + if create is true. + * src/mandb.c (main): If --create was passed and no databases were + created, only exit non-zero if MAN_MUST_CREATE=1. + +Sat Aug 22 15:34:15 BST 2009 Colin Watson <cjwatson@debian.org> + + Cope with some more cases of database corruption (Debian bug + #187750). + + * libdb/db_store.c (dbstore): Always replace existing keys once + we've decided we ought to. If the key already exists in the + database, then that probably indicates some kind of database + corruption, but our new key is almost certainly better. + * src/check_mandirs.c (sanity_check_db): New function, checking + dbver_rd and ensuring that all keys have non-NULL content. + (update_db): Use sanity_check_db to decide whether an existing + database is OK. + + * src/accessdb.c (main): If we encounter a key with no content, + print a debugging message and continue as far as we can before + exiting non-zero, rather than just silently exiting non-zero + immediately. + +Sat Aug 22 14:58:39 BST 2009 Colin Watson <cjwatson@debian.org> + + * src/tests/mandb-2: Run mandb with a clean path, and only on the + test manual page hierarchy (already done for the second instance, + but not the first). + +Sat Aug 22 14:51:25 BST 2009 Yuri Kozlov <yuray@komyakino.ru> + + * po/ru.po: Update from Translation Project. + +Sat Aug 22 14:42:49 BST 2009 Colin Watson <cjwatson@debian.org> + + * src/manconv.c (try_iconv): When trying the last source encoding in + the list, ignore characters not representable in UTF-8 (which + almost certainly means codepoints that do not exist in the source + encoding). + * src/tests/manconv-2: Add test for this. + +Thu Aug 20 23:52:28 BST 2009 Yuri Kozlov <yuray@komyakino.ru> + + * man/po4a/po/ru.po: Update from Translation Project. + +Thu Aug 20 15:17:54 BST 2009 Colin Watson <cjwatson@debian.org> + + * src/lexgrog.l (MAX_NAME): Increase from 2048 to 8192, since some + manual pages with NAME sections exceeding 2048 bytes have been + observed in the wild (Debian bug #489907). + +Thu Aug 20 15:05:38 BST 2009 Colin Watson <cjwatson@debian.org> + + * src/encodings.c (check_preprocessor_encoding): Break coding tag + search loop if pp_search is NULL, fixing a segfault (introduced by + the fix for Debian bug #496604) if there is a preprocessor comment + line with no coding tag. + * src/tests/manconv-1: Add a test for this bug. + +Thu Aug 20 09:52:23 BST 2009 Colin Watson <cjwatson@debian.org> + + * libdb/db_store.c (replace_if_necessary): Always replace if the + mtime of the new data is newer than that of the old data, + regardless of the id (Debian bug #490582). + + * src/tests/testlib.sh (next_second): New function. + * src/tests/mandb-2: New test for this bug. + * src/tests/Makefile.am (TESTS): Add mandb-2. + + * src/tests/mandb-1: Run mandb with a clean path, and only on the + test manual page hierarchy. + +Thu Aug 20 07:47:02 BST 2009 Colin Watson <cjwatson@debian.org> + + * src/man.c (run_mandb): If -C was given, pass it through to mandb. + (main): Treat the main configuration file as optional if -C was + given. + + * src/tests/testlib.sh (fake_config): Take the manual page + hierarchies to use as arguments. + (run_clean_path): New function. + * src/tests/man-1: New test, for Debian bug #163347 (apparently + fixed some time back). + * src/tests/Makefile.am (TESTS_ENVIRONMENT): Set CLEANPATH, so that + run_clean_path can run commands with a reduced PATH. + (TESTS): Add man-1. + +Wed Aug 19 20:23:00 BST 2009 Colin Watson <cjwatson@debian.org> + + * src/mandb.c (main): Treat the main configuration file as optional + if we're only producing user databases. This makes testing easier. + + * configure.ac, m4/man-bdb.m4 (MAN_CHECK_BDB): Define DBTYPE to + gdbm, ndbm, or btree, indicating the database type in use. + + * src/tests/testlib.sh (fake_config, db_ext, accessdb_filter): New + functions. + * src/tests/mandb-1: New test. + * src/tests/Makefile.am (TESTS_ENVIRONMENT): Set DBTYPE + appropriately in the test environment. + (TESTS): Add mandb-1. + +Wed Aug 19 12:17:25 BST 2009 Colin Watson <cjwatson@debian.org> + + * src/tests/testlib.sh (write_page): New function. + * src/tests/lexgrog-1: New (fairly trivial) test. + * src/tests/Makefile.am (TESTS): Add lexgrog-1. + +Wed Aug 19 00:10:58 BST 2009 Colin Watson <cjwatson@debian.org> + + * Version: 2.5.6-pre1. + * po/man-db.pot, po/*.po: Update. + +Tue Aug 18 23:53:50 BST 2009 Colin Watson <cjwatson@debian.org> + + * src/tests/Makefile.am (dist_check_SCRIPTS): Distribute test files. + +Tue Aug 18 23:39:28 BST 2009 Colin Watson <cjwatson@debian.org> + + * src/tests/Makefile: Remove; accidentally added to revision + control. + * .bzrignore: Ignore src/tests/Makefile. + +Tue Aug 18 09:47:50 BST 2009 Colin Watson <cjwatson@debian.org> + + * src/manconv.c (try_iconv): Convert text to UTF-8 and then (if + necessary) to the target encoding. This allows us to distinguish + between "text not in input encoding" and "characters not + representable in output encoding" (Debian bug #514963). + * src/tests/manconv-2: Add test for this and some other possible + encoding-handling bugs in manconv. + * src/tests/Makefile.am (TESTS): Add manconv-2. + * NEWS: Document this. + +Mon Aug 17 18:32:04 BST 2009 Colin Watson <cjwatson@debian.org> + + * src/tests/testlib.sh (init): New function. + (finish): Honour TEST_FAILURE_KEEP environment variable. + * src/tests/manconv-1: Use init function. Reverse diff arguments so + that failure output makes more sense. + +Mon Aug 17 00:56:20 BST 2009 Colin Watson <cjwatson@debian.org> + + * NEWS: Update. + +Mon Aug 17 00:38:12 BST 2009 Colin Watson <cjwatson@debian.org> + + * src/encodings.c (conversion_table): New table, with contents + mostly borrowed from groff's preconv. + (convert_encoding): New function. + (check_preprocessor_encoding): Loop through semicolon-separated + tags, and convert Emacs coding tags to ones that libiconv + understands (Debian bug #496604). + * src/tests/manconv-1: Test multiple tags. Test coding aliases. + +Sun Aug 16 23:52:38 BST 2009 Colin Watson <cjwatson@debian.org> + + * src/tests/testlib.sh: Add a simple test library, to be extended as + necessary. + * src/tests/manconv-1: Use it. + +Sun Aug 16 23:37:11 BST 2009 Colin Watson <cjwatson@debian.org> + + * src/tests/manconv-1: Simple test for manconv's handling of + Emacs-style coding: tags. + * src/tests/Makefile.am: New file. + * src/Makefile.am (SUBDIRS): Add tests. + * configure.ac (AC_CONFIG_FILES): Add src/tests/Makefile. + * .bzrignore: Ignore src/tests/tmp-*. + +Fri Aug 14 16:09:56 BST 2009 Colin Watson <cjwatson@debian.org> + + * tools/chconfig: Make executable. + +Fri Aug 14 12:20:16 BST 2009 Colin Watson <cjwatson@debian.org> + + * manual/Makefile.am (install-data-hook, uninstall-hook): + Install/uninstall the manual into/from $(docdir). + +Fri Aug 14 12:18:43 BST 2009 Colin Watson <cjwatson@debian.org> + + * docs/Makefile.am (dist_noinst_DATA): Move NEWS to ... + * Makefile.am (dist_noinst_DATA): ... here. + +Fri Aug 14 11:50:27 BST 2009 Colin Watson <cjwatson@debian.org> + + Move ChangeLog and NEWS to their more conventional location at the + top level. + + * docs/ChangeLog: Move to ... + * ChangeLog: ... here. + * docs/NEWS: Move to ... + * NEWS: ... here. + * README, docs/HACKING (Revision control, Release process), + src/check_mandirs.c: Update references. + +Fri Aug 14 11:43:41 BST 2009 Colin Watson <cjwatson@debian.org> + + * configure.ac: Use silent rules by default if Automake 1.11 is + available. + * man/Rules.man (replace.sed, .man1.1, .man5.5, .man8.8): Be quieter + in silent mode. + + Upgrade to Autoconf 2.64, Automake 1.11, and Gnulib 20090801. + +Mon Aug 3 17:13:19 BST 2009 Colin Watson <cjwatson@debian.org> + + * src/encodings.c (less_charset_table): Add CP1251 -> windows, per + less(1) (Debian bug #539690). + +Wed Jul 22 10:48:10 BST 2009 Colin Watson <cjwatson@debian.org> + + Make whatis/apropos only display any given manual page, or pointers + to it, once (Ubuntu bug #27113). + + * lib/hashtable.c (hash_lookup_structure): Make external. + * lib/hashtable.h (hash_lookup_structure): Add prototype. + * src/whatis.c (get_whatis): Split pointer resolution out to ... + (resolve_pointers): ... here. Only accept info->pointer == page if + info->name == page too. + (display): Use resolve_pointers so that we have the resolved name + to hand. Only display any given resolved name once. + (main): Initialise display_seen hash table. + * docs/NEWS: Document this. + +Tue Jul 21 22:05:01 BST 2009 Colin Watson <cjwatson@debian.org> + + * docs/NEWS: Fix typo. + +Tue Jul 21 15:17:49 BST 2009 Colin Watson <cjwatson@debian.org> + + * man/man1/man.man1 (Controlling formatted output, ENVIRONMENT): + Explicitly state that -P/$PAGER/$MANPAGER identifies a single + command with no pipes (Debian bug #363250). + +Mon Jul 20 10:59:00 BST 2009 Colin Watson <cjwatson@debian.org> + + * src/man.c (locale_macros): Fix groff version test not to think + that 1.20.1 >= 1.20.2. + +Tue Jul 14 22:48:56 BST 2009 Colin Watson <cjwatson@debian.org> + + * configure.ac: Add -Wredundant-decls to CFLAGS. + * lib/tempfile.c: Remove redundant declarations of mkstemp and + mkdtemp. + * src/manp.c: Remove redundant and unused declaration of + program_name. + * src/zsoelim.l: Add never-interactive option, partly because that's + reasonably accurate anyway and partly to suppress flex's redundant + declaration of isatty. + +Mon Jul 13 13:40:17 BST 2009 Colin Watson <cjwatson@debian.org> + + * src/man.c (options, parse_opt): New --no-subpages option. + (main): Try pairing up manual page names with hyphens unless + --no-subpages was given. + * ma/man1/man.man1 (SYNOPSIS, Finding manual pages): Document + --no-subpages. + * docs/NEWS: Document this. + +Mon Jul 13 01:17:41 BST 2009 Colin Watson <cjwatson@debian.org> + + * README (Copyright and licensing): Update copyright years. + +Mon Jul 13 00:48:32 BST 2009 Colin Watson <cjwatson@debian.org> + + * src/encodings.c (get_less_charset, get_jless_charset): Cope with + locale_charset being NULL; loosely based on a patch posted to + mingw-msys by Mark Junker + (http://osdir.com/ml/gnu.mingw.msys/2005-06/msg00012.html). + +Sun Jun 28 17:56:49 BST 2009 Colin Watson <cjwatson@debian.org> + + Don't create unnecessary database directories (Debian bug #472919). + + * src/check_mandirs.c (testmandirs): Add catpath and create + arguments. Create the database when it first seems to be needed. + Use mkcatdirs rather than make_database_directory. + (make_database_directory): Remove. + (create_db): Add catpath argument. Don't create the database here; + let testmandirs do it when needed instead. + (update_db): Add catpath argument. Don't create the database + directory; either it exists already in which case there's nothing + to do, or it's missing in which case there'll be no database to + update anyway. + * src/check_mandirs.h (create_db, update_db): Update prototypes. + * src/mandb.c (update_db_wrapper): Add catpath argument. + (mandb): Update calls to functions that now take the catpath too. + * src/manp.c (add_mandb_map): Don't create the cat hierarchy here; + testmandirs will do it on demand. + (mkcatdirs): Make external for use by check_mandirs.c. + * src/manp.h (mkcatdirs): Add prototype. + * docs/NEWS: Document this. + +Sun Jun 28 16:33:24 BST 2009 Colin Watson <cjwatson@debian.org> + + * man/man1/man.man1 (DESCRIPTION): Note that the exact rendering of + (e.g.) italic text may vary depending on the output device (Debian + bug #516808). + +Sun Jun 28 16:21:34 BST 2009 Colin Watson <cjwatson@debian.org> + + Implement 'man -K', which was the last major remaining missing + feature when comparing man-db with the man package (Debian bug + #135926, Ubuntu bug #390575). + + * src/man.c (options, parse_opt): New -K/--global-apropos option. + (main): Handle --global-apropos. + (locate_page): Skip database lookups in --global-apropos mode. + (grep, do_global_apropos_section, do_global_apropos): New + functions. + * src/man.h (do_global_apropos): Add prototype. + * man/man1/man.man1 (SYNOPSIS, Main modes of operation): Document + -K/--global-apropos. + * docs/NEWS: Document this. + +Sun Jun 28 10:31:16 BST 2009 Colin Watson <cjwatson@debian.org> + + * man/po4a/po/man-db-manpages.pot, man/po4a/po/*.po: po4a 0.36 tags + "type:" comments as extracted comments rather than translator + comments. Upgrade our .pot and .po files to match. + +Sun Jun 28 02:04:55 BST 2009 Colin Watson <cjwatson@debian.org> + + * src/manp.c (get_nls_manpath): Close mandir, fixing a memory leak. + +Sun Jun 28 01:47:51 BST 2009 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.c (pipeline_free): Free buffer and line_cache. + +Sun Jun 28 01:40:24 BST 2009 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.c (get_line): Limit newline search to the data length + returned by get_block, fixing an assertion failure. + * docs/NEWS: Document this. + +Mon Jun 22 08:02:55 BST 2009 Colin Watson <cjwatson@debian.org> + + * src/descriptions.c (parse_descriptions): Strip leading and + trailing whitespace from name tokens before checking whether they + contain whitespace. + * docs/NEWS: Document this. + +Sun Jun 21 02:55:56 BST 2009 Colin Watson <cjwatson@debian.org> + + * docs/NEWS: Document previous change. + +Sun Jun 21 02:20:22 BST 2009 Colin Watson <cjwatson@debian.org> + + * libdb/db_lookup.c (dblookup): In exact mode, make sure extensions + match exactly, rather than merely that the extension found is a + prefix of that which was requested (Arch Linux bug #14467). + +Sun Jun 21 02:00:31 BST 2009 Colin Watson <cjwatson@debian.org> + + * src/ult_src.c (ult_src): Keep a copy of base before passing it to + decompress_open, as that function doesn't keep its own copy and we + may change base later. + +Sat Jun 20 21:26:02 BST 2009 Colin Watson <cjwatson@debian.org> + + * libdb/db_store.c (replace_if_necessary): Prevent misleading + debugging message: don't say "ignoring differing ids" if the new + id was preferred and we attempted a replacement. + +Sat May 30 12:50:44 BST 2009 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.c (pipeline_start): Check the return value of nice. + + * include/manconfig.h.in (create_tempdir): Warn if the result is not + used. + * lib/tempfile.c (create_tempdir): Check the return value of + mkdtemp. + * src/man.c (format_display): Check the return value of + create_tempdir. + +Sat May 30 13:37:58 CEST 2009 Colin Watson <cjwatson@debian.org> + + * src/man.c (make_roff_command): Initialise page_encoding. + +Wed May 13 18:28:44 BST 2009 Colin Watson <cjwatson@debian.org> + + * gnulib: Upgrade to 20090501. + * tools/config.guess, tools/config.sub: Update. + +Wed Apr 22 15:50:51 BST 2009 Colin Watson <cjwatson@debian.org> + + * src/lexgrog.l (lt_name): Add. + +Wed Apr 15 00:34:06 BST 2009 Colin Watson <cjwatson@debian.org> + + * man/it/man1/whatis.man1 (STATI D'USCITA): Fix section heading + (formerly "STATI D?USCITA") to match man(1) and apropos(1). + Reported by Ken Moffat. + +Wed Apr 15 00:33:16 BST 2009 Colin Watson <cjwatson@debian.org> + + * man/check-man: Set MAN_KEEP_FORMATTING=1, since a UTF-8-aware col + (such as that in util-linux-ng) will object to being asked to + process non-ASCII text under LC_ALL=C. Reported by Ken Moffat. + * docs/NEWS: Document this. + +Wed Apr 15 00:31:00 BST 2009 Colin Watson <cjwatson@debian.org> + + * docs/NEWS: Start 2.5.6. + +Wed Apr 15 00:22:54 BST 2009 Colin Watson <cjwatson@debian.org> + + * .bzrignore: Ignore gnulib/lib/glthread/.deps and + gnulib/lib/glthread/.dirstamp. + +Wed Apr 15 00:20:45 BST 2009 Colin Watson <cjwatson@debian.org> + + Upgrade to Autoconf 2.63, Automake 1.10.2, and Gnulib 20090401. + +Tue Apr 14 23:59:40 BST 2009 Colin Watson <cjwatson@debian.org> + + Call gnulib-tool after autopoint, and only use the gettext macros + supplied via gnulib. This is required to work properly with current + versions of gettext and gnulib; see + http://lists.gnu.org/archive/html/bug-gnulib/2009-03/msg00154.html + and thread. + + * autogen.sh: If gnulib-tool is installed, call autopoint first and + prevent autoreconf from calling it later. Remove special handling + of tools/config.rpath, which is not necessary with this approach. + * Makefile.am (ACLOCAL_AMFLAGS): Put gnulib/m4 before m4, so that + autopoint puts its macros in gnulib/m4 (later overwritten by + gnulib-tool). + +Mon Mar 23 14:32:25 GMT 2009 Arif E. Nugroho <arif_endro@yahoo.com> + + * po/id.po, man/po4a/po/id.po: Update from Translation Project. + +Wed Mar 18 01:10:50 GMT 2009 Colin Watson <cjwatson@debian.org> + + * docs/HACKING (Revision control): Moved bzr archive to Savannah; + update URLs and note that this now allows access to other members + of the man-db group on Savannah. + +Mon Mar 16 11:42:35 GMT 2009 Colin Watson <cjwatson@debian.org> + + * Makefile.am (EXTRA_DIST): Distribute gnulib/m4/gnulib-cache.m4. + +Mon Mar 16 10:39:40 GMT 2009 Yuri Kozlov <yuray@komyakino.ru> + + * man/po4a/po/ru.po: Update from Translation Project. + +Sun Mar 15 13:13:40 GMT 2009 Colin Watson <cjwatson@debian.org> + + Apparently some packages ship section 0 manual pages documenting C + library header files. See http://bugs.archlinux.org/task/13734 and + http://en.wikipedia.org/wiki/Manual_page_(Unix). + + * configure.ac (--with-sections): Add section 0 between 3 and 2. + * man/man5/manpath.man5 (FORMAT): Update documentation of SECTION. + * src/man_db.conf.in (SECTION): Update documentation. + +Sun Mar 15 01:08:16 GMT 2009 Colin Watson <cjwatson@debian.org> + + * gnulib: Import the sigaction, signal, and sigprocmask modules. + +Sat Mar 14 22:44:33 GMT 2009 Colin Watson <cjwatson@debian.org> + + * Version: 2.5.5. + +Sat Mar 14 22:42:39 GMT 2009 Colin Watson <cjwatson@debian.org> + + * man/check-man: Ignore "cannot adjust line" and "can't break line" + groff warnings for all languages, not just CJK; long + %manpath_config_file% values during 'make distcheck' cause + problems here at the moment. + +Sat Mar 14 18:51:22 GMT 2009 Colin Watson <cjwatson@debian.org> + + * man/check-man: Force MANWIDTH to 80. Ignore "table wider than line + width" warnings from groff >= 1.20 for now. + +Sat Mar 14 18:34:26 GMT 2009 Arif E. Nugroho <arif_endro@yahoo.com> + + * man/po4a/po/id.po: Update from Translation Project. + +Sat Mar 14 13:54:13 GMT 2009 Colin Watson <cjwatson@debian.org> + + * man/Makefile.am (EXTRA_DIST): Distribute check-man. + + * src/manp.c (read_config_file): Add argument to control whether the + main configuration file is optional. Use a static variable to + track whether we've been called already. + (get_manpath): read_config_file will keep track of whether it's + been called already for itself. Pass new argument. + * src/manp.h (read_config_file): Update prototype. + * src/man.c (main): Treat the main configuration file as optional if + -l was given, since in that case we can get by well enough without + it. This makes it easier to run 'make check' without first running + 'make install'. + +Sat Mar 14 12:07:58 GMT 2009 Colin Watson <cjwatson@debian.org> + + * docs/NEWS: Start 2.5.5. + +Sat Mar 14 00:29:51 GMT 2009 Dustin Marquess <dmarquess@gmail.com> + + * src/man.c (sort_candidates): Initialise count (Debian bug + #519647). + +Tue Mar 10 23:46:08 GMT 2009 Will Day <wd+debianbugs@hpgx.net> + + * man/man1/man.man1 (Controlling formatted output): Fix missing + backslash in -r default (Debian bug #519162). + * man/po4a/po/man-db-manpages.pot, man/po4a/po/*.po: Update. + +Tue Mar 10 23:24:27 GMT 2009 Colin Watson <cjwatson@debian.org> + + Fix handling of pages that declare a non-default encoding in their + preprocessor lines. Thanks to Hugo Herbelin for some of the ideas + here (Debian bug #519095). + + * src/encodings.c (get_source_encoding): Note that this function + should only be called if the page encoding is UTF-8. Add another + example. + * src/manconv.c (check_preprocessor_encoding): Move to ... + * src/encodings.c (check_preprocessor_encoding): ... here. + * src/encodings.h (check_preprocessor_encoding): Add prototype. + * src/man.c (make_roff_command): Use preprocessor-declared encoding + as page_encoding if known. Set source_encoding to page_encoding + unless the latter is UTF-8. + * src/Makefile.am (manconv_SOURCES): Add encodings.c. + + * src/encodings.c (charset_table): Use ISO-8859-15 -> latin1 entry + only in the !MULTIBYTE_GROFF case; true ISO-8859-15 pages are + better handled using ascii8 or preconv if possible. + +Tue Mar 10 14:11:14 GMT 2009 Colin Watson <cjwatson@debian.org> + + * src/zsoelim.l (zsoelim_parse_file): Put the initial .lf request + after any initial comment line, so that manconv can find encoding + instructions more easily. + +Mon Mar 9 11:32:19 GMT 2009 Colin Watson <cjwatson@debian.org> + + * man/check-man: Check that a manual page formats without errors; + inspired by Lintian. + * man/Rules.man: Run check-man over all manual pages during 'make + check'. + +Mon Mar 9 10:47:08 GMT 2009 Arif E. Nugroho <arif_endro@yahoo.com> + + * man/po4a/po/id.po: Update from Translation Project. + +Tue Feb 24 01:06:46 GMT 2009 Colin Watson <cjwatson@debian.org> + + * Version: 2.5.4. + * po/man-db.pot, po/*.po: Update. + +Tue Feb 24 01:00:56 GMT 2009 Colin Watson <cjwatson@debian.org> + + * man/po4a/po/id.po: Fix groff syntax error. + +Mon Feb 23 22:37:36 GMT 2009 Colin Watson <cjwatson@debian.org> + + * docs/HACKING (Sending patches): Refer to new man-db-devel mailing + list. + +Mon Feb 23 22:29:43 GMT 2009 Colin Watson <cjwatson@debian.org> + + * docs/HACKING (Things to do): Improve bug tracking system link. + +Mon Feb 23 22:17:50 GMT 2009 Colin Watson <cjwatson@debian.org> + + * src/man.c (locale_macros, display): Only load per-locale groff + macros if preconv is available, since those macros may change the + assumed input encoding. + +Mon Feb 23 22:11:56 GMT 2009 Colin Watson <cjwatson@debian.org> + + * docs/NEWS: Update. + +Sat Feb 21 12:01:55 GMT 2009 Colin Watson <cjwatson@debian.org> + + Load per-locale groff macros if possible. This only works with groff + 1.20.2 (as yet unreleased) or better, since that introduces + facilities to allow us to avoid an error message if there is no + macro file for the relevant locale. + + * src/man.c (locale_macros): New function. + (display): Check the page language, and add locale_macros to the + formatting pipeline provided that the language is not empty or + "C". + +Fri Feb 20 09:58:13 GMT 2009 Colin Watson <cjwatson@debian.org> + + Partially rewrite building of manpath according to locale. The + previous code was completely wrong: as well as handling duplicates + rather oddly, it effectively handled LANGUAGE in reverse order + (Debian bug #516133). + + * src/manp.c (add_nls_manpath): Rename to ... + (get_nls_manpath): ... this. Some minor adjustments. Make + manpathlist argument const and always return a freshly-allocated + string. Explicitly add the top-level directory to the string in + the case of English locales (although we still look for + subdirectories in case of things like en_GB.UTF-8); C and POSIX + already just return a copy of manpathlist. + (add_nls_manpaths): New function to iterate over a colon-separated + list of locales, concatenating the result of get_nls_manpath for + each. Stop worrying about deduplication at this point as we used + to; instead, we let create_pathlist sort that out. + (create_pathlist): Keep the first of any set of duplicates rather + than the last, in order to keep item order stable. + * src/manp.h (add_nls_manpath): Remove prototype. + (add_nls_manpaths): Add prototype. + * src/man.c (main), src/whatis.c (main): Call add_nls_manpaths + rather than add_nls_manpath, with appropriate adjustments. + + * src/man.c (main), src/whatis.c (main): Don't set internal_locale + to the first component of multiple_locale. We will account for + this in search paths, but shouldn't forget about internal_locale + entirely. + +Thu Feb 19 21:50:44 GMT 2009 Colin Watson <cjwatson@debian.org> + + * src/manp.c (add_to_manpath): Remove; this just called pathappend + with the same arguments and so is pointless cruft. + (add_nls_manpath): Update all callers. + +Tue Feb 17 00:49:28 GMT 2009 Colin Watson <cjwatson@debian.org> + + * configure.ac: Check for gpreconv/preconv properly, i.e. by using + AC_CHECK_PROGS rather than by using 'which'. + +Mon Feb 16 01:45:59 GMT 2009 Colin Watson <cjwatson@debian.org> + + * docs/NEWS: Update. + +Mon Feb 16 00:49:47 GMT 2009 Colin Watson <cjwatson@debian.org> + + * src/man.c (make_roff_command): If we have preconv, it's silly to + recode to the assumed page encoding and risk problems with + characters unrepresentable in that encoding; we might as well just + recode to UTF-8 and feed that to preconv. + +Mon Feb 16 00:39:22 GMT 2009 Colin Watson <cjwatson@debian.org> + + * src/man.c (make_roff_command): Append //TRANSLIT to iconv -t + argument (specifically, so that hyphens get properly + transliterated when using preconv and groff -Tutf8 in a non-UTF-8 + locale; thanks, Matthew Burgess and Alexander Patrakov). + +Mon Feb 16 00:20:07 GMT 2009 Colin Watson <cjwatson@debian.org> + + * configure.ac: Check for gpreconv/preconv, which is evidence of a + version of groff supporting Unicode input, and therefore good + enough to assume --enable-mb-groff (thanks, Matthew Burgess). + +Sun Feb 15 23:48:51 GMT 2009 Colin Watson <cjwatson@debian.org> + + * src/man.c (compare_candidates): Remove obsolete first-pass + language code comparison. Language codes are already handled by + later code here, and this comparison caused English pages to be + preferred over pages for languages whose names sort later than + "man". + +Thu Feb 12 11:23:19 GMT 2009 Colin Watson <cjwatson@debian.org> + + * src/manconv_main.c (main): Correct error message if the given + filename cannot be opened. + +Wed Feb 4 13:53:47 CET 2009 Yuri Kozlov <yuray@komyakino.ru> + + * man/po4a/po/ru.po: Update from Translation Project (trivial). + +Sun Feb 1 16:40:16 GMT 2009 Colin Watson <cjwatson@debian.org> + + * docs/HACKING (Directory layout): Mention gnulib. + +Sun Feb 1 16:36:01 GMT 2009 Colin Watson <cjwatson@debian.org> + + * lib/linelength.c (get_line_length): Use line length from standard + input, but only if standard output is not a terminal; this allows + commands such as 'MAN_KEEP_STDERR=1 man foo >/dev/null' to report + errors based on the current line length. + +Sat Jan 31 12:20:42 GMT 2009 Colin Watson <cjwatson@debian.org> + + * docs/NEWS: Update. + +Sat Jan 31 12:14:10 GMT 2009 Arif E. Nugroho <arif_endro@yahoo.com> + + * po/id.po: Update from Translation Project. + +Tue Jan 27 09:54:25 GMT 2009 Clytie Siddall <clytie@riverland.net.au> + + * po/vi.po: Update from Translation Project (trivial). + +Tue Jan 27 09:52:18 GMT 2009 Erwin Poeze <erwin.poeze@gmail.com> + + * po/nl.po: Update from Translation Project. + * man/THANKS: Update. + +Mon Jan 26 13:40:30 GMT 2009 Clytie Siddall <clytie@riverland.net.au> + + * po/vi.po: Update from Translation Project. + +Mon Jan 26 13:38:11 GMT 2009 Robert Luberda <robert@debian.org> + + * po/pl.po, man/po4a/po/pl.po: Update from Translation Project. + +Sun Jan 18 23:27:11 GMT 2009 Colin Watson <cjwatson@debian.org> + + * lib/linelength.c (get_line_length): Line length is a property of + output, not input, so only check whether standard output is a + terminal, not also standard input (Debian bug #512233). + +Thu Jan 15 16:04:01 GMT 2009 Colin Watson <cjwatson@debian.org> + + * po/Makevars (XGETTEXT_OPTIONS): Add --flag=debug:1:c-format + --flag=debug_error:1:c-format. + +Thu Jan 15 00:00:05 GMT 2009 Colin Watson <cjwatson@debian.org> + + Update manual page search order to permit FHS-compliant installation + of packages in /opt. Reported by Matt Domsch. + + * src/manp.c (has_mandir): Use xasprintf rather than clumsier + xmalloc/strncpy/strcpy combination. Try ../share/man and share/man + subdirectories too. + (get_manpath_from_path): Update header comment and debug output. + * manual/files.me (Determination of the internal manpath): Update + description of directory search order. + * docs/NEWS: Document this. + +Mon Jan 5 17:47:55 GMT 2009 Yuri Kozlov <kozlov.y@gmail.com> + + * po/ru.po, man/po4a/po/ru.po: Update from Translation Project. + +Mon Jan 5 17:35:02 GMT 2009 Arif E. Nugroho <arif_endro@yahoo.com> + + * man/po4a/po/id.po: Update from Translation Project. + +Wed Dec 31 12:28:55 GMT 2008 Colin Watson <cjwatson@debian.org> + + Trust the database if it tells us that a page is ULT_MAN (i.e. not a + hard link, symbolic link, or .so link), and avoid passing the + SO_LINK flag to ult_src which requires it to open the page to look + for .so links. Produces roughly a threefold speed improvement for + searches with thousands of results. + + * src/man.c (get_ult_flags): New function. + (add_candidate, display_database): Use it. + +Wed Dec 31 11:51:41 GMT 2008 Colin Watson <cjwatson@debian.org> + + Sort manual page candidates in one go just before displaying them, + rather than insertion-sorting them along the way. Produces, very + roughly, a 25% speed improvement for searches with many results + (e.g. with --regex). + + * src/man.c (duplicate_candidates, compare_candidates): Simplify + interface by passing 'struct candidate' for both sides. + (compare_candidates): Explicitly stabilise the comparison as a + last resort, using a new add_index member. + (compare_candidates_qsort, free_candidate): New functions. + (add_candidate): Adjust calls to duplicate_candidates and + compare_candidates, requiring us to create the candidate structure + earlier. Note that the search produces quadratic-time behaviour. + Only compare candidates in cases of duplicates; otherwise just add + them to the end of the list and defer sorting until later. Use + free_candidate to free search->ult as well as search when freeing + superseded duplicates. + (sort_candidates): New function. + (man): Sort candidates before displaying them. + +Tue Dec 30 13:08:35 GMT 2008 Colin Watson <cjwatson@debian.org> + + * Version: 2.5.4-pre2. + * po/man-db.pot, po/*.po: Update. + +Tue Dec 30 12:55:59 GMT 2008 Colin Watson <cjwatson@debian.org> + + * man/man5/manpath.man5 (FORMAT): Add space between + "MINCATWIDTH"/"MAXCATWIDTH"/"CATWIDTH" and "width". + * man/po4a/po/id.po: Unfuzzy translations. + +Tue Dec 30 12:52:26 GMT 2008 Arif E. Nugroho <arif_endro@yahoo.com> + + * po/id.po, man/po4a/po/id.po: Update from Translation Project. + +Sun Dec 28 00:27:23 GMT 2008 Colin Watson <cjwatson@debian.org> + + * Version: 2.5.4-pre1. + * man/po4a/po/man-db-manpages.pot, man/po4a/po/*.po, po/man-db.pot, + po/*.po: Update. + +Sun Dec 28 00:17:45 GMT 2008 Colin Watson <cjwatson@debian.org> + + * man/po4a/Makefile.am (PO4A_ARGS): Always generate output files + even if poorly translated, since Automake's generated rules will + get upset otherwise. + +Sat Dec 27 23:47:19 GMT 2008 Colin Watson <cjwatson@debian.org> + + * man/po4a/Makefile.am (dist-hook): Update PO and POT files on 'make + dist'. + +Sat Dec 27 23:42:53 GMT 2008 Colin Watson <cjwatson@debian.org> + + * man/man1/man.man1 (Controlling formatted output): Hide ".B + \-\-no\-hyphenation" from po4a. + +Sat Dec 27 11:38:43 GMT 2008 Colin Watson <cjwatson@debian.org> + + * docs/NEWS: Start 2.5.4. + +Sat Dec 27 00:00:01 GMT 2008 Colin Watson <cjwatson@debian.org> + + Add option to disable hyphenation (Debian bug #166701). + + * src/man.c (options, parse_opt): Accept --no-hyphenation. Reset + corresponding variable with -D. + (disable_hyphenation): New function. + (display): Append disable_hyphenation to the decompressor pipeline + if --no-hyphenation is used. + * man/man1/man.man1 (SYNOPSIS, Controlling formatted output): + Document --no-hyphenation. + +Thu Dec 25 22:09:01 GMT 2008 Colin Watson <cjwatson@debian.org> + + Add regular expression and shell wildcard search facilities to man + (Debian bug #461319). + + * src/whatis.c (lower): Move to ... + * lib/lower.c: ... here, with optimisation from name_to_key. New + file. + * lib/lower.h: New file. + + * src/whatis.c (word_fnmatch): Move to ... + * lib/wordfnmatch.c: ... here, with more generic argument names. New + file. + * lib/wordfnmatch.h: New file. + + * src/whatis.c (main): Factor regcomp error handling out to ... + * lib/xregcomp.c: ... here. New file. + * lib/xregcomp.h: New file. + + * lib/Makefile.am (libman_a_SOURCES): Add lower.c, lower.h, + wordfnmatch.c, wordfnmatch.h, xregcomp.c, and xregcomp.h. + * po/POTFILES.in: Add lib/xregcomp.c; remove src/globbing.c. + + * libdb/db_lookup.c (name_to_key): Use lower. + (dblookup_pattern): New function. + * libdb/db_storage.h (dblookup_pattern): Add prototype. + * src/globbing.c (end_pattern): Rename to ... + (make_pattern): ... this. Create the whole pattern rather than + merely appending section or extension components. Handle regexes + if the new opts argument has the LFF_REGEX bit set. + (match_in_directory): Take an opts disjunction rather than a + boolean ignore_case argument; ignore_case is replaced by the + LFF_MATCHCASE bit being unset. Handle regexes if opts has the + LFF_REGEX bit set. + (look_for_file): Take an opts disjunction rather than a boolean + match_case argument; match_case is replaced by the LFF_MATCHCASE + bit being set. Handle regexes if opts has the LFF_REGEX bit set. + Handle shell wildcards if opts has the LFF_WILDCARD bit set (which + simply means not shell-escaping unesc_name). Call make_pattern + rather than end_pattern (with appropriate adjustments). + * src/globbing.h (enum look_for_file_opts): New enumeration. + (look_for_file): Update prototype. + * src/globbing_test.c (options, parse_opt): Accept -r/--regex and + -w/--wildcard. + (main): Update look_for_file arguments, including passing + LFF_REGEX or LFF_WILDCARD if the corresponding options are used. + * src/check_mandirs.c (purge_whatis, purge_missing), src/zsoelim.l + (zsoelim_open_file): Update look_for_file arguments. + * src/whatis.c (main): Only free preg if a regular expression was + compiled into it in the first place. + + * src/man.c (options, parse_opt): Accept --regex, --wildcard, and + --names-only. Reset corresponding variables with -D. Refuse to + accept both --regex and --wildcard. + (try_section): Update look_for_file arguments, including passing + LFF_REGEX or LFF_WILDCARD if the corresponding options are used. + (try_db): Use dblookup_pattern if --regex or --wildcard is used, + with corresponding options. + * man/man1/man.man1 (SYNOPSIS, Finding manual pages): Document + --regex, --wildcard, and --names-only. + +Tue Dec 23 11:17:01 GMT 2008 Colin Watson <cjwatson@debian.org> + + Sync supported language list with Fedora's patch to man + (http://cvs.fedora.redhat.com/viewvc/rpms/man/F-10/man-1.6b-i18n_nroff.patch?view=markup, + with corrections based on /usr/share/i18n/SUPPORTED). + + * src/encodings.c (directory_table): Add Estonian -> ISO-8859-1, + Belarusian -> CP1251, Greek -> ISO-8859-7, Lithuanian -> + ISO-8859-13, Latvian -> ISO-8859-13, Macedonian -> ISO-8859-5, + Romanian -> ISO-8859-2, Slovenian -> ISO-8859-2, and Ukrainian -> + KOI8-U. + (charset_alias_table): Map KOI8U to KOI8-U. + (less_charset_table): Map KOI8-U to koi8-r (possibly not quite + right but with any luck good enough). + +Mon Dec 8 13:08:22 GMT 2008 Colin Watson <cjwatson@debian.org> + + * libdb/db_store.c (compare_ids): If the promote_links argument is + true, consider SO_MAN equivalent to ULT_MAN. + (replace_if_necessary): Update call to compare_ids. + * libdb/db_storage.h (compare_ids): Update prototype. + * src/man.c (compare_candidates): Consider SO_MAN equivalent to + ULT_MAN for the purposes of sorting candidate pages for display + (Debian bug #384301). + +Mon Dec 8 10:08:45 GMT 2008 Colin Watson <cjwatson@debian.org> + + Improve sorting and de-duplication of manual page candidates (Debian + bugs #389762 and #496172). + + * src/man.c (struct candidate): Add ult member. + (duplicate_candidates): Pare down to only check for duplication + rather than trying to compare as well; the latter function is now + handled entirely by compare_candidates. Compare the ultimate + source file as the first test. + (compare_candidates): Compare locale elements in candidate paths + before comparing sections. + (add_candidates): Look up the ultimate source file if necessary, + and save it in the candidate structure. Use duplicate_candidates + for duplicate testing only and compare_candidates for comparison. + Insert elements at the latest possible position rather than the + earliest possible. + (try_section): Pass the ultimate source file that was already + looked up here. + (try_db): Adjust for new add_candidate signature. + +Sun Dec 7 17:43:21 GMT 2008 Colin Watson <cjwatson@debian.org> + + Make handling of terminal widths for cat pages configurable (Debian + bug #121997). + + * src/manp.c (add_to_dirlist): Recognise new MINCATWIDTH, + MAXCATWIDTH, and CATWIDTH directives. + * src/man_db.conf.in: Add MINCATWIDTH, MAXCATWIDTH, and CATWIDTH. + * src/man.c (get_roff_line_length): Use CATWIDTH rather than the + terminal width if the former is non-zero. + (add_roff_line_length): Check the terminal width against + MINCATWIDTH and MAXCATWIDTH rather than checking whether it + differs from groff's default (via get_roff_line_length). Allow cat + page saving regardless in catman mode. + (make_roff_command): Forbid saving cat pages in troff mode here + rather than via add_roff_line_length/get_roff_line_length. + * man/man5/manpath.man5 (FORMAT): Document MINCATWIDTH, MAXCATWIDTH, + and CATWIDTH. + +Sun Dec 7 17:17:34 GMT 2008 Colin Watson <cjwatson@debian.org> + + * man/man5/manpath.man5 (FORMAT): Document SECTION. + +Sat Dec 6 22:57:14 GMT 2008 Colin Watson <cjwatson@debian.org> + + Reorganise lexgrog to stop on any unrecognised roff request, rather + than continuing and often littering the database with garbage + (Debian bug #271402). This also involved extending lexgrog to + recognise some additional requests. + + * src/lexgrog.l (word): New definition. + (typeface): Add .SB and .SM. + (MAN_PRENAME): Go straight to MAN_REST on encountering a section + request or EOF. Go to MAN_NAME on encountering roff requests that + would ordinarily be processed and removed. Skip over any other + roff requests, including spacing and comments. + (MAN_NAME): Process .Tn and .Nm by handling their arguments as + text. Process .At, .Bsx, .Bx, .Fx, .Nx, .Ox, and .Ux by inserting + the appropriate text (introducing several new mini-scanners). + Process .Dq by surrounding its arguments by double quotes. Go to + MAN_REST on encountering any unrecognised roff request. + (add_wordn_to_whatis, add_word_to_whatis, mdoc_text): New + functions to support scanning of .At and friends. + +Fri Dec 5 22:27:03 GMT 2008 Colin Watson <cjwatson@debian.org> + + * man/man8/mandb.man8 (FILES): List FHS database cache location + first, and indicate more clearly that the others are old locations + (from a comment in Debian bug #243763). + +Fri Dec 5 13:52:14 GMT 2008 Colin Watson <cjwatson@debian.org> + + Make it possible to override man's default of discarding stderr when + stdout is a terminal (Debian bug #480996). + + * src/man.c (discard_stderr): Make static. + (maybe_discard_stderr): New function, checking MAN_KEEP_STDERR. + (format_display_and_save, format_display, display_catman): Use + maybe_discard_stderr. + * man/man1/man.man1 (ENVIRONMENT): Document this. + +Thu Dec 4 15:03:08 GMT 2008 Colin Watson <cjwatson@debian.org> + + Exit as soon as possible if database writes return ENOSPC (Debian + bug #167159). + + * src/check_mandirs.c (testmandirs, create_db, update_db, + purge_normal, purge_whatis, check_multi_key, purge_missing): + Return int rather than short, to make space for -errno. + * src/mandb.c (update_one_file, update_db_wrapper, mandb, + process_manpath): Likewise. + * src/check_mandirs.h (create_db, update_db, purge_missing): Update + prototypes. + + * src/check_mandirs.c (create_db): Return -errno for database open + errors other than EACCES and EROFS. + * src/mandb.c (mandb): Return early on errors from create_db and + update_db_wrapper. Propagate errors from xcopy as well as + returning early. + (process_manpath): Return early on errors from mandb. + (main): Exit FATAL on errors from process_manpath. + +Wed Dec 3 10:54:53 GMT 2008 Colin Watson <cjwatson@debian.org> + + * libdb/db_lookup.c (make_content): Cast time_t value to long before + trying to print as %ld. + + * libdb/db_ndbm.c (ndbm_flclose, ndbm_flopen): Rename dbf to db to + avoid shadowing a global variable. + * libdb/mydbm.h: Update prototypes and gdbm/ndbm macros likewise. + +Wed Dec 3 10:45:07 GMT 2008 Colin Watson <cjwatson@debian.org> + + * lib/Makefile.am (libman_a_CPPFLAGS), libdb/Makefile.am + (libmandb_a_CPPFLAGS), src/Makefile.am (AM_CPPFLAGS): Add + -I$(top_builddir)/intl. + +Wed Dec 3 10:38:33 GMT 2008 Colin Watson <cjwatson@debian.org> + + * gnulib: Import the gettext module. The practical effect of this is + to get the intl directory included while compiling files in + gnulib/lib. + * autogen.sh: Prefer gnulib's version of tools/config.rpath over + gettext's. + +Wed Dec 3 10:17:50 GMT 2008 Colin Watson <cjwatson@debian.org> + + * m4/man-po4a.m4 (MAN_PO4A): Define a PO4A Automake conditional + (again). + * man/po4a/Makefile.am: Define all-local, update-po, and clean-local + rules only if PO4A is set, so that (in particular) distclean works + if po4a isn't installed. + +Tue Dec 2 16:25:53 GMT 2008 Arif E. Nugroho <arif_endro@yahoo.com> + + * man/po4a/po/id.po: Update from Translation Project (trivial). + +Tue Dec 2 14:50:12 GMT 2008 Colin Watson <cjwatson@debian.org> + + * man/po4a/po/id.po: New from Translation Project (thanks, Arif E. + Nugroho). + * configure.ac (AC_CONFIG_FILES): Add man/id/Makefile. + * man/Makefile.am (DIST_SUBDIRS): Add id. + * man/id/Makefile.am: New file. + * man/po4a/Makefile.am (POFILES): Add po/id.po. + * man/po4a/po4a.cfg (po4a_langs): Add id. + * man/THANKS: Credit Arif E. Nugroho with man/id as well as id.po. + * .bzrignore: Add man/id/man1, man/id/man5, and man/id/man8. + +Mon Nov 17 19:26:50 GMT 2008 Colin Watson <cjwatson@debian.org> + + * configure.ac: Now that we use the ISO 8601 date format rather than + language-specific date variants, there's no reason to call out to + date (using options specific to GNU date) to format the date + string, so just hardcode it. + * docs/HACKING (Release process): datemark -> date. + +Mon Nov 17 17:55:35 GMT 2008 Colin Watson <cjwatson@debian.org> + + FreeBSD build fixes. + + * man/Rules.man (replace.sed): Spell out + $(top_builddir)/man/replace.sin in full since $< is unspecified in + target rules. + * src/Makefile.am (accessdb_LDADD, catman_LDADD, globbing_LDADD, + lexgrog_LDADD, man_LDADD, manconv_LDADD, mandb_LDADD, + manpath_LDADD, whatis_LDADD, wrapper_LDADD, zsoelim_LDADD): Add + @LIBINTL@. + (apropos$(EXEEXT)): Remove target before creating symlink. Spell + out whatis$(EXEEXT) in full since $< is unspecified in target + rules. + + * src/check_mandirs.c (testmandirs): Cast time_t values to long + before trying to print as %ld. + * src/descriptions.c (parse_descriptions): Rename base_name to base + and seen_base_name to seen_base. + * src/descriptions_store.c (store_descriptions): Rename base_name to + base. + * src/descriptions.h (parse_descriptions, store_descriptions): + Update prototypes. + +Mon Nov 17 11:44:17 GMT 2008 Colin Watson <cjwatson@debian.org> + + * Version: 2.5.3. + * po/man-db.pot, po/*.po: Update. + +Mon Nov 17 11:07:50 GMT 2008 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.c (command_new_function): Initialise discard_err. + (pipeline_start): Zero-initialise pids and statuses arrays on + allocation, and don't unblock SIGCHLD until after doing so. + * src/manconv.c (manconv): Don't free elements of from here, as when + called from manconv_stdin they will be freed by + free_manconv_codes. + * src/manconv_main.c (main): Free elements of from_code here + instead. + +Mon Nov 17 10:45:55 GMT 2008 Colin Watson <cjwatson@debian.org> + + * libdb/db_storage.h (infoalloc): Implement as a macro rather than + as an inline function; seems to cause fewer problems when building + without optimisation. + +Mon Nov 17 10:18:10 GMT 2008 Colin Watson <cjwatson@debian.org> + + * m4/longdouble.m4: Remove; gettext no longer installs this. + * man/Makefile.am (EXTRA_DIST): Distribute LINGUAS and LINGUAS.po4a. + +Mon Nov 17 09:59:19 GMT 2008 Colin Watson <cjwatson@debian.org> + + * release.sh: Use 'make distcheck' rather than 'make dist'. + +Mon Nov 17 01:13:17 GMT 2008 Colin Watson <cjwatson@debian.org> + + * po/POTFILES.in: Add src/manconv_main.c and src/zsoelim_main.c. + * po/man-db.pot, po/*.po: Update. + +Mon Nov 17 00:53:33 GMT 2008 Colin Watson <cjwatson@debian.org> + + * docs/NEWS: Update. + +Mon Nov 17 00:39:14 GMT 2008 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.c (pipeline_wait): Mangle return value into a value + suitable for passing to exit (Debian bug #477305). + +Mon Nov 17 00:06:28 GMT 2008 Colin Watson <cjwatson@debian.org> + + Make bare .so includes (e.g. ".so foo.1" rather than ".so + man1/foo.1") work, although only within the same manual page + hierarchy for now. Reported by Mike Frysinger; partially fixes + Debian bug #503472. + + * src/zsoelim.l (zsoelim_open_file): Attempt to handle bare .so + includes using look_for_file. + * src/Makefile.am (zsoelim_SOURCES): Add globbing.c, globbing.h, and + util.c. + +Sun Nov 16 23:34:02 GMT 2008 Colin Watson <cjwatson@debian.org> + + Improve handling of systems without internationalisation support. + Reported by Mike Frysinger. + + * include/manconfig.h.in (locale_changed): New macro. + * src/man.c (main), src/whatis.c (main): Use it. + * src/manconv.c (check_preprocessor_encoding, try_iconv): Declare + only if HAVE_ICONV is defined. + (manconv): If HAVE_ICONV is not defined, supply a replacement that + just passes data straight through. + * src/whatis.c (simple_convert): Declare only if HAVE_ICONV is + defined and supply a macro replacement otherwise, since in the + latter case iconv_t is not defined. + +Sun Nov 16 18:40:09 GMT 2008 Colin Watson <cjwatson@debian.org> + + * manual/misc.me (Credits): Update with contributors of + non-translation patches since I started maintaining man-db; + mention man/THANKS for translator credits. Probably still missing + some people, as ever ... + +Sun Nov 16 18:16:55 GMT 2008 Chusslove Illich <caslav.ilic@gmx.net> + + * src/encodings.c (directory_table): Add Serbian Latin -> + ISO-8859-2. + * src/lexgrog.l (sr_name): Add another possible translation. + (srlatin_name): Add. + +Sun Nov 16 18:00:23 GMT 2008 Colin Watson <cjwatson@debian.org> + + * src/man.c (main), src/whatis.c (main): Tokenise LANGUAGE properly + rather than only taking the first two characters of each entry. + Based on a suggestion from Chusslove Illich in Savannah patch + #6658. + +Sun Nov 16 17:57:57 GMT 2008 Chusslove Illich <caslav.ilic@gmx.net> + + * src/manp.c (add_nls_manpath): Check that modifiers match if set + (Savannah patch #6658). + +Wed Nov 12 12:32:17 GMT 2008 Arif E. Nugroho <arif_endro@yahoo.com> + + * po/id.po: New from Translation Project. + * po/LINGUAS: Add id. + * man/THANKS: Add translator credit. + +Sun Nov 9 16:23:12 GMT 2008 Robert Luberda <robert@debian.org> + + * man/po4a/po/pl.po: Update from Translation Project. + +Sun Oct 26 12:44:42 GMT 2008 Colin Watson <cjwatson@debian.org> + + * src/manp.c (create_pathlist): Eliminate duplicates due to + symlinks. Reported by Mike Frysinger. + * src/man.c (main): Emit "manpath search path" debugging message + before calling create_pathlist. + * docs/NEWS: Document this. + +Sun Oct 26 11:58:37 GMT 2008 Colin Watson <cjwatson@debian.org> + + Support LINGUAS environment variable to control installation of + localised manual pages. Reported by Mike Frysinger. + + * m4/man-po4a.m4, m4/man-linguas.m4: New files. + * configure.ac: Call MAN_PO4A instead of inline code. Remove NLS and + PO4A Automake conditionals, no longer needed. Call MAN_LINGUAS. + * man/LINGUAS, man/LINGUAS.po4a: New files. + * man/Makefile.am (SUBDIRS): Set to $(MAN_SUBDIRS) rather than + computing the list here. + (DIST_SUBDIRS): Add, since we no longer use Automake conditionals. + * docs/NEWS: Document this. + +Sun Oct 26 01:53:36 GMT 2008 Colin Watson <cjwatson@debian.org> + + * configure.ac: Check for lzma. + * include/comp_src.h.in (comp_list): Add lzma. + * include/manconfig.h.in: Define UNLZMA. + * docs/NEWS: Document this. + +Wed Oct 1 12:19:29 BST 2008 Colin Watson <cjwatson@debian.org> + + * docs/TODO: Remove entry about Berkeley DB's error handling, fixed + in Berkeley DB 4.1 (see http://bugs.debian.org/180379). + +Tue Sep 30 16:39:19 BST 2008 Colin Watson <cjwatson@debian.org> + + * src/encodings.c (directory_table): Add Norwegian Bokmål and + Norwegian Nynorsk (following a comment on + http://www.linuxfromscratch.org/lfs/view/development/chapter06/man-db.html). + +Sun Sep 28 11:35:18 BST 2008 Colin Watson <cjwatson@debian.org> + + * manual/files.me (NLS manual pages): Describe automatic detection + of manual pages encoded in UTF-8. Recommend that character set + components not be used in directory names. + +Sun Sep 28 11:30:40 BST 2008 Colin Watson <cjwatson@debian.org> + + * configure.ac: Check for GDBM before Berkeley DB. + * docs/man-db.lsm: List GDBM before Berkeley DB. + * manual/db.me (Database types): Explain why GDBM is preferred. + * manual/intro.me (Arguments to configure), README (Non-generic + arguments to configure): Update --with-db description. + * docs/NEWS: Document this, with a note to distributors on upgrade + handling. + +Thu Sep 18 02:00:54 BST 2008 Colin Watson <cjwatson@debian.org> + + * man/man1/apropos.man1 (AUTHOR), man/man1/manpath.man1 (AUTHOR), + man/man1/whatis.man1 (AUTHOR), man/man8/catman.man8 (AUTHOR): Add + my name. + +Thu Sep 18 01:42:34 BST 2008 Colin Watson <cjwatson@debian.org> + + Call zsoelim as an internal function rather than as an external + process, to improve performance. + + * src/Makefile.am (man_SOURCES): Add zsoelim.h and zsoelim.l. + (zsoelim_SOURCES): Add zsoelim.h and zsoelim_main.c. + * src/man.c (make_roff_command): Call zsoelim_stdin as an internal + function. + * src/zsoelim.l (open_file): Rename to ... + (zsoelim_open_file): ... this. Make external. Update all callers. + (parse_file): Rename to ... + (zsoelim_parse_file): ... this. Make external. Update all callers. + (zsoelim_stdin): New function. + (parse_opt, main): Move to ... + * src/zsoelim_main.c: ... here. New file. + * src/zsoelim.h: New file. + * docs/NEWS: Document this. + + * man/man1/zsoelim.man1 (AUTHOR): Add my name. + +Mon Sep 8 09:21:34 BST 2008 Colin Watson <cjwatson@debian.org> + + Call manconv as an internal function rather than as an external + process, to improve performance. Indirectly suggested by Dr. Werner + Fink in Savannah bug #24043. + + * src/Makefile.am (whatis_LDADD): Add $(LIBCOMPRESS). + (lexgrog_SOURCES, man_SOURCES, mandb_SOURCES, whatis_SOURCES): Add + manconv.c and manconv.h. + (manconv_SOURCES): Add manconv.h and manconv_main.c. + * src/encodings.c (manconv_stdin, free_manconv_codes): New + functions. + (add_manconv): Call manconv as an internal function. + * src/manconv.c (try_iconv): Take the target code as an argument + rather than using a global variable. + (manconv): New function, split out of main. + (split_codes, parse_opt, main): Move to ... + * src/manconv_main.c: ... here. New file. + * src/manconv.h: New file. + * docs/NEWS: Document this. + +Mon Sep 8 09:09:06 BST 2008 Colin Watson <cjwatson@debian.org> + + Add support for freeing command_function data. + + * lib/pipeline.c (command_new_function): Add free_func argument. + (command_dup): Copy it. + (pipeline_connect): Adjust command_new_function call. + (pipeline_start): Free command_function data before exiting. + (pipeline_wait): Free command_function data while cleaning up + pipeline. + * lib/pipeline.h: Add command_function_free_type typedef. + (struct command [struct command_function]): Add free_func member. + (command_new_function): Update prototype. + * lib/decompress.c (decompress_open, decompress_fdopen): Adjust + command_new_function calls. + +Sun Sep 7 15:26:25 BST 2008 Colin Watson <cjwatson@debian.org> + + * src/manconv.c (try_iconv): Remove premature optimisation that + sometimes caused us to write incomplete output. + + * src/encodings.c (add_manconv): Always use manconv even if iconv + could theoretically do the job, as manconv has slightly more + permissive behaviour that is generally more suitable for + converting manual page source (Debian bug #498082). + +Sun Aug 31 18:38:34 BST 2008 Colin Watson <cjwatson@debian.org> + + * docs/NEWS: Update. + +Sun Aug 31 18:17:14 BST 2008 Colin Watson <cjwatson@debian.org> + + * gnulib: Upgrade to 20080801. + +Sun Aug 17 16:42:43 BST 2008 Colin Watson <cjwatson@debian.org> + + * src/accessdb.c (main), src/catman.c (main), src/globbing_test.c + (main), src/lexgrog_test.c (main), src/man.c (main), src/manconv.c + (main), src/mandb.c (main), src/manpath.c (main), src/whatis.c + (main), src/zsoelim.l (main): Suppress locale warning if being + called by another man-db program (Debian bug #494989). + +Sun Aug 17 00:27:07 BST 2008 Colin Watson <cjwatson@debian.org> + + * src/man.c (tmp_cat_fd, man_modtime, discard_stderr): Move + definitions outside MAN_CATS guard; these are needed by catman + handling and (in the case of discard_stderr) manual page + formatting functions as well as cat handling in man itself + (Savannah bug #24044). + +Thu Aug 7 02:12:09 BST 2008 Colin Watson <cjwatson@debian.org> + + * src/man.c (display): If we fail to decompress man_file and it + matters (i.e. we aren't just displaying a stray cat), then emit an + error message and return early (Coverity CID #5, #6). + +Wed Aug 6 22:36:48 BST 2008 Colin Watson <cjwatson@debian.org> + + * libdb/db_lookup.c (infoalloc): Move to ... + * libdb/db_storage.h (infoalloc): ... here (as inline function). + Include "xalloc.h" for this. + (dblookup_all, dblookup_exact, gripe_lock, gripe_corrupt_data): + Stop declaring inline. + * src/security.h (drop_effective_privs, regain_effective_privs): + Stop declaring inline. + +Wed Aug 6 22:23:41 BST 2008 Colin Watson <cjwatson@debian.org> + + * src/man.c (display): If display_to_stdout is set, assert that + man_file is non-NULL; all the stray-cat code paths ensure that + neither troff nor recode is set by this point (Coverity CID #5). + +Wed Aug 6 21:40:37 BST 2008 Colin Watson <cjwatson@debian.org> + + * src/man.c (manopt_to_env): Duplicate options assigned to elements + of argv, and free the copy of manopt before returning. This isn't + really a bug as such, but it appeases Coverity CID #22. + +Thu Jul 31 02:10:06 BST 2008 Colin Watson <cjwatson@debian.org> + + * src/man.c (get_section_list): Fix leak of get_sections return + value if the configuration file contains no SECTIONS directives + (Coverity CID #21). + +Thu Jul 31 02:03:46 BST 2008 Colin Watson <cjwatson@debian.org> + + * src/man.c (try_section): Free info and info_buffer if there is a + failure before adding a candidate (Coverity CID #24). + +Thu Jul 31 01:41:17 BST 2008 Colin Watson <cjwatson@debian.org> + + * src/manp.c (add_nls_manpath): Copy manpathlist to omanpathlist + after the initial locale checks, to avoid memory leaks (Coverity + CID #20). + (get_manpath): Free return value of add_system_manpath (Coverity + CID #18) and guess_manpath (Coverity CID #19) when they're simply + interpolated into another string. + +Thu Jul 31 01:18:59 BST 2008 Colin Watson <cjwatson@debian.org> + + * src/man.c (display): Check for failure to open the preformatted + cat file (Coverity CID #14). + +Thu Jul 31 01:01:13 BST 2008 Colin Watson <cjwatson@debian.org> + + * src/util.c (lang_dir): Free ld if returning xstrdup ("C") instead + (Coverity CID #17). + +Thu Jul 31 00:55:36 BST 2008 Colin Watson <cjwatson@debian.org> + + * lib/pathsearch.c (pathsearch): Free path if returning early due to + being given a qualified name (Coverity CID #16). + +Thu Jul 31 00:51:58 BST 2008 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.c (pipeline_pump): Free known_source before returning + (Coverity CID #15). + +Thu Jul 31 00:47:43 BST 2008 Colin Watson <cjwatson@debian.org> + + * src/whatis.c (word_fnmatch): Free lowwhatis on return paths + (Coverity CID #25). + +Thu Jul 31 00:40:29 BST 2008 Colin Watson <cjwatson@debian.org> + + * src/catman.c (parse_for_sec): Fix initialisation of initial_bit + (Coverity CID #28). + +Tue Jul 15 15:58:24 BST 2008 Clytie Siddall <clytie@riverland.net.au> + + * po/vi.po: Update from Translation Project. + +Sat Jul 12 16:47:11 BST 2008 Colin Watson <cjwatson@debian.org> + + * Version: 2.5.3-pre1. + * po/man-db.pot, po/*.po: Update. + +Sat Jul 12 16:43:07 BST 2008 Colin Watson <cjwatson@debian.org> + + * docs/NEWS: Start 2.5.3. + +Sat Jul 5 11:33:16 BST 2008 Colin Watson <cjwatson@debian.org> + + * gnulib: Upgrade to 20080701. + +Mon Jun 9 13:47:50 BST 2008 Colin Watson <cjwatson@debian.org> + + * gnulib: Upgrade to 20080601. + +Mon Jun 9 09:31:04 BST 2008 Yuri Kozlov <kozlov.y@gmail.com> + + * man/po4a/po/ru.po: Update. + +Tue Jun 3 09:54:17 BST 2008 Colin Watson <cjwatson@debian.org> + + * man/po4a/po/ru.po: Update with msgmerge. + +Tue Jun 3 09:53:59 BST 2008 Colin Watson <cjwatson@debian.org> + + * man/ru/translator.add: Add dummy file. + +Tue Jun 3 00:07:47 BST 2008 Colin Watson <cjwatson@debian.org> + + * man/po4a/po/ru.po: New from Translation Project (thanks, Yuri + Kozlov). + * configure.ac (AC_CONFIG_FILES): Add man/ru/Makefile. + * man/Makefile.am (MAYBE_PO4A_LINGUAS): Add ru. + * man/ru/Makefile.am: New file. + * man/po4a/Makefile.am (POFILES): Add po/ru.po. + * man/po4a/po4a.cfg (po4a_langs): Add ru. + * man/THANKS: Credit Yuri Kozlov with man/ru as well as ru.po. + * .bzrignore: Add man/ru/man1, man/ru/man5, and man/ru/man8. + +Sun Jun 1 16:40:12 BST 2008 Colin Watson <cjwatson@debian.org> + + * man/man8/mandb.man8 (SYNOPSIS): Document -t (thanks, Yuri Kozlov; + Debian bug #483951). + +Sun Jun 1 04:01:12 BST 2008 Colin Watson <cjwatson@debian.org> + + * man/man1/whatis.man1 (SYNOPSIS): Document -v (thanks, Yuri Kozlov; + Debian bug #483862). + +Fri May 30 00:11:15 BST 2008 Colin Watson <cjwatson@debian.org> + + * man/man1/manconv.man1 (SYNOPSIS), man/man1/manpath.man1 + (SYNOPSIS): Document -h and -V here as well as in OPTIONS (thanks, + Yuri Kozlov; Debian bug #483589). + +Sun May 25 18:51:47 BST 2008 Colin Watson <cjwatson@debian.org> + + * man/man1/man.man1 (SYNOPSIS): Fix minor formatting error in -w|-W + synopsis. + +Sun May 25 18:46:55 BST 2008 Colin Watson <cjwatson@debian.org> + + * man/man1/man.man1 (SYNOPSIS): Restructure to include all options + from the OPTIONS section and to use approximately the same order. + Thanks to Yuri Kozlov; Debian bugs #482424, #482791, #482792, and + #482810. + +Sun May 25 18:29:28 BST 2008 Colin Watson <cjwatson@debian.org> + + * man/man1/lexgrog.man1 (SYNOPSIS): Correct -s to -E. + (OPTIONS): Correct -e to -E. + Thanks to Yuri Kozlov; Debian bug #481226. + +Sun May 25 19:23:00 CEST 2008 Yuri Kozlov <kozlov.y@gmail.com> + + * man/man1/apropos.man1 (SYNOPSIS): Document -v (Debian bug + #480678). + +Mon May 5 09:53:19 BST 2008 Colin Watson <cjwatson@debian.org> + + * lib/cleanup.c: #include <string.h> for memset. + +Mon May 5 02:34:52 BST 2008 Colin Watson <cjwatson@debian.org> + + * docs/man-db.lsm: Update to 2.5.2. + * docs/HACKING: Note requirement for docs/man-db.lsm update just + before release. + +Mon May 5 02:11:38 BST 2008 Colin Watson <cjwatson@debian.org> + + * Version: 2.5.2. + * po/man-db.pot, po/*.po: Update. + +Mon May 5 02:07:00 BST 2008 Colin Watson <cjwatson@debian.org> + + * docs/NEWS: Document previous commit. + +Mon May 5 01:39:22 BST 2008 Colin Watson <cjwatson@debian.org> + + Fix jless support to avoid breaking less (Debian bug #217519). + + * src/encodings.c (less_charset_table): Add jless_charset members. + Move EUC-JP less_charset to jless_charset, falling back to iso8859 + for less. Use the more explicit japanese-ujis rather than ja. + * src/encodings.c (get_jless_charset): New function. + * src/encodings.h (get_jless_charset): Add prototype. + * src/man.c (make_roff_command): Set JLESSCHARSET to the return + value of get_jless_charset if non-NULL. + +Mon May 5 01:06:56 BST 2008 Colin Watson <cjwatson@debian.org> + + Clean up some loose ends of Chinese support (thanks, Wu Songhai; + Debian bug #354321). + + * src/encodings.c (directory_table): Add zh_SG, defaulting to the + GBK encoding. + (charset_alias_table): Map EUCTW to EUC-TW. + (charset_table): Add EUC-TW, defaulting to the nippon driver. + (compatible_encodings): Recognise EUC-TW encoding. + +Mon May 5 00:05:19 BST 2008 Colin Watson <cjwatson@debian.org> + + * gnulib: Upgrade to 20080501. + +Sun May 4 23:16:59 BST 2008 Colin Watson <cjwatson@debian.org> + + * lib/cleanup.c (sighandler, trap_signal), lib/pipeline.c + (pipeline_start, pipeline_pump): Zero sigaction structures before + using them. (I believe we set all required fields anyway; this is + just an extra safety catch.) + +Mon Apr 28 09:54:48 BST 2008 Clytie Siddall <clytie@riverland.net.au> + + * po/vi.po: Update from Translation Project. + +Mon Apr 28 09:38:53 BST 2008 Benno Schulenberg <benno@vertaalt.nl> + + * po/nl.po: Update from Translation Project. + +Sun Apr 27 22:41:54 BST 2008 Robert Luberda <robert@debian.org> + + * man/po4a/po/pl.po: Update from Translation Project. + +Sun Apr 27 11:47:19 BST 2008 Colin Watson <cjwatson@debian.org> + + * po/man-db.pot, po/*.po: Update (sync with 2.5.2-pre2 tarball). + +Sun Apr 27 11:27:46 BST 2008 Colin Watson <cjwatson@debian.org> + + * Version: 2.5.2-pre2. + * po/man-db.pot, po/*.po: Update. + +Sun Apr 27 11:24:24 BST 2008 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.c (pipeline_sigchld): assert is not + async-signal-safe, so avoid calling it in a signal handler and use + an if guard instead (Ubuntu bug #221635, although exactly why the + assertion is failing there is unclear). + +Sun Apr 27 01:40:32 BST 2008 Colin Watson <cjwatson@debian.org> + + * gnulib: Upgrade to 20080401. + +Sun Apr 27 01:32:58 BST 2008 Colin Watson <cjwatson@debian.org> + + * src/lexgrog.l (ko_name): Add another possible translation, seen in + hdparm(1). + +Sun Apr 27 01:31:47 BST 2008 Colin Watson <cjwatson@debian.org> + + * src/manconv.c (try_iconv): Don't handle //IGNORE unless this is + the last encoding to be tried. + * src/encodings.c (add_manconv): Append //IGNORE to the target + encoding. + * docs/NEWS: Document this. + +Sun Apr 27 00:54:05 BST 2008 Colin Watson <cjwatson@debian.org> + + Don't emit encoding conversion errors in mandb's quiet mode (Debian + bug #473862). + + * src/manconv.c (options, parse_opt): Accept -q/--quiet. + (try_iconv): Suppress iconv errors under --quiet. + * man/man1/manconv.man1 (SYNOPSIS, OPTIONS): Document --quiet. + * man/po4a/po/man-db-manpages.pot, man/po4a/po/pl.po: Update. + * po/man-db.pot, po/*.po: Update. + + * src/encoding.c (add_manconv): Pass -q to manconv if this is mandb + in quiet mode. + +Sat Apr 26 14:34:26 BST 2008 Colin Watson <cjwatson@debian.org> + + * man/man1/man.man1 (DESCRIPTION): Bring list of conventional + section names more into sync with man-pages(7). + * man/po4a/po/man-db-manpages.pot, man/po4a/po/pl.po: Update. + +Sat Apr 26 13:51:27 BST 2008 Colin Watson <cjwatson@debian.org> + + * man/de/man1/apropos.man1, man/de/man1/man.man1, + man/de/man1/manpath.man1, man/de/man1/whatis.man1, + man/de/man1/zsoelim.man1, man/de/man5/manpath.man5, + man/de/man8/catman.man8, man/es/man1/man.man1, + man/fr/man1/man.man1, man/it/man8/accessdb.man8: Fix various small + mistakes that caused warnings from groff. + +Sun Mar 30 20:39:34 BST 2008 Benno Schulenberg <benno@vertaalt.nl> + + * po/nl.po: Update from Translation Project. + +Mon Mar 17 19:29:43 GMT 2008 Clytie Siddall <clytie@riverland.net.au> + + * po/vi.po: Update from Translation Project. + +Fri Mar 14 14:24:58 GMT 2008 Colin Watson <cjwatson@debian.org> + + Persuade 'make distcheck' to pass again. + + * man/po4a/po4a.cfg: Use paths relative to $(srcdir) and + $(builddir). + * man/po4a/Makefile.am (PO4A_ARGS): Define srcdir and builddir + variables. + (all-local, update-po, clean-local): Pass $(PO4A_ARGS) to $(PO4A). + Read po4a.cfg from $(srcdir). + * man/po4a/*.pl.add: Consolidate into ... + * man/pl/translator.add: ... this. + * man/Rules.man (dist-hook): Only do anything if PO4A_LINGUA is not + set to yes. + (distclean-hook): Remove man1, man5, and man8 if PO4A_LINGUA is + set to yes. + * man/pl/Makefile.am (PO4A_LINGUA): Set to yes. + (EXTRA_DIST): Distribute translator.add. + * .bzrignore: Ignore man/pl/man1, man/pl/man5, and man/pl/man8, + rather than just some files within those directories. + +Fri Mar 14 01:06:42 GMT 2008 Colin Watson <cjwatson@debian.org> + + * man/man1/man.man1 (Controlling formatted output): Change + 'soft-hyphen' string to 'softhyphen' to work around Debian bug + #470849. + * man/po4a/po/man-db-manpages.pot, man/po4a/po/pl.po: Update. + +Fri Mar 14 00:57:37 GMT 2008 Colin Watson <cjwatson@debian.org> + + Build Polish manual pages. The method used scales rather poorly and + will probably need to be revisited at some point. + + * configure.ac (AC_CONFIG_FILES): Add man/pl/Makefile. + * man/Makefile.am (MAYBE_PO4A_LINGUAS): New, containing pl. + (SUBDIRS): Add $(MAYBE_PO4A_LINGUAS) if po4a is present. + * man/pl/Makefile.am: New file. + * man/po4a/Makefile.am (POFILES): New, containing po/pl.po. + (EXTRA_DIST): Add $(POFILES). + (all-local, clean-local): New rules to generate and remove + translated documents. + (update-po): Add --no-translations option. + * man/po4a/po4a.cfg (po4a_langs): Replace zh_CN with pl. (zh_CN can + come back once it has a translation.) + * man/THANKS: Credit Robert Luberda with man/pl as well as pl.po. + + * .bzrignore: Add man/pl/man1/*.man1, man/pl/man5/*.man5, and + man/pl/man8/*.man8. + * man/po4a/po/man-db-manpages.pot: Update. + +Fri Mar 14 00:55:15 GMT 2008 Robert Luberda <robert@debian.org> + + * man/po4a/po/pl.po: New from Translation Project. + * man/po4a/accessdb.pl.add, man/po4a/apropos.pl.add, + man/po4a/catman.pl.add, man/po4a/lexgrog.pl.add, + man/po4a/man.pl.add, man/po4a/manconv.pl.add, + man/po4a/mandb.pl.add, man/po4a/manpath.pl.add, + man/po4a/whatis.pl.add, man/po4a/zsoelim.pl.add: New files. + +Thu Mar 13 09:56:53 GMT 2008 Robert Luberda <robert@debian.org> + + * po/pl.po: Update from Translation Project. + +Wed Mar 12 18:29:32 GMT 2008 Yuri Kozlov <kozlov.y@gmail.com> + + * po/ru.po: Update from Translation Project. + +Wed Mar 12 13:52:02 GMT 2008 Benno Schulenberg <benno@vertaalt.nl> + + * po/nl.po: Update from Translation Project. + +Wed Mar 12 12:30:09 GMT 2008 Colin Watson <cjwatson@debian.org> + + * src/man.c (parse_opt): Only set html_pager if arg is non-NULL. + * docs/NEWS: Document this. + +Wed Mar 12 12:20:50 GMT 2008 Colin Watson <cjwatson@debian.org> + + * configure.ac: Check for po4a. Define an Automake conditional based + on whether it is present. + * man/Makefile.am (SUBDIRS): Add the po4a subdirectory only if the + po4a program is present. + * man/po4a/Makefile.am (update-po): Use PO4A variable. + +Wed Mar 12 08:53:48 GMT 2008 Colin Watson <cjwatson@debian.org> + + * man/po4a/Makefile.am (update-po): New target. + +Wed Mar 12 08:53:32 GMT 2008 Robert Luberda <robert@debian.org> + + * man/man1/apropos.man1 (OPTIONS, FILES), man/man1/man.man1 + (ENVIRONMENT, FILES), man/man1/manconv.man1 (OPTIONS), + man/man1/manpath.man1 (OPTIONS, FILES), man/man1/whatis.man1 + (OPTIONS, EXIT STATUS, FILES), man/man8/mandb.man8 (OPTIONS): + Consolidate various nearly-identical strings. + * man/po4a/po/man-db-manpages.pot: Update. + +Tue Mar 11 10:41:05 GMT 2008 Colin Watson <cjwatson@debian.org> + + * Version: 2.5.2-pre1 (really this time). + +Tue Mar 11 10:39:45 GMT 2008 Colin Watson <cjwatson@debian.org> + + * configure.ac (AC_CONFIG_FILES): Add man/po4a/Makefile. + * man/Makefile.am (SUBDIRS): Add po4a. + * man/po4a/Makefile.am: New file. Distribute po4a.cfg and + po/man-db-manpages.pot. + +Tue Mar 11 10:26:49 GMT 2008 Colin Watson <cjwatson@debian.org> + + * Version: 2.5.2-pre1. + * po/man-db.pot, po/*.po: Update. + +Mon Mar 10 19:42:19 GMT 2008 Colin Watson <cjwatson@debian.org> + + * man/man1/man.man1 (Controlling formatted output): Quote %pager, + since it may expand to multiple words. + +Mon Mar 10 16:07:11 GMT 2008 Colin Watson <cjwatson@debian.org> + + * docs/NEWS: More updates for 2.5.2. + +Mon Mar 10 16:00:15 GMT 2008 Colin Watson <cjwatson@debian.org> + + * man/po4a/po/man-db.pot: Rename to ... + * man/po4a/po/man-db-manpages.pot: ... this, so that the translation + domain name stops clashing with that used for program translations + (per Benno Schulenberg). + * man/po4a/po4a.cfg (po4a_paths): Adjust for rename. + +Mon Mar 10 01:05:57 GMT 2008 Colin Watson <cjwatson@debian.org> + + * man/Rules.man (.man1.1, .man8.8): Substitute name of manual page + being processed as %program%. + * man/man1/apropos.man1 (OPTIONS), man/man1/man.man1 (Finding manual + pages), man/man1/whatis.man1 (OPTIONS): Consolidate + nearly-identical descriptions of --locale using %program% (thanks, + Robert Luberda). + * man/po4a/po/man-db.pot: Update. + +Tue Mar 4 09:24:40 GMT 2008 Colin Watson <cjwatson@debian.org> + + * gnulib: Upgrade to 20080301. + +Tue Mar 4 09:18:43 GMT 2008 Colin Watson <cjwatson@debian.org> + + * src/man.c (options): Force --extension to appear after --sections + in --help output. + +Mon Mar 3 21:46:36 GMT 2008 Colin Watson <cjwatson@debian.org> + + * man/po4a/po/man-db.pot: Update. + +Sun Mar 2 12:41:13 GMT 2008 Colin Watson <cjwatson@debian.org> + + * po/man-db.pot, po/*.po: Update. + +Sun Mar 2 12:37:43 GMT 2008 Colin Watson <cjwatson@debian.org> + + * src/man.c (options): Describe --recode's argument as ENCODING, not + CODE (thanks, Benno Schulenberg). + +Sun Mar 2 12:35:28 GMT 2008 Colin Watson <cjwatson@debian.org> + + * src/man.c (options), src/manpath.c (options), src/whatis.c + (options): Use a unified description for --systems (thanks, Benno + Schulenberg). + +Sun Mar 2 12:29:57 GMT 2008 Colin Watson <cjwatson@debian.org> + + * src/manconv.c (args_doc, options): Describe argument to -f as + "CODE[:...]" rather than "CODE:..." (thanks, Benno Schulenberg). + +Sun Mar 2 12:28:40 GMT 2008 Colin Watson <cjwatson@debian.org> + + * man/man1/man.man1 (OPTIONS): Reorganise into subsections, with + options listed in the same order as in 'man --help' output. + * src/man.c (options, parse_opt): Rearrange a few options slightly + so that the ordering makes more sense. + +Sun Mar 2 11:56:48 GMT 2008 Colin Watson <cjwatson@debian.org> + + * man/man1/man.man1, src/encodings.c, src/encodings.h, + src/lexgrog_test.c: Update copyright notices. + +Sun Mar 2 11:03:21 GMT 2008 Colin Watson <cjwatson@debian.org> + + Improve 'man -E' to allow overriding the output encoding explicitly, + rather than implicitly (and unreliably) by changing the *roff device + (Debian bug #466396). + + * src/encodings.c (device_table): Add stub entries for troff + devices. + (is_roff_device): New function. + * src/encodings.h (is_roff_device): Add prototype. + * src/man.c (options): Change description of -E to allow general + encoding selection. + (parse_opt): Only assign the argument of -E to roff_device if it + is actually a *roff device; otherwise it is presumed to be a true + character encoding and stored in want_encoding. Remove + different_encoding, since testing whether want_encoding is set + supersedes that. + (make_roff_command): If want_encoding is set and is not a *roff + device, recode to it rather than to the locale's encoding. + (display, try_section, display_filesystem, display_database): Test + want_encoding rather than different_encoding. + * man/man1/man.man1 (OPTIONS): Adjust documentation of -E. + * docs/NEWS: Document this. + + * src/lexgrog_test.c (options): Bring description of -E into sync + with man. + +Sat Mar 1 22:14:43 GMT 2008 Colin Watson <cjwatson@debian.org> + + * src/encodings.c (get_roff_encoding): In the CJK UTF-8 special + case, check the canonicalised encoding in order that locale + specifications such as "zh_CN.utf8" work (Debian bug #467249). + +Fri Feb 29 09:59:23 GMT 2008 Colin Watson <cjwatson@debian.org> + + * autogen.sh: Run autoreconf with -f. + * tools/config.guess, tools/config.sub, tools/depcomp, + tools/install-sh, tools/ylwrap: Update. + +Thu Feb 28 10:47:22 GMT 2008 Colin Watson <cjwatson@debian.org> + + * src/lexgrog.l: Terminate MAN_NAME at .ie or .if conditionals + (Debian bug #467444). + +Sun Feb 17 17:17:16 GMT 2008 Colin Watson <cjwatson@debian.org> + + * src/manp.c (def_path): Fix brace indentation. + +Sun Feb 17 17:13:55 GMT 2008 Colin Watson <cjwatson@debian.org> + + * gnulib: Import the strsignal module. + * lib/pipeline.c (pipeline_wait): Call strsignal rather than + xstrsignal. + * lib/xstrsignal.c: Remove. + * lib/README (xstrsignal): Remove. + * lib/Makefile.am (libman_a_SOURCES): Remove xstrsignal.c. + * include/manconfig.h.in (xstrsignal): Remove. + * m4/man-strsignal.m4: Remove. + * configure.ac (MAN_FUNC_STRSIGNAL): Remove. + +Sun Feb 17 16:59:22 GMT 2008 Colin Watson <cjwatson@debian.org> + + * Makefile.in, aclocal.m4, config.h.in, configure, docs/Makefile.in, + gnulib, lib/Makefile.in, libdb/Makefile.in, man/Makefile.in, + man/de/Makefile.in, man/es/Makefile.in, man/fr/Makefile.in, + man/it/Makefile.in, man/ja/Makefile.in, manual/Makefile.in, + src/Makefile.in, tools/Makefile.in: Upgrade to Automake 1.10.1 and + Gnulib 20080201. + +Mon Feb 4 08:28:33 GMT 2008 Colin Watson <cjwatson@debian.org> + + * src/man_db.conf.in: Make /usr/local/share/man mandatory rather + than /usr/local/man (thanks, Reuben Thomas; Debian bug #463892). + +Fri Feb 1 09:01:34 GMT 2008 Colin Watson <cjwatson@debian.org> + + * man/replace.sin.in: Strip off ".if !'po4a'hide' " from input + manual pages. It's a no-op except for po4a's purposes, and + removing it helps non-groff manual page renderers. + +Mon Jan 28 08:54:47 GMT 2008 Colin Watson <cjwatson@debian.org> + + * docs/man-db.lsm: Update to 2.5.1. + +Mon Jan 28 08:47:51 GMT 2008 Colin Watson <cjwatson@debian.org> + + * Version: 2.5.1. + * po/man-db.pot, po/*.po: Update. + +Sun Jan 27 22:48:32 GMT 2008 Colin Watson <cjwatson@debian.org> + + Support Korean when configured with support for the multibyte groff + patch (thanks, Hansun Lee; Ubuntu bug #176896). + + * src/encodings.c (compatible_encodings): Allow EUC-KR -> UTF-8. + (get_roff_encoding): Handle ko_KR.UTF-8 via devutf8. + +Sun Jan 27 13:42:31 GMT 2008 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.c (pipeline_join): Initialise source, buffer, buflen, + bufmax, line_cache, and peek_offset. + +Sun Jan 27 13:37:17 GMT 2008 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.h (struct pipeline): Add ignore_signals member. + * lib/pipeline.c (pipeline_new): Initialise ignore_signals to 1. + (pipeline_join): Set ignore_signals if either input pipeline has + it set. + (pipeline_start): Only ignore SIGINT and SIGQUIT if ignore_signals + is set. + (pipeline_wait): Only restore SIGINT and SIGQUIT if ignore_signals + is set. + * lib/decompress.c (decompress_open, decompress_fdopen): Set + ignore_signals to 0 so that SIGINT and SIGQUIT are not ignored + just because a decompression process is running (Debian bug + #462276). + * docs/NEWS: Document this. + +Thu Jan 24 17:12:24 GMT 2008 Colin Watson <cjwatson@debian.org> + + * include/manconfig.h.in (INTERRUPTED): Remove. + * src/man.c (int_handler): Remove; this is useless and + non-signal-safe. + (main): Don't set SIGINT to int_handler. + +Thu Jan 17 09:13:04 GMT 2008 Ming Hua <minghua-guest@users.alioth.debian.org> + + * po/zh_CN.po: Update from Translation Project. + +Tue Jan 15 18:45:22 GMT 2008 Yuri Kozlov <kozlov.y@gmail.com> + + * po/ru.po: Update from Translation Project. + * man/THANKS: Update e-mail address. + +Tue Jan 15 14:37:15 GMT 2008 Colin Watson <cjwatson@debian.org> + + * m4/man-bdb.m4: Add WITH-DB option; make ACTION-IF-FOUND optional; + define BDB_H and BTREE. + * configure.ac: Make Berkeley DB checks more concise using the + above. + +Tue Jan 15 12:31:12 GMT 2008 Colin Watson <cjwatson@debian.org> + + * configure.ac: Remove unused AC_HEADER_STDC. + +Tue Jan 15 08:42:27 GMT 2008 Clytie Siddall <clytie@riverland.net.au> + + * po/vi.po: Update from Translation Project. + +Tue Jan 15 08:39:56 GMT 2008 Benno Schulenberg <benno@vertaalt.nl> + + * po/nl.po: Update from Translation Project. + +Tue Jan 15 00:01:39 GMT 2008 Colin Watson <cjwatson@debian.org> + + * m4/man-compress-lib.m4: New function, MAN_COMPRESS_LIB: like + AC_CHECK_LIB but adds the library to LIBCOMPRESS rather than LIBS. + * configure.ac: Use it for -lz. + * src/Makefile.am (lexgrog_LDADD, man_LDADD, manconv_LDADD, + mandb_LDADD, zsoelim_LDADD): Add $(LIBCOMPRESS). + +Mon Jan 14 15:29:55 GMT 2008 Colin Watson <cjwatson@debian.org> + + * configure.ac: Don't check for strerror; Gnulib supplies a + replacement now. + +Mon Jan 14 13:59:18 GMT 2008 Colin Watson <cjwatson@debian.org> + + * src/mandb.c (xcopy): Set the new file's mode to DBMODE in order to + try to defend against strange problems with databases being left + world-unreadable (Debian bug #430800). + +Mon Jan 14 00:55:22 GMT 2008 Colin Watson <cjwatson@debian.org> + + * man/po4a/po/man-db.pot: Update. + +Mon Jan 14 00:16:57 GMT 2008 Colin Watson <cjwatson@debian.org> + + * Version: 2.5.1-pre2. + * po/man-db.pot, po/*.po: Update. + +Mon Jan 14 00:00:21 GMT 2008 Colin Watson <cjwatson@debian.org> + + * src/lexgrog_test.c (parse_opt): Use argp_error rather than + error/argp_usage. Suggested by Ivan Shmakov. + * src/man.c (parse_opt): Likewise. + * src/manconv.c (parse_opt): Likewise. + +Sun Jan 13 23:35:27 GMT 2008 Ivan Shmakov <oneingray@gmail.com> + + Add a command-line option to man to enable groff warnings. + + * src/man.c (enum opts, struct string_llist): New types. + (default_roff_warnings, roff_warnings): Set defaults. + (options, parse_opt): Accept --warnings. + (make_roff_command): Add warnings to groff command line. + * man/man1/man.man1 (SYNOPSIS, OPTIONS): Document --warnings. + * docs/NEWS: Document this. + +Thu Jan 10 09:24:19 GMT 2008 Colin Watson <cjwatson@debian.org> + + * src/man.c (local_man_loop): Guess language based on absolute path + to provided file, rather than relative (Debian bug #460014). + +Mon Jan 7 17:28:54 GMT 2008 Colin Watson <cjwatson@debian.org> + + * gnulib/lib/xmalloc.patch: Add commentary. + +Mon Jan 7 15:30:56 GMT 2008 Yuri Kozlov <kozlov.y@gmail.com> + + * po/ru.po: Update from Translation Project. + +Mon Jan 7 11:38:19 GMT 2008 Colin Watson <cjwatson@debian.org> + + * man/replace.sin: Rename to ... + * man/replace.sin.in: ... this. + * configure.ac (AC_CONFIG_FILES): Generate man/replace.sin. + * man/Rules.man (CLEANFILES, replace.sed, .man1.1, .man5.5, + .man8.8): Generate replace.sed at 'make' time so that + $(config_file) is substituted properly. Reported by Peter + Breitenlohner. + * .bzrignore: Update. + +Mon Jan 7 11:14:04 GMT 2008 Peter Breitenlohner <peb@mppmu.mpg.de> + + * manual/Makefile.am: Use soelim with -I$(srcdir). + + * man/Rules.man (mandir): Append the language so that Automake can + handle translated manual pages. + (install-data-local, uninstall-local): Removed in favor of rules + generated by Automake. + (CLEANFILES, dist-hook): Go back to using man*_MANS. + (all-am): Remove explicit dependencies. + * man/Makefile.am, man/de/Makefile.am, man/es/Makefile.am, + man/fr/Makefile.am, man/it/Makefile.am, man/ja/Makefile.am: Go + back to using man*_MANS. + + * man/man8/accessdb.man8, man/fr/man8/accessdb.man8: Fix typo (-V, + not -v). + + * manual/Makefile.am (.pp.ps): Use groff -Tps, not -Tdvi. + + * src/Makefile.am (install-data-hook): Don't (try to) overwrite + existing config files. + + * src/Makefile.am (bin_SCRIPTS, all-am, install-exec-hook, + uninstall-hook): Remove apropos from bin_SCRIPTS, explicitly + depend on it from all-am, and manually create a whatis->apropos + symlink at install time; installing the symlink from the build + directory using bin_SCRIPTS would install a second copy (not + stripped by "make install-strip"). + +Mon Jan 7 09:54:12 GMT 2008 Colin Watson <cjwatson@debian.org> + + * configure.ac: Stop checking for memory.h (not used) and limits.h + (guaranteed by C89). + * lib/hashtable.c, libdb/db_ver.c, src/convert_name.c, + src/descriptions.c, src/filenames.c: Remove unnecessary #include + <stdio.h>. + * libdb/db_delete.c, libdb/db_lookup.c, libdb/db_store.c, + src/manpath.c: Remove unnecessary #include <assert.h>. + * libdb/mydbm.h, src/catman.c, src/man.c, src/manpath.c: Include + <limits.h> unconditionally. + * src/convert_name.c: Remove unnecessary #include <unistd.h>. + * src/man.c: Remove unnecessary #include <sys/file.h> and + <sys/wait.h>. + * src/manpath.c: Remove unnecessary #include <termios.h>. + * src/straycats.c: Remove unnecessary #include <fcntl.h>. + * src/ult_src.c: Remove S_ISLNK conditionals; Gnulib's <sys/stat.h> + wrapper deals with this. + + * lib/linelength.c (get_line_length): Remove trailing newline from + message passed to perror. + +Mon Jan 7 03:21:49 GMT 2008 Colin Watson <cjwatson@debian.org> + + * lib/gettext.h: Remove; now provided by Gnulib. + * lib/Makefile.am (libman_a_SOURCES): Remove gettext.h. + * lib/README: Remove gettext.h. + +Mon Jan 7 03:11:08 GMT 2008 Colin Watson <cjwatson@debian.org> + + * include/comp_src.h.in: Update header comment. + +Mon Jan 7 02:52:25 GMT 2008 Colin Watson <cjwatson@debian.org> + + * src/util.c (mkdbname): Replace with ... + * include/manconfig.h.in (mkdbname): ... a simpler macro. + +Mon Jan 7 02:27:59 GMT 2008 Colin Watson <cjwatson@debian.org> + + * libdb/db_btree.c, libdb/db_storage.h, libdb/mydbm.h, src/catman.c, + src/check_mandirs.c, src/convert_name.c, src/globbing.c, + src/man.c, src/man.h, src/mandb.c, src/manp.c, src/security.c, + src/security.h, src/whatis.c: Replace __inline__ with inline + everywhere. Autoconf's handling of the latter is sufficient. + * include/manconfig.h.in: Remove __inline and __inline__ + definitions. + +Mon Jan 7 02:12:26 GMT 2008 Colin Watson <cjwatson@debian.org> + + * configure.ac: Automatically detect the Debian multibyte patch to + groff. + +Mon Jan 7 01:14:39 GMT 2008 Colin Watson <cjwatson@debian.org> + + * src/accessdb.c (options, parse_opt): Accept -d/--debug. + * src/lexgrog_test.c (options, parse_opt): Likewise. + * src/zsoelim.l (options, parse_opt): Likewise. + * docs/NEWS: Document this. + +Mon Jan 7 01:08:39 GMT 2008 Colin Watson <cjwatson@debian.org> + + * src/zsoelim.l (options): Fix incorrect description of -C. + +Sun Jan 6 15:01:08 GMT 2008 Colin Watson <cjwatson@debian.org> + + sigaction is specified as non-interruptible; there is no need to + wrap it with EINTR detection. + + * lib/xsigaction.c: Remove. + * include/manconfig.h.in (xsigaction): Remove prototype. + * lib/Makefile.am (libman_a_SOURCES): Remove xsigaction.c. + * lib/README: Remove xsigaction.c. + * lib/cleanup.c (sighandler, trap_signal, untrap_signal): Call + sigaction rather than xsigaction. + * lib/pipeline.c (pipeline_start, pipeline_wait, + pipeline_install_sigchld, pipeline_pump): Call sigaction rather + than xsigaction. + +Sun Jan 6 14:46:36 GMT 2008 Colin Watson <cjwatson@debian.org> + + * po/nl.po: Update with msgmerge. + +Sun Jan 6 14:45:09 GMT 2008 Colin Watson <cjwatson@debian.org> + + * man/Rules.man, man/de/Makefile.am, man/es/Makefile.am, + man/fr/Makefile.am, man/it/Makefile.am, man/ja/Makefile.am: Use + LINGUA rather than LANGUAGE to name the manual page language, as + setting LANGUAGE causes 'make' output to be translated. + +Sun Jan 6 14:34:15 GMT 2008 Colin Watson <cjwatson@debian.org> + + * man/de.UTF-8, man/es.UTF-8, man/fr.UTF-8, man/it.UTF-8, + man/ja.UTF-8: Rename to ... + * man/de, man/es, man/fr, man/it, man/ja: ... these. + * .bzrignore, configure.ac, man/de/Makefile.am, man/es/Makefile.am, + man/fr/Makefile.am, man/it/Makefile.am, man/ja/Makefile.am, + man/po4a/po4a.cfg, man/THANKS: Adjust for new directory names. + +Sun Jan 6 10:20:19 GMT 2008 Colin Watson <cjwatson@debian.org> + + * gnulib: Upgrade to Debian 20080104-1. Import the unsetenv module. + * src/man.c, src/whatis.c: No longer #include "setenv.h". + +Sun Jan 6 09:57:51 GMT 2008 Clytie Siddall <clytie@riverland.net.au> + + * po/vi.po: Update from Translation Project. + +Sat Jan 5 23:15:23 GMT 2008 Ming Hua <minghua-guest@users.alioth.debian.org> + + * po/zh_CN.po: Update from Translation Project (trivial). + +Sat Jan 5 23:06:14 GMT 2008 Colin Watson <cjwatson@debian.org> + + * configure.ac: Define NLS Automake conditional from USE_NLS. + * man/Makefile.am (SUBDIRS): Define only if NLS. + +Sat Jan 5 22:54:05 GMT 2008 Colin Watson <cjwatson@debian.org> + + * man/Makefile.am, man/de.UTF-8/Makefile.am, + man/es.UTF-8/Makefile.am, man/fr.UTF-8/Makefile.am, + man/it.UTF-8/Makefile.am, man/ja.UTF-8/Makefile.am: Declare + man*_files rather than man*_MANS. Using the MANS primary causes + Automake's incorrect manual page rules to be used. + * man/Rules.man (CLEANFILES, install-data-local, uninstall-local, + dist-hook): Expect man*_files rather than man*_MANS. + (all-am): Depend on $(man*_files). + + * man/Rules.man (install-data-local, uninstall-local): Stop + stripping leading "man*/" from install location. + +Sat Jan 5 21:49:40 GMT 2008 Colin Watson <cjwatson@debian.org> + + * m4/man-gcc-warning.m4: New file. + * configure.ac: Test whether each -W option (other than -Wall) that + we want to add is supported, rather than adding it + unconditionally. Reported by Peter Breitenlohner. + +Sat Jan 5 14:12:33 GMT 2008 Ivan Shmakov <oneingray@gmail.com> + + * configure.ac: Test for existence of + "$srcdir/gnulib/po/Makefile.in.in" rather than just + gnulib/po/Makefile.in.in in order to work for VPATH builds. Also + reported by Peter Breitenlohner. + +Fri Jan 4 16:03:57 GMT 2008 Peter Breitenlohner <peb@mppmu.mpg.de> + + * src/man.c (display): Stop -W printing blank lines for manual pages + without corresponding cat pages. + +Fri Jan 4 15:59:41 GMT 2008 Colin Watson <cjwatson@debian.org> + + * src/Makefile.am: Install globbing and manconv in + $(libexecdir)/@PACKAGE@ rather than in $(pkglibdir). Reported by + Peter Breitenlohner. + +Fri Jan 4 12:44:34 GMT 2008 Peter Breitenlohner <peb@mppmu.mpg.de> + + * libdb/db_btree.c (dbstore): Rename basename argument to base to + avoid clashing with the function of the same name. + * libdb/db_storage.h (dbstore): Update prototype. + * libdb/mydbm.h (dbver_wr, dbver_rd), src/security.h + (do_system_drop_privs): Update prototype argument names to match + definition. + +Fri Jan 4 11:52:22 GMT 2008 Peter Breitenlohner <peb@mppmu.mpg.de> + + * src/man.c: Make prompt_string const. Avoids "discards qualifier" + warning when building without NLS. + +Thu Jan 3 21:39:27 GMT 2008 Colin Watson <cjwatson@debian.org> + + * gnulib: Import the lib-ignore module, to have the linker ignore + unused libraries. + +Wed Jan 2 23:30:33 GMT 2008 Colin Watson <cjwatson@debian.org> + + * lib/decompress.c (decompress_zlib), lib/linelength.c + (get_line_length), lib/pipeline.c (passthrough), src/lexgrog.l + (find_name), src/man.c (set_term, get_term, main, + make_roff_command, format_display_and_save, format_display, + display_catman, display), src/manconv.c (main), src/zsoelim.l + (open_file): Use STDIN_FILENO, STDOUT_FILENO, and STDERR_FILENO + macros rather than calling fileno. + +Wed Jan 2 16:46:46 GMT 2008 Colin Watson <cjwatson@debian.org> + + * src/accessdb.c (main), src/catman.c (main), src/globbing_test.c + (main), src/lexgrog_test.c (main), src/man.c (main), src/manconv.c + (main), src/mandb.c (main), src/manpath.c (main), src/whatis.c + (main), src/wrapper.c (main), src/zsoelim.l (main): Bind the + "man-db-gnulib" textual domain as well as "man-db". + +Wed Jan 2 00:12:48 GMT 2008 Benno Schulenberg <benno@vertaalt.nl> + + * po/nl.po: New from Translation Project. + * po/LINGUAS: Add nl. + * man/THANKS: Add translator credit. + +Tue Jan 1 15:36:23 GMT 2008 Colin Watson <cjwatson@debian.org> + + * README, src/man.c: Update copyright years. + +Tue Jan 1 15:27:51 GMT 2008 Ming Hua <minghua-guest@users.alioth.debian.org> + + * po/zh_CN.po: Update. + +Tue Jan 1 12:34:10 GMT 2008 Colin Watson <cjwatson@debian.org> + + * src/man.c (options): Add -s as an alias for -S (Debian bug + #458499). + (parse_opt): Accept it. + (get_section_list): Allow the section list to be separated by + commas as well as colons. + * man/man1/man.man1 (OPTIONS): Document -s and comma-separation. + * docs/NEWS: Document this. + +Mon Dec 31 22:13:00 GMT 2007 Colin Watson <cjwatson@debian.org> + + * docs/HACKING (Coding style): Expand. + +Mon Dec 31 22:01:35 GMT 2007 Colin Watson <cjwatson@debian.org> + + * include/manconfig.h.in: Remove obsolete definitions of VERSION and + DATE and declaration of ver. + * src/zsoelim.l: Remove obsolete definition of STATIC_VER. + +Mon Dec 31 17:00:19 GMT 2007 Colin Watson <cjwatson@debian.org> + + * lib/hashtable.c (hash_lookup_structure): New function; same as + previous hash_lookup but returns a struct nlist * rather than the + value. + (hash_lookup): Rewrite in terms of hash_lookup_structure. + (hash_install): Use hash_lookup_structure rather than hash_lookup + (thanks, Ivan Shmakov; should fix Debian bug #374708). + +Mon Dec 31 16:15:26 GMT 2007 Colin Watson <cjwatson@debian.org> + + * lib/hashtable.c (hash_install): Fix head comment to match reality + (thanks, Ivan Shmakov). + +Mon Dec 31 15:45:31 GMT 2007 Colin Watson <cjwatson@debian.org> + + * docs/HACKING (Revision control): Mention that the bzr archive now + requires bzr 0.15 or later. + +Mon Dec 31 15:31:08 GMT 2007 Colin Watson <cjwatson@debian.org> + + * Version: 2.5.1-pre1. + * po/man-db.pot, po/*.po: Update. + +Mon Dec 31 10:02:28 GMT 2007 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.c (passthrough): New helper function. + (pipeline_connect): Add special (kludge) handling for zero-command + sinks. + (pipeline_pump): Add minor commentary. + * src/man.c (options, parse_opt): New -R/--recode option. + (make_roff_command): If --recode is used, suppress external + formatters and all processing filters, and force the output + encoding to the argument to --recode. + (display): If --recode is used, force display to stdout and + suppress cat pages. + (try_section, display_filesystem, display_database): Don't show + cat pages or follow .so links for --recode. + * src/util.c (lang_dir): Handle relative filenames starting with + "man/". + * man/man1/man.man1 (OPTIONS): Document --recode. + * docs/NEWS: Document this. + +Fri Dec 14 10:06:21 GMT 2007 Colin Watson <cjwatson@debian.org> + + * src/whatis.c (options): Note that --exact is for apropos only. + +Fri Dec 14 09:39:06 GMT 2007 Colin Watson <cjwatson@debian.org> + + Convert from getopt to argp for option parsing. This invalidates + many translations, but this should be the last time; in future, a + changes in a single option will only affect translations of the help + strings for that option, not the program's entire help string. + + * gnulib: Import the argp and lock modules. + * autogen.sh: Hack around a tools/config.rpath clash between Gnulib + and gettext. + * configure.ac (CFLAGS): Add -Wno-missing-field-initializers for + GCC. + * .bzrignore: Add gnulib/lib/strings.h, po/remove-potcdate.sed, and + tools/config.rpath.*. + + * src/version.c: Remove in favour of argp's --version handling. + * po/POTFILES.in: Remove src/version.c. + * src/Makefile.am (accessdb_SOURCES, catman_SOURCES, + globbing_SOURCES, lexgrog_SOURCES, man_SOURCES, manconv_SOURCES, + mandb_SOURCES, manpath_SOURCES, whatis_SOURCES, wrapper_SOURCES, + zsoelim_SOURCES): Remove version.c. + + * src/accessdb.c (long_options, args, usage): Remove. + (argp_program_version, argp_program_bug_address, + argp_err_exit_status, args_doc, doc, options, parse_opt, + help_filter, argp): Add. + (main): Switch from getopt_long to argp_parse. Use error (FATAL) + for database read errors rather than error (0); usage (FAIL). + * src/catman.c (long_options, args, usage): Remove. + (argp_program_version, argp_program_bug_address, + argp_err_exit_status, args_doc, options, parse_opt, argp): Add. + (catman, do_catman, parse_for_sec): Rename argp to args. + (main): Switch from getopt_long to argp_parse. + * src/globbing_test.c (long_options, args, usage): Remove. + (argp_program_version, argp_program_bug_address, + argp_err_exit_status, args_doc, options, parse_opt, argp): Add. + (main): Switch from getopt_long to argp_parse. + * src/lexgrog_test.c (long_options, args, usage): Remove. + (argp_program_version, argp_program_bug_address, + argp_err_exit_status, args_doc, doc, options, parse_opt, argp): + Add. + (main): Switch from getopt_long to argp_parse. + * src/man.c (long_options, args, usage, man_getopt): Remove. + (argp_program_version, argp_program_bug_address, + argp_err_exit_status, args_doc, options, parse_opt, help_filter, + argp): Add. + (do_extern): Adjust iteration over arguments. + (main): Switch from getopt_long to argp_parse. Initialise + html_pager early for use in --help. + * src/man.h (man_getopt): Remove prototype. + * src/manconv.c (long_options, args, usage): Remove. + (argp_program_version, argp_program_bug_address, + argp_err_exit_status, args_doc, options, parse_opt, argp): Add. + (main): Switch from getopt_long to argp_parse. + * src/mandb.c (long_options, args, usage): Remove. + (argp_program_version, argp_program_bug_address, + argp_err_exit_status, args_doc, options, parse_opt, argp): Add. + (main): Switch from getopt_long to argp_parse. + * src/manpath.c (long_options, args, usage): Remove. + (argp_program_version, argp_program_bug_address, + argp_err_exit_status, options, parse_opt, argp): Add. + (main): Switch from getopt_long to argp_parse. + * src/whatis.c (long_options, args, apropos_usage, whatis_usage, + usage): Remove. + (argp_program_version, argp_program_bug_address, + argp_err_exit_status, args_doc, apropos_doc, options, parse_opt, + apropos_argp, whatis_argp): Add. + (main): Switch from getopt_long to argp_parse. Suppress --exact + and --and options in the whatis case. + * src/zsoelim.l (long_options, args, usage, ver): Remove. + (argp_program_version, argp_program_bug_address, + argp_err_exit_status, args_doc, options, parse_opt, argp): Add. + (main): Switch from getopt_long to argp_parse. + * po/POTFILES.in: Add zsoelim.l. + +Thu Dec 13 17:20:51 GMT 2007 Colin Watson <cjwatson@debian.org> + + * autogen.sh: Permit gnulib-tool to be missing; in that case, just + run autoreconf. + +Thu Dec 13 11:36:26 GMT 2007 Colin Watson <cjwatson@debian.org> + + * configure.ac (AM_GNU_GETTEXT_VERSION): Upgrade to gettext 0.17. + * gnulib: Upgrade to Debian 20071201+dfsg-1. + * README (Copyright and licensing): New section. Explain the + implications of Gnulib components being distributed under GPL v3. + * .bzrignore: Ignore gnulib/lib/fcntl.h. + +Mon Nov 26 08:37:30 GMT 2007 Colin Watson <cjwatson@debian.org> + + * docs/HACKING (Utility functions to use): Rename to ... + (Facilities and portability): ... this. Add comments on Gnulib and + C89/C99. + +Sun Nov 25 21:11:34 GMT 2007 Colin Watson <cjwatson@debian.org> + + * docs/HACKING (Revision control): Add advice on docs/ChangeLog + practice in branches. + +Sun Nov 25 21:01:22 GMT 2007 Colin Watson <cjwatson@debian.org> + + * src/encodings.c (get_roff_encoding): Just use the fallback + encoding if device is NULL, rather than crashing. Bug reported by + Ivan Shmakov. + +Sun Nov 25 18:51:16 GMT 2007 Ivan Shmakov <oneingray@gmail.com> + + * man/Rules.man: replace.sed lives in $(top_builddir)/man, not + $(top_srcdir)/man. + +Sat Nov 24 10:45:50 GMT 2007 Colin Watson <cjwatson@debian.org> + + * src/man.c (make_roff_command): If the environment variable + MANROFFOPT is set, append its contents to the *roff command line + (thanks, Ivan Shmakov; Debian bug #451187). + * man/man1/man.man1 (ENVIRONMENT): Document MANROFFOPT. + * docs/NEWS: Document this. + +Mon Nov 19 19:41:18 GMT 2007 Colin Watson <cjwatson@debian.org> + + * configure.ac (AM_INIT_AUTOMAKE): Require Automake 1.10. Ming Hua + reported that Automake 1.9 doesn't have the MKDIR_P feature we + depend on. + +Tue Nov 13 22:10:51 GMT 2007 Colin Watson <cjwatson@debian.org> + + * src/whatis.c (use_grep, do_whatis, word_fnmatch, search, main): + Rename regex to regex_opt, as Solaris' <libgen.h> defines a regex + function (thanks to the Nexenta developers). + +Mon Nov 12 19:24:00 GMT 2007 Colin Watson <cjwatson@debian.org> + + * src/accessdb.c (main), src/globbing_test.c (main), + src/lexgrog_test.c (main), src/zsoelim.l (main): Enable + localisation (Debian bug #448395). + +Sun Nov 11 05:43:16 GMT 2007 Colin Watson <cjwatson@debian.org> + + * configure.ac: Issue a useful error message if + gnulib/po/Makefile.in.in does not exist (reported by Ming Hua). + +Mon Oct 22 00:04:45 BST 2007 Colin Watson <cjwatson@debian.org> + + Bruno Haible notes in + http://lists.gnu.org/archive/html/groff/2005-12/msg00061.html that + setlocale is supported on all known systems, and it is in C89. Use + it unconditionally. + + * configure.ac: Don't check for setlocale. + * src/catman.c (parse_for_sec), src/man.c (main), src/manp.c + (add_nls_manpath), src/whatis.c (main): Remove HAVE_SETLOCALE + conditionals. + +Sun Oct 21 21:56:02 BST 2007 Colin Watson <cjwatson@debian.org> + + * configure.ac: Forbid output tokens beginning with "MAN_". + +Sun Oct 21 21:52:43 BST 2007 Colin Watson <cjwatson@debian.org> + + * configure.ac: Rationalise use of comments. Use more vertical + whitespace. + +Sun Oct 21 21:12:46 BST 2007 Colin Watson <cjwatson@debian.org> + + * gnulib: Import .po files (--po-base=gnulib/po --po-domain=man-db). + * configure.ac (AC_CONFIG_FILES): Generate gnulib/po/Makefile.in. + * Makefile.am (SUBDIRS): Build gnulib/po. + * .bzrignore: Ignore gnulib/po. This is contrary to our usual + practice, since this is generated by autogen.sh; but gnulib-tool + gives us full .po files which are then stripped down to just the + parts of Gnulib we use by make, so adding them to bzr is + inconvenient. + +Sun Oct 21 19:46:26 BST 2007 Colin Watson <cjwatson@debian.org> + + * src/man.c (man_getopt): Fix reversed handling of -f and -k in the + "incompatible options" message. + +Sun Oct 21 19:43:27 BST 2007 Colin Watson <cjwatson@debian.org> + + * configure.ac (CFLAGS): Add -Wformat-security. + * src/man.c (man_getopt): Use %s as the format string for the + "incompatible options" message since the message itself is not a + string literal. (This is only a security problem in the presence + of hostile translators.) + +Sun Oct 21 17:59:13 BST 2007 Colin Watson <cjwatson@debian.org> + + * man/Rules.man (SED_ARGS): Move to ... + * man/replace.sin: ... here. + * man/Rules.man (.man1.1, .man5.5, .man8.8): Use replace.sed to + shorten build output. + * configure.ac (AC_CONFIG_FILES): Generate man/replace.sed from + man/replace.sin. + * .bzrignore: Ignore man/replace.sed. + +Sun Oct 21 13:38:09 BST 2007 Colin Watson <cjwatson@debian.org> + + * src/check_mandirs.c (purge_missing): If there is no content, that + might just be because the key was already freed while purging an + earlier multi key, so skip to the next key rather than breaking + out of the loop. + +Sun Oct 21 13:33:38 BST 2007 Colin Watson <cjwatson@debian.org> + + * configure.ac: Check for gdbm_exists in DBLIBS as well as LIBS. + Remove unused gdbm_setopt check. + +Sun Oct 21 01:25:00 BST 2007 Colin Watson <cjwatson@debian.org> + + * configure.ac (AC_INIT): Pass a BUG-REPORT argument. + +Sat Oct 20 18:27:13 BST 2007 Colin Watson <cjwatson@debian.org> + + * gnulib/lib/xmalloc.c (xstrdup): Explicitly tolerate a NULL + argument, returning NULL in that case. (Also sent to Gnulib + upstream.) + * gnulib/lib/xmalloc.patch: Add, with the above change in patch + format. + * autogen.sh: Apply xmalloc.patch after updating Gnulib. + +Sat Oct 20 18:20:07 BST 2007 Colin Watson <cjwatson@debian.org> + + * gnulib/lib/asnprintf.c, gnulib/lib/asprintf.c, + gnulib/lib/float+.h, gnulib/lib/float_.h, + gnulib/lib/printf-args.c, gnulib/lib/printf-args.h, + gnulib/lib/printf-parse.c, gnulib/lib/printf-parse.h, + gnulib/lib/size_max.h, gnulib/lib/stdio_.h, + gnulib/lib/vasnprintf.c, gnulib/lib/vasnprintf.h, + gnulib/lib/vasprintf.c, gnulib/lib/xasprintf.c, + gnulib/lib/xsize.h, gnulib/lib/xvasprintf.c, + gnulib/lib/xvasprintf.h, gnulib/m4/eoverflow.m4, + gnulib/m4/float_h.m4, gnulib/m4/intmax_t.m4, + gnulib/m4/inttypes_h.m4, gnulib/m4/size_max.m4, + gnulib/m4/stdarg.m4, gnulib/m4/stdint_h.m4, gnulib/m4/stdio_h.m4, + gnulib/m4/vasnprintf.m4, gnulib/m4/vasprintf.m4, + gnulib/m4/wchar_t.m4, gnulib/m4/xsize.m4, gnulib/m4/xvasprintf.m4: + Import the Gnulib xvasprintf module. + * .bzrignore: Update. + + * libdb/mydbm.h: Add MYDBM_RESET_DSIZE and MYDBM_SET convenience + macros, to obsolete most direct uses of MYDBM_SET_DPTR and + MYDBM_DSIZE. Code that just wants to put a string in a datum + should use MYDBM_SET. + * libdb/db_btree.c (dbstore), libdb/db_delete.c (dbdelete): Use + MYDBM_SET. + * libdb/db_lookup.c (make_multi_key): Use MYDBM_SET and xasprintf. + (make_content): Likewise. Collapse ANSI_SPRINTF #ifdef, no longer + needed. + (dblookup): Use MYDBM_SET. + * libdb/db_ndbm.c (ndbm_flopen): Use xasprintf. + * libdb/db_store.c (dbstore): Use MYDBM_SET and xasprintf. + * libdb/db_ver.c (dbver_rd, dbver_wr): Use MYDBM_SET. + * src/check_mandirs.c (update_db_time): Use MYDBM_SET and xasprintf. + (reset_db_time, update_db): Use MYDBM_SET. + * src/filenames.c (make_filename): Use xasprintf. + * src/man.c (setenv_less): Use xasprintf. + + * m4/man-ansi-sprintf.m4, configure.ac (MAN_FUNC_ANSI_SPRINTF): + Remove. + +Sat Oct 20 14:30:44 BST 2007 Colin Watson <cjwatson@debian.org> + + * configure.ac: Remove redundant check for getcwd. + +Thu Oct 18 01:51:06 BST 2007 Colin Watson <cjwatson@debian.org> + + * src/wrapper.c: Include "config.h" right at the top and with a + HAVE_CONFIG_H guard, like other files. + +Thu Oct 18 01:41:41 BST 2007 Colin Watson <cjwatson@debian.org> + + * lib/pathsearch.c, src/man.c, src/mandb.c, src/manp.c: Include + "xgetcwd.h" rather than <xgetcwd.h>, as suggested by gnulib-tool. + +Thu Oct 18 01:37:22 BST 2007 Colin Watson <cjwatson@debian.org> + + * src/manp.c (cat_manpath): Whitespace adjustments. + +Thu Oct 18 01:15:25 BST 2007 Colin Watson <cjwatson@debian.org> + + * src/man.c: PIPE_BUF is no longer used, so don't define it. + +Wed Oct 17 22:34:32 BST 2007 Colin Watson <cjwatson@debian.org> + + * gnulib/lib/minmax.h, gnulib/m4/minmax.m4: Import the Gnulib minmax + module. + * src/man.c (duplicate_candidates): Use it. + * src/util.c: Remove unused definition of MAX. + + Regenerate all build system files. (Future ChangeLog entries will + not mention this.) + +Wed Oct 17 22:22:25 BST 2007 Colin Watson <cjwatson@debian.org> + + * gnulib/lib/strerror.c, gnulib/m4/strerror.m4: Import the Gnulib + strerror module. + + Regenerate all build system files. + +Wed Oct 17 21:05:50 BST 2007 Colin Watson <cjwatson@debian.org> + + Use the Gnulib portability library. + + * lib/alloca.c, lib/basename.c, lib/error.c, lib/error.h, + lib/fnmatch.c, lib/fnmatch_.h, lib/getcwdalloc.c, + lib/getcwdalloc.h, lib/getopt.c, lib/getopt1.c, lib/getopt_.h, + lib/glob.c, lib/glob_.h, lib/memcmp.c, lib/mkdtemp.c, + lib/mkstemp.c, lib/putenv.c, lib/realpath.c, lib/rename.c, + lib/setenv.c, lib/setenv.h, lib/strcspn.c, lib/strnlen.c, + lib/strsep.c, lib/tempname.c, lib/unsetenv.c, lib/xmalloc.c, + lib/xstrdup.c, lib/xstrndup.c, m4/man-fnmatch.m4, m4/setenv.m4, + m4/tempname.m4: Remove. + * gnulib/*, tools/link-warning.h: Import atexit, canonicalize, + dirname, error, fnmatch-gnu, getopt, glob, memcmp, mkdtemp, + mkstemp, regex, rename, setenv, strcspn, strsep, sys_select, + xalloc, xgetcwd, and xstrndup modules. + * .bzrignore: Update. + * Makefile.am (SUBDIRS): Build gnulib/lib. + (ACLOCAL_AMFLAGS): Add -I gnulib/m4. + * autogen.sh: Add gnulib-tool --update. + * configure.ac: Call gl_EARLY and gl_INIT. + Remove calls to AC_AIX and AC_MINIX. + Stop checking for unistd.h, regex.h, libgen.h, string.h, and + strings.h headers. + Stop checking for alloca, memcmp, strcoll, vprintf, getwd, atexit, + on_exit, canonicalize_file_name, regcomp, re_comp, globfree, + getopt_long, putenv, realpath, rename, basename, strsep, strcspn, + strnlen, mkdtemp, mkstemp, setenv, and __gen_tempname functions. + Generate gnulib/lib/Makefile. + * docs/HACKING: Document policy on generated files in revision + control. + * include/manconfig.h.in: Replace xmalloc, xrealloc, xstrdup, and + xstrndup declarations with inclusions of xalloc.h and xstrndup.h. + Stop defining basename, strsep, and getcwd. + * lib/Makefile.am (libman_a_CPPFLAGS): Include headers from + gnulib/lib. + (libman_a_SOURCES): Remove error.c, error.h, getcwdalloc.c, + getcwdalloc.h, setenv.h, xmalloc.c, xstrdup.c, and xstrndup.c. + (libman_a_LIBADD): Remove $(ALLOCA). + (BUILT_SOURCES, MOSTLYCLEANFILES, EXTRA_DIST, fnmatch.h, getopt.h, + glob.h): Remove; replaced by Gnulib. + * lib/README: Alphabetise, update file list, and update authors. + * libdb/Makefile.am (libmandb_a_CPPFLAGS): Include headers from + gnulib/lib. + * src/Makefile.am (AM_CPPFLAGS): Include headers from gnulib/lib. + (LIBMAN): Link with gnulib/lib/libgnu.a. + + * lib/cleanup.c: Assume <unistd.h> and atexit. + * lib/decompress.c, lib/flock.c: Assume <unistd.h>. + * lib/pathsearch.c: Assume <unistd.h>. + (pathsearch): Use xgetcwd. + * lib/pipeline.c: Assume <sys/select.h> and <unistd.h>. Remove + duplicate <fcntl.h> inclusion. + (command_new): Use base_name. + * lib/tempfile.c, lib/xstrsignal.h: Assume <unistd.h>. + * libdb/db_btree.c: Assume <unistd.h>. + * libdb/db_btree.c, libdb/db_lookup.c: Assume <unistd.h> and strsep. + * libdb/db_ndbm.c: Assume <unistd.h>. + * libdb/db_store.c: Assume <unistd.h> and strsep. + * src/accessdb.c (main): Use base_name. + * src/catman.c: Assume <unistd.h>. + (main): Use base_name. + * src/check_mandirs.c: Assume <unistd.h>, strpbrk, and time. + (test_manfile): Use base_name. Rename existing base_name variable + to manpage_base. + (reset_db_time): Use dir_name. + * src/compression.c, src/convert_name.c: Assume <unistd.h>. + * src/filenames.c: Remove unused <libgen.h> inclusion. + * src/globbing_test.c (main): Use base_name. + * src/lexgrog.l, src/lexgrog.l-2.3.8, src/lexgrog.l-2.4a, + src/lexgrog.l.new: Assume <unistd.h>. + * src/lexgrog_test.c (main): Use base_name. + * src/man.c: Assume <unistd.h>. + (gripe_no_man): Use unsetenv rather than putenv. + (local_man_loop): Use base_name. + (main): Use base_name and xgetcwd. + (make_roff_command): Use setenv rather than putenv. + (format_display): Use xgetcwd and base_name. + * src/manconv.c: Assume <unistd.h>. + (main): Use base_name. + * src/mandb.c: Assume <unistd.h>. + (main): Use base_name and xgetcwd. + * src/manp.c: Assume <unistd.h>. + (add_dir_to_path_list): Use xgetcwd. + * src/manpath.c: Assume <unistd.h>. + (main): Use base_name. + * src/security.c: Assume <unistd.h>. + * src/straycats.c: Assume <unistd.h>. + (check_for_stray): Use base_name. Assume canonicalize_file_name. + * src/ult_src.c: Assume <unistd.h>. + (ult_softlink): Use canonicalize_file_name. + * src/ult_src.c: Assume <unistd.h>. + * src/whatis.c: Assume <unistd.h> and <sys/types.h>. + (use_grep, parse_name, parse_whatis, search, main): Assume POSIX + regex functions (provided by Gnulib's regex module). + (main): Use base_name. + * src/wrapper.c (main): Use base_name. + * src/zsoelim.l: Assume <unistd.h>. + (main): Use base_name. + + * docs/NEWS: Document this. + + Drop remaining bits of pre-C89 compatibility. + + * lib/ansidecl.h, lib/strspn.c, lib/strstr.c: Remove. + * configure.ac: Stop checking for strstr and strspn. + * include/manconfig.h.in: Remove VOID definition. + * lib/Makefile.am (libman_a_SOURCES): Remove ansidecl.h. + * lib/appendstr.c, lib/decompress.c, lib/flock.c, lib/hashtable.c, + lib/pathsearch.c, lib/tempfile.c, libdb/db_btree.c, + libdb/db_delete.c, libdb/db_gdbm.c, libdb/db_lookup.c, + libdb/db_ndbm.c, libdb/db_store.c, libdb/db_ver.c, src/accessdb.c, + src/catman.c, src/check_mandirs.c, src/compression.c, + src/convert_name.c, src/descriptions.c, src/descriptions_store.c, + src/encodings.c, src/fake_security.c, src/filenames.c, + src/globbing.c, src/globbing_test.c, src/lexgrog.l, + src/lexgrog.l-2.3.8, src/lexgrog.l-2.4a, src/lexgrog.l.new, + src/lexgrog_test.c, src/man.c, src/manconv.c, src/mandb.c, + src/manp.c, src/manpath.c, src/security.c, src/straycats.c, + src/ult_src.c, src/util.c, src/version.c, src/whatis.c, + src/zsoelim.l: Assume C89 declaration syntax, headers, and + functions. + * docs/NEWS: Document this. + + * configure.ac (--enable-mandirs): Improve grammar. + + Regenerate all build system files using autogen.sh. + +Mon Oct 15 10:15:48 BST 2007 Colin Watson <cjwatson@debian.org> + + * docs/NEWS: Document previous change. + +Mon Oct 15 10:13:57 BST 2007 Colin Watson <cjwatson@debian.org> + + * src/manconv.c (check_preprocessor_encoding): Allow only + alphanumerics and "-_/:.()" in encoding names (Debian bug + #446055). This matches everything in 'iconv --list' on my system. + (try_iconv): Include encoding names in error message if iconv_open + fails. + +Mon Oct 15 10:06:51 BST 2007 Colin Watson <cjwatson@debian.org> + + * man/Rules.man (.man1.1, .man5.5, .man8.8): Use $(MKDIR_P) rather + than hardcoding mkdir -p. + * man/Makefile.in, man/de.UTF-8/Makefile.in, + man/es.UTF-8/Makefile.in, man/fr.UTF-8/Makefile.in, + man/it.UTF-8/Makefile.in, man/ja.UTF-8/Makefile.in: Regenerate. + +Sun Oct 14 02:39:43 BST 2007 Colin Watson <cjwatson@debian.org> + + * src/Makefile.am (AM_CPPFLAGS): Fix SOELIM definition. + * src/Makefile.in: Regenerate. + +Sun Oct 14 01:20:07 BST 2007 Colin Watson <cjwatson@debian.org> + + * .bzrignore: Restore some ignores needed in intl/. + +Sun Oct 14 01:16:23 BST 2007 Colin Watson <cjwatson@debian.org> + + Add most files generated by autogen.sh to revision control, as it + makes it easier to keep track of what the Autotools are doing. + autom4te.cache and po/Makevars.template are explicitly still + ignored; the former is junk and the latter is only necessary in the + gettext-tools package. + + * ABOUT-NLS, aclocal.m4, config.h.in, configure, intl/ChangeLog, + intl/Makefile.in, intl/VERSION, intl/bindtextdom.c, + intl/config.charset, intl/dcgettext.c, intl/dcigettext.c, + intl/dcngettext.c, intl/dgettext.c, intl/dngettext.c, + intl/eval-plural.h, intl/explodename.c, intl/export.h, + intl/finddomain.c, intl/gettext.c, intl/gettextP.h, intl/gmo.h, + intl/hash-string.c, intl/hash-string.h, intl/intl-compat.c, + intl/intl-exports.c, intl/l10nflist.c, intl/langprefs.c, + intl/libgnuintl.h.in, intl/loadinfo.h, intl/loadmsgcat.c, + intl/localcharset.c, intl/localcharset.h, intl/locale.alias, + intl/localealias.c, intl/localename.c, intl/lock.c, intl/lock.h, + intl/log.c, intl/ngettext.c, intl/os2compat.c, intl/os2compat.h, + intl/osdep.c, intl/plural-exp.c, intl/plural-exp.h, intl/plural.c, + intl/plural.y, intl/printf-args.c, intl/printf-args.h, + intl/printf-parse.c, intl/printf-parse.h, intl/printf.c, + intl/ref-add.sin, intl/ref-del.sin, intl/relocatable.c, + intl/relocatable.h, intl/textdomain.c, intl/vasnprintf.c, + intl/vasnprintf.h, intl/vasnwprintf.h, intl/version.c, + intl/wprintf-parse.h, intl/xsize.h, m4/codeset.m4, m4/gettext.m4, + m4/glibc2.m4, m4/glibc21.m4, m4/iconv.m4, m4/intdiv0.m4, + m4/intl.m4, m4/intldir.m4, m4/intmax.m4, m4/inttypes-pri.m4, + m4/inttypes_h.m4, m4/lcmessage.m4, m4/lib-ld.m4, m4/lib-link.m4, + m4/lib-prefix.m4, m4/lock.m4, m4/longdouble.m4, m4/longlong.m4, + m4/nls.m4, m4/po.m4, m4/printf-posix.m4, m4/progtest.m4, + m4/size_max.m4, m4/stdint_h.m4, m4/uintmax_t.m4, m4/ulonglong.m4, + m4/visibility.m4, m4/wchar_t.m4, m4/wint_t.m4, m4/xsize.m4, + po/Makefile.in.in, 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, tools/config.rpath, + tools/depcomp, tools/missing, tools/ylwrap: New files. + * .bzrignore: Update. + +Sun Oct 14 01:04:41 BST 2007 Colin Watson <cjwatson@debian.org> + + * autogen.sh: Use 'autoreconf -i' rather than reinventing the wheel. + +Sun Oct 14 00:53:14 BST 2007 Colin Watson <cjwatson@debian.org> + + * po/man-db.pot, po/*.po: Update. + +Sun Oct 14 00:49:31 BST 2007 Colin Watson <cjwatson@debian.org> + + * man/Rules.man (clean-local): Remove; we don't need to worry about + removing empty directories in separated build trees. + * man/Makefile.in, man/de.UTF-8/Makefile.in, + man/es.UTF-8/Makefile.in, man/fr.UTF-8/Makefile.in, + man/it.UTF-8/Makefile.in, man/ja.UTF-8/Makefile.in: Regenerate. + +Sun Oct 14 00:40:26 BST 2007 Colin Watson <cjwatson@debian.org> + + * man-db.lsm: Move to ... + * docs/man-db.lsm: ... here. + * Makefile.am, docs/Makefile.am: Move man-db.lsm reference. + * Makefile.in, docs/Makefile.in: Regenerate. + +Sun Oct 14 00:33:10 BST 2007 Colin Watson <cjwatson@debian.org> + + * README: Remove several restrictions lifted by the conversion to + Automake. Remove documentation of how to install native language + manual pages, since this is now done unconditionally. Remove + documentation of the update target, which no longer exists and + should no longer be needed. + + * docs/NEWS: Document conversion to Automake. + +Sun Oct 14 00:22:31 BST 2007 Colin Watson <cjwatson@debian.org> + + Convert to Automake. This fixes VPATH builds, fixes a number of bugs + in areas such as dependency generation, provides new features such + as 'make distcheck', moves complexity into autogenerated code, and + prepares the way for using Gnulib more effectively. + + * makefile.in, include/Defines.in: Remove. + * GNUmakefile.in, lib/Makefile.in, libdb/Makefile.in, + man/Makefile.in, manual/Makefile.in, src/Makefile.in: Translate to + Automake and move to ... + * Makefile.am, lib/Makefile.am, libdb/Makefile.am, man/Makefile.am, + manual/Makefile.am, src/Makefile.am: ... here. + * docs/Makefile.am, tools/Makefile.am: Build these directories + separately. + * man/Rules.man, man/de.UTF-8/Makefile.am, man/es.UTF-8/Makefile.am, + man/fr.UTF-8/Makefile.am, man/it.UTF-8/Makefile.am, + man/ja.UTF-8/Makefile.am: Build manual pages recursively, as it + makes VPATH builds easier. + * Makefile.in, docs/Makefile.in, lib/Makefile.in, libdb/Makefile.in, + man/Makefile.in, man/de.UTF-8/Makefile.in, + man/es.UTF-8/Makefile.in, man/fr.UTF-8/Makefile.in, + man/it.UTF-8/Makefile.in, man/ja.UTF-8/Makefile.in, + manual/Makefile.in, src/Makefile.in, tools/Makefile.in: Add + generated files. + * README: Remove mention of include/Defines. + * autogen.sh: Call automake-1.10 --add-missing --copy. + * m4/man-trans-subst.m4: New macro. + * configure.ac: Various changes for Automake. AC_SUBST man_owner, + and set man_mode rather than man_install_flags. Set + config_file_dirname. Calculate transformed versions of program + names (using MAN_TRANS_SUBST) here for use in Automake variables. + * docs/HACKING (Directory layout): Mention automake. + + Arrange that each file only needs to be built once. + + * src/globbing.c: Split main program out to ... + * src/globbing_test.c: ... here. + * src/lexgrog.l: Split main program out to ... + * src/lexgrog_test.c: ... here. + * po/POTFILES.in: Add src/globbing_test.c and src/lexgrog_test.c. + * src/whatis.c (args, long_options): Include -a/--and + unconditionally. + (usage): Replace with a wrapper selecting between ... + (apropos_usage, whatis_usage): ... these. + (apropos, whatis): Rename to ... + (do_apropos, do_whatis): ... these, respectively. + (use_grep, do_whatis, parse_name, match, do_apropos, search, + main): Use run-time conditionals rather than compile-time + conditionals. + (main): Detect whether we are being invoked as "apropos" or + "whatis" and adjust behaviour accordingly. + * src/Makefile.am: Adjust for the above. Make apropos a symlink to + whatis. + + Make VPATH builds work, and simplify some includes. + + * configure.ac, m4/man-fnmatch.m4: Define FNMATCH_H, GETOPT_H, and + GLOB_H to the respective header names if system versions do not + exist. + * lib/hashtable.h: Remove unnecessary libdb includes. + * lib/decompress.h, lib/glob.c, libdb/db_btree.c, libdb/db_delete.c, + libdb/db_gdbm.c, libdb/db_lookup.c, libdb/db_ndbm.c, + libdb/db_storage.h, libdb/db_store.c, libdb/db_ver.c, + src/accessdb.c, src/catman.c, src/check_mandirs.c, + src/check_mandirs.h, src/compression.c, src/convert_name.c, + src/descriptions.h, src/descriptions_store.c, src/encodings.c, + src/fake_security.c, src/filenames.c, src/filenames.h, + src/globbing.c, src/lexgrog.l, src/lexgrog.l-2.3.8, + src/lexgrog.l-2.4a, src/lexgrog.l.new, src/man.c, src/manconv.c, + src/mandb.c, src/manp.c, src/manpath.c, src/security.c, + src/straycats.c, src/ult_src.c, src/util.c, src/version.c, + src/whatis.c, src/wrapper.c, src/zsoelim.l: Remove lib/ and libdb/ + prefixes from includes. Include <fnmatch.h>, <getopt.h>, and + <glob.h> directly rather than using a forest of #ifdefs, since the + copies in lib/ are now not built if a system version exists. + + * .bzrignore: Update. + +Sat Oct 13 15:04:06 BST 2007 Colin Watson <cjwatson@debian.org> + + * lib/popen.c, m4/man-pclose.m4: Remove; we no longer need popen or + pclose. + * configure.ac: Remove call to MAN_FUNC_PCLOSE. + +Sat Oct 13 11:55:21 BST 2007 Colin Watson <cjwatson@debian.org> + + * configure.ac: Add --with-sections option to change the default + value of SECTION. + * src/man_db.conf.in: Use its output. + * docs/NEWS: Document this. + +Fri Oct 12 12:22:52 BST 2007 Colin Watson <cjwatson@debian.org> + + * docs/NEWS: Start 2.5.1. + +Fri Oct 12 11:57:50 BST 2007 Colin Watson <cjwatson@debian.org> + + * src/manconv.c (try_iconv): If we need to try the next encoding in + the list, make sure to do that before writing the output buffer. + +Fri Oct 12 10:21:07 BST 2007 Colin Watson <cjwatson@debian.org> + + * src/whatis.c (use_grep): Add trailing newline to debugging output. + +Fri Oct 12 01:47:49 BST 2007 Colin Watson <cjwatson@debian.org> + + * src/manconv.c (try_iconv): Improve debugging output slightly. + +Fri Oct 12 01:43:25 BST 2007 Colin Watson <cjwatson@debian.org> + + * src/man.c (format_display_and_save, format_display, + display_catman): Only discard stderr from formatting processes if + stdout is a terminal. + +Fri Oct 12 01:32:52 BST 2007 Colin Watson <cjwatson@debian.org> + + * src/encodings.c (device_table): groff's ascii device only supports + ASCII input, not ISO-8859-1. + (compatible_encodings): If the output is ASCII, this is probably + because the caller explicitly asked for it, so allow recoding to + it unconditionally. + +Fri Oct 12 00:48:42 BST 2007 Colin Watson <cjwatson@debian.org> + + * src/whatis.c (main): locale is a constant pointer; free + internal_locale instead (Debian bug #446302). + +Thu Oct 11 01:40:51 BST 2007 Colin Watson <cjwatson@debian.org> + + * src/man.c (display): Free format_cmd on two more early return + paths. + +Thu Oct 11 00:53:31 BST 2007 Colin Watson <cjwatson@debian.org> + + * src/man.c (display): I don't think it's possible for decomp to be + NULL on the display_to_stdout path, but better safe than sorry. + +Thu Oct 11 00:38:56 BST 2007 Colin Watson <cjwatson@debian.org> + + * src/man.c (display): Connect up the decompression pipeline in the + display_to_stdout case too (Debian bug #446189). + (checked_system): Remove, no longer used. + +Thu Oct 11 00:21:49 BST 2007 Colin Watson <cjwatson@debian.org> + + * src/man.c (make_roff_command): Perform input encoding conversion + for troff output as well as nroff output. + +Wed Oct 10 09:39:53 BST 2007 Colin Watson <cjwatson@debian.org> + + * man/man8/mandb.man8 (DATABASE CACHES): Fix "occured" typo (thanks, + Alfie Costa; Debian bug #446044). + +Mon Oct 8 02:24:19 BST 2007 Colin Watson <cjwatson@debian.org> + + * lib/popen.c (popen), src/descriptions.c (parse_descriptions), + src/man.c (add_candidate), src/manp.c (add_dir_to_path_list): Use + xmalloc instead of malloc. + * lib/pipeline.c (get_block): Use xrealloc instead of realloc. + +Mon Oct 8 02:15:47 BST 2007 Colin Watson <cjwatson@debian.org> + + * docs/HACKING: Minor release process adjustment now that we're no + longer using CVS. + +Mon Oct 8 02:13:15 BST 2007 Colin Watson <cjwatson@debian.org> + + * README: Building the manual requires running ./configure now. + +Mon Oct 8 02:09:55 BST 2007 Colin Watson <cjwatson@debian.org> + + The strappend function is in the namespace reserved by C99 + 7.26.10/7.26.11; rename it to appendstr. + + * lib/strappend.c: Rename to ... + * lib/appendstr.c: ... this. Rename function. + * lib/Makefile.in (ALLSRCS, ALL): Build appendstr instead of + strappend. + * lib/README: Update credit. + * include/manconfig.h.in: Update prototype. + * lib/decompress.c, lib/pathsearch.c, lib/pipeline.c, + lib/tempfile.c, libdb/db_delete.c, src/accessdb.c, src/catman.c, + src/check_mandirs.c, src/compression.c, src/convert_name.c, + src/encodings.c, src/filenames.c, src/globbing.c, + src/lexgrog.l.new, src/man.c, src/manconv.c, src/mandb.c, + src/manp.c, src/straycats.c, src/ult_src.c, src/util.c, + src/whatis.c, src/zsoelim.l: Update all callers. + * docs/HACKING: Update reference. + * docs/TODO: Remove item for this. + +Mon Oct 8 01:21:10 BST 2007 Colin Watson <cjwatson@debian.org> + + * GNUmakefile.in (_man): Ship po4a files. + (dist): Create the necessary directories. + +Mon Oct 8 01:16:07 BST 2007 Colin Watson <cjwatson@debian.org> + + Build the manual automatically. This avoids problems trying to do a + distclean (distclean at the top level runs ./config.status --recheck + and regenerates manual/Makefile, but manual/Makefile requires + include/Defines to exist, so there is no way to distclean both the + top level and manual/). + + * GNUmakefile.in (EVERYTHING, ALL): Add manual. + (_subdirs): Remove manual, now included in $(EVERYTHING). + +Sun Oct 7 17:05:54 BST 2007 Colin Watson <cjwatson@debian.org> + + * Version: 2.5.0. + * configure.ac, docs/NEWS, man-db.lsm: Update. + +Sun Oct 7 17:01:47 BST 2007 Colin Watson <cjwatson@debian.org> + + * src/lexgrog.l (ja_name): Add another possible translation. + +Sun Oct 7 15:19:15 BST 2007 Colin Watson <cjwatson@debian.org> + + * manual/Makefile.in (distclean): Remove Makefile. + +Sun Oct 7 14:28:27 BST 2007 Colin Watson <cjwatson@debian.org> + + * po/man-db.pot, po/*.po: Update. + +Sun Oct 7 14:24:31 BST 2007 Ming Hua <minghua-guest@users.alioth.debian.org> + + * po/zh_CN.po: New translation. + * po/LINGUAS: Add zh_CN. + * man/THANKS: Add translator credit. + +Wed Sep 26 17:57:44 BST 2007 Colin Watson <cjwatson@debian.org> + + * src/util.c (escape_shell): '=' is conceivably a shell + metacharacter if used in the first word of a command (although I + can't see anywhere in man-db where this might actually happen, + barring very unlikely settings of $BROWSER). + +Wed Sep 26 17:51:45 BST 2007 Colin Watson <cjwatson@debian.org> + + * src/globbing.c (look_for_file): Don't escape the hierarchy path; + it isn't necessary and it causes problems for paths containing + metacharacters (Debian bug #444187). + * src/globbing.h (look_for_file): Update prototype. + +Tue Sep 18 11:29:26 BST 2007 Colin Watson <cjwatson@debian.org> + + * man/po4a/po4a.cfg: Add po4a mechanism for manual page translation, + as the Simplified Chinese translator would like to use this. + * man/po4a/po/man-db.pot: Add generated file. + + * man/man1/apropos.man1, man/man1/lexgrog.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: Some strings should not + be translated. Use the ".if !'po4a'hide'" idiom to mark them. + * man/man1/man.man1 (OVERVIEW): Adjust some spacing. + +Tue Sep 18 08:59:55 BST 2007 Colin Watson <cjwatson@debian.org> + + * src/encodings.c (directory_table): Switch Simplified Chinese to + GBK by default. Ming Hua points out that GBK is a superset of + EUC-CN, and indeed all Simplified Chinese manual pages I can find + can be recoded from GBK without hassle. I'm less certain about + changing the output encoding, but for CJK encodings it's best for + these to be the same at the moment. + +Mon Sep 17 16:13:37 BST 2007 Daniel Nylander <po@danielnylander.se> + + * po/sv.po: Update from Translation Project. + +Mon Sep 17 14:27:15 BST 2007 Clytie Siddall <clytie@riverland.net.au> + + * po/vi.po: Update from Translation Project. + +Mon Sep 17 00:34:17 UTC 2007 Colin Watson <cjwatson@debian.org> + + * src/lexgrog.l (ja_name): Oops; make the first translation keep + working! + +Mon Sep 17 00:26:27 UTC 2007 Colin Watson <cjwatson@debian.org> + + * src/lexgrog.l (ja_name): Add another possible translation. + +Mon Sep 17 00:11:38 UTC 2007 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.c (pipeline_start): Break after execvp, otherwise we + segfault if execvp fails. + +Sun Sep 16 23:15:27 BST 2007 Colin Watson <cjwatson@debian.org> + + * Version: 2.5.0-pre2. + * man-db.lsm (Keywords): Add manconv. + +Sun Sep 16 20:41:36 BST 2007 Colin Watson <cjwatson@debian.org> + + * GNUmakefile.in (__distclean): Remove config.status.lineno. + * .bzrignore: Ignore ./config.status.lineno. + +Sun Sep 16 20:38:32 BST 2007 Colin Watson <cjwatson@debian.org> + + * man/Makefile.in: Deal more neatly with manual pages without + complete sets of translations. + +Sun Sep 16 20:25:24 BST 2007 Colin Watson <cjwatson@debian.org> + + Add more intelligent guessing of manual page encodings. Thanks to + Adam Borowski for discussion leading to this. + + * src/manconv.c: New program. + * man/man1/manconv.man1: Document it. + * .bzrignore: Ignore src/manconv. + * include/Defines.in (manconv): Add. + * man/Makefile.in (manconv, thmanconv, manconv.1): Add. + (process_manpage): Add manconv and thmanconv. + (allmanpages): Add ./man1/manconv.1. + (nlsinstall): Install manconv.1. + (nlsuninstall): Uninstall manconv.1. + * src/Makefile.in (PRIVTOOLS, all): Add manconv. + * po/POTFILES.in: Add src/manconv.c. + * po/man-db.pot, po/*.po: Update. + + * src/man.c (PP_COOKIE): Move to ... + * include/manconfig.h.in (PP_COOKIE): ... here. + + * src/encodings.c (add_manconv): New function to use manconv instead + of iconv where appropriate. + * src/encodings.h (add_manconv): Add prototype. + * src/lexgrog.l (find_name): Use it. + * src/man.c (make_roff_command): Use it. Remove coding: preprocessor + string handling, as manconv deals with that now. + * src/straycats.c (check_for_stray): Use it. + * src/Makefile.in (DEFS_encodings.o): Add, defining location of + manconv. + + * docs/NEWS: Document this. + +Sun Sep 16 12:41:05 BST 2007 Colin Watson <cjwatson@debian.org> + + * src/catman.c (main), src/globbing.c (main), src/lexgrog.l (main), + src/man.c (man_getopt), src/mandb.c (main), src/manpath.c (main), + src/whatis.c (main), src/zsoelim.l (main): Pass NULL as the fifth + argument to getopt_long rather than requiring an unused variable. + +Tue Sep 11 13:49:33 BST 2007 Clytie Siddall <clytie@riverland.net.au> + + * po/vi.po: Update from Translation Project. + +Mon Sep 10 10:29:40 BST 2007 Colin Watson <cjwatson@debian.org> + + * docs/TODO: Miscellaneous updates. + +Mon Sep 10 10:26:57 BST 2007 Colin Watson <cjwatson@debian.org> + + * docs/INSTALL.autoconf: Update to instructions from Autoconf 2.61. + +Mon Sep 10 10:20:23 BST 2007 Colin Watson <cjwatson@debian.org> + + * manual/misc.me (NLS message catalogues): Update Translation + Project URL. + +Mon Sep 10 10:17:43 BST 2007 Colin Watson <cjwatson@debian.org> + + * manual/Makefile: Rename to ... + * manual/Makefile.in: ... this. Write out a version file with the + current version of man-db. + * manual/man_db.me: Use the automatically-generated version file + rather than hardcoding the version. Set the manual version to + simply the version of man-db. + * configure.ac (AC_CONFIG_FILES): Add manual/Makefile. + * GNUmakefile.in (_manual): Distribute manual/Makefile.in rather + than manual/Makefile. + * .bzrignore: Update. + +Mon Sep 10 09:17:17 BST 2007 Colin Watson <cjwatson@debian.org> + + * Version: 2.5.0-pre1. I mistakenly used version 2.4.5-pre1 earlier. + +Mon Sep 10 09:11:05 BST 2007 Clytie Siddall <clytie@riverland.net.au> + + * po/vi.po: Update from Translation Project. + +Mon Sep 10 00:15:31 BST 2007 Colin Watson <cjwatson@debian.org> + + * configure.ac (AM_GNU_GETTEXT_VERSION): Upgrade to gettext 0.16.1. + * .bzrignore: Update ignores. + +Sun Sep 9 23:49:37 BST 2007 Daniel Nylander <po@danielnylander.se> + + * po/sv.po: Update from Translation Project. + +Sun Sep 9 22:50:22 BST 2007 Colin Watson <cjwatson@debian.org> + + * manual/format.me (Format scripts): Adjust for renaming of + tools/mandb_[nt]fmt-script to tools/mandb_fmt-script. + +Sun Sep 9 21:03:25 BST 2007 Colin Watson <cjwatson@debian.org> + + * manual/comp.me (Compressed manual pages): Using compressed manual + pages is perfectly reasonable these days; stop recommending + against it. + +Sun Sep 9 20:57:16 BST 2007 Colin Watson <cjwatson@debian.org> + + * manual/files.me (Displaying latin1 characters on a Linux virtual + terminal): Rename to ... + (Displaying non-ASCII characters on a Linux virtual terminal): ... + this. Mention console-tools as an alternative to kbd. Remove + detailed advice on configuring kbd as it is now woefully out of + date. Recommend the UTF-8 encoding again. + +Sun Sep 9 20:49:59 BST 2007 Colin Watson <cjwatson@debian.org> + + * manual/files.me (NLS manual pages): Update for new per-locale + directory handling. Recommend UTF-8 encoding. + +Sun Sep 9 19:39:36 BST 2007 Colin Watson <cjwatson@debian.org> + + * manual/intro.me (The manual page system): Refer to /usr/share/man + rather than /usr/man. + * manual/sec.me (Package specific manual page sections): Likewise. + * manual/files.me (Manual page hierarchies, Other OS's manual pages, + NLS manual pages): Likewise. + * manual/leader.me: Update copyright years. + +Sun Sep 9 19:24:56 BST 2007 Colin Watson <cjwatson@debian.org> + + * docs/NEWS: Reorder, roughly by importance. + +Sun Sep 9 09:01:30 BST 2007 Colin Watson <cjwatson@debian.org> + + * GNUmakefile.in (_root): Add autogen.sh to the distribution; it's + useful if you need to change autotools input files. + +Sun Sep 9 08:37:04 BST 2007 Colin Watson <cjwatson@debian.org> + + * Version: 2.4.5-pre1 (for translators). + * po/man-db.pot, po/*.po: Update. + +Mon Sep 3 14:34:06 BST 2007 Colin Watson <cjwatson@debian.org> + + * src/manp.c (add_nls_manpath): Handle the POSIX locale the same way + as C. + +Mon Sep 3 13:48:13 BST 2007 Colin Watson <cjwatson@debian.org> + + * man/man1/whatis.man1 (OPTIONS): Refer to whatis rather than + apropos in description of --manpath. + +Mon Sep 3 13:45:30 BST 2007 Nicolas François <nicolas.francois@centraliens.net> + + * man/man1/apropos.man1 (ENVIRONMENT): Remove stray space in + description of POSIXLY_CORRECT. Patch from Debian bug #281811. + +Mon Sep 3 13:26:19 BST 2007 Colin Watson <cjwatson@debian.org> + + * src/encodings.c (directory_table): Add Bulgarian -> CP1251 and + Vietnamese -> TCVN5712-1. + * src/lexgrog.l (bg_name, vi_name): Add. + +Mon Sep 3 12:15:55 BST 2007 Colin Watson <cjwatson@debian.org> + + * src/check_mandirs.c (test_manfile): Fix comment typos and + formatting. + +Mon Sep 3 12:01:36 BST 2007 Colin Watson <cjwatson@debian.org> + + * .bzrignore: Update for manual directory renaming. + * GNUmakefile.in (nls_man): Likewise. + +Mon Sep 3 11:56:58 BST 2007 Colin Watson <cjwatson@debian.org> + + * man/de_DE.88591, man/es_ES.88591, man/fr_FR.88591, + man/it_IT.88591, man/ja_JP.eucJP: Rename to ... + * man/de.UTF-8, man/es.UTF-8, man/fr.UTF-8, man/it.UTF-8, + man/ja.UTF-8: ... these. Recode all contents to UTF-8. + * man/Makefile.in (NLS): Adjust directory search. + * man/THANKS: Update credits. + +Mon Sep 3 11:38:11 BST 2007 Colin Watson <cjwatson@debian.org> + + Create and use databases for non-English manual hierarchies (Debian + bug #29448). Extensive changes elsewhere to support this by means of + better UTF-8 handling and knowledge of more languages. + + * src/check_mandirs.c (make_database_directory): New function. + (create_db, update_db): Use it. + (purge_missing): Check that the database exists before starting. + * src/mandb.c (process_manpath): New function, split out from main. + Make the single_filename check aware that the file might be in a + per-locale subdirectory that we aren't processing right now. + (main): Use it. Move man_owner, purged, and strays to file scope. + Build databases for all per-locale subdirectories. + * src/straycats.c (straycats): Constify manpath argument. + * src/whatis.c (main): Sync locale handling with src/man.c, in order + to look up per-locale databases correctly. Based on a patch by + Nicolas François (Debian bug #281811). + * include/manconfig.h.in (straycats): Update prototype. + + * src/man.c (duplicate_candidates): New function to determine + whether candidates are substantially duplicated, and if so in + which direction. The logic is better than before: it now knows how + to compare locales and pick the best available candidate for each + language, and prefers UTF-8 candidates if everything else is + equal. + (add_candidate): Move duplication logic to duplicate_candidates. + Adjust insertion handling so that we can drop old candidates in + favour of new candidates. + * src/manp.c (check_and_give): Remove. + (unpack_locale_bits): New function, inspired by _nl_explode_name + in libintl. + (free_locale_bits): New function. + (add_nls_manpath): Instead of trying individual directories (which + doesn't work so well with character set aliasing), iterate over + all subdirectories of each manpath entry and add all those + matching the current locale's language and (if specified) + territory. This now includes ll.CODESET as well as more + conventional locale names. + * src/manp.h: Declare 'struct locale_bits'. Prototype + unpack_locale_bits and free_locale_bits. + + * src/man.c (lang_dir): Move to ... + * src/util.c (lang_dir): ... here. + * src/lexgrog.l (long_options, args, main): New -E/--encoding + option. + (usage): Document it. + (cs_name, hu_name, ja_name, ru_name): Recode to UTF-8. + (find_name): Add encoding argument. Guess the page's encoding from + its filesystem location (or use encoding if supplied), and add an + iconv command to recode it to UTF-8. + * man/man1/lexgrog.man1 (SYNOPSIS, OPTIONS): Document --encoding. + * src/straycats.c (check_for_stray): Guess the page's encoding from + its filesystem location, and add an iconv command to recode it to + UTF-8. + * src/whatis.c (simple_convert): New function to simplify iconv + handling. + (display): Convert output from UTF-8 to locale charset. + (main): Initialise iconv descriptor. + * include/manconfig.h.in (find_name): Update prototype. + (lang_dir): Add prototype. + * configure.ac: Call AM_ICONV. + * src/Makefile.in (mandb, lexgrog): Add encodings.o. + * src/Makefile.in (whatis, apropos): Add encodings.o and + $(LIBICONV). + + * src/encodings.c (directory_table): Add Serbian -> ISO-8859-5. + * src/lexgrog.l (cs_name, hu_name): Expand character classes + containing non-ASCII characters into the form (a|b|...); flex + doesn't understand Unicode well enough to deal with them + otherwise. + (cs_name, ru_name): Add more possible translations. + (ko_name, sk_name, sr_name, tr_name, zh_CN_name, zh_TW_name): Add. + (find_name_decompressed): Ignore exit status from decompressor + pipeline; iconv may exit non-zero on misencoded pages, but if we + manage to extract a whatis from it anyway then it doesn't really + matter. + + * src/whatis.c (usage): Document -L/--locale. + * man/man1/apropos.man1 (SYNOPSIS, OPTIONS): Likewise. + * man/man1/whatis.man1 (SYNOPSIS, OPTIONS): Likewise. + + * docs/NEWS: Document this. + +Sun Sep 2 01:21:11 BST 2007 Colin Watson <cjwatson@debian.org> + + Add limited character set aliasing support. + + * src/encodings.c (charset_alias_table): New table for common + character set aliases. + (get_canonical_charset_name): New function to inspect + charset_alias_table. + (get_page_encoding): Use get_canonical_charset_name. Adjust FHS + commentary, since we now support its craziness. + (get_standard_output_encoding): Use get_canonical_charset_name. + (get_locale_charset): Likewise. + * src/encodings.h: Prototype get_canonical_charset_name. + + * src/encodings.c (directory_table): Use EUC-CN rather than GB2312 + and BIG5HKSCS rather than BIG5-HKSCS (canonical names according to + glibc's /usr/lib/gconv/gconv-modules). + (charset_table): Likewise. + (compatible_encodings): Likewise. + +Sun Sep 2 00:49:27 BST 2007 Colin Watson <cjwatson@debian.org> + + * lib/decompress.c (decompress_open, decompress_fdopen): Don't start + the returned pipeline. + * lib/decompress.h (decompress_open, decompress_fdopen): Note that + the caller must start the returned pipeline. + * src/lexgrog.l (find_name): Start the decompressor pipeline. + * src/man.c (display): Likewise. + * src/ult_src.c (ult_src): Likewise. + * src/zsoelim.l (open_file): Likewise. + * src/straycats.c (check_for_stray): Append 'col -bx' to the + decompressor pipeline rather than connecting two pipelines + together. Don't call pipeline_wait by hand as pipeline_free will + do this for us now. + +Fri Aug 31 14:52:22 BST 2007 Colin Watson <cjwatson@debian.org> + + * src/man.c (maybe_update_file): Only recache pages automatically if + --update was given. + +Fri Aug 31 04:54:45 BST 2007 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.c (pipeline_free): Call pipeline_wait if the pipeline + is still running. + * lib/pipeline.h (pipeline_free): Document that this may happen. + +Fri Aug 31 04:46:04 BST 2007 Colin Watson <cjwatson@debian.org> + + * src/zsoelim.l (main): Call pipeline_install_sigchld. + +Wed Aug 29 17:12:52 BST 2007 Lars Wirzenius <liw@iki.fi> + + * po/fi.po: Adjust translation of "No manual entry for %s" (Debian + bug #320108). + +Wed Aug 29 15:22:54 BST 2007 Clytie Siddall <clytie@riverland.net.au> + + * po/vi.po: Update from Translation Project. + +Wed Aug 29 15:18:34 BST 2007 Daniel Nylander <po@danielnylander.se> + + * po/sv.po: Update from Translation Project. + +Wed Aug 29 12:07:38 BST 2007 Colin Watson <cjwatson@debian.org> + + * docs/NEWS: Reorganise slightly. Document mandb --quiet fixes. + +Wed Aug 29 11:57:59 BST 2007 Colin Watson <cjwatson@debian.org> + + Add an option to apropos to display only items matching all keywords + (thanks, Alfie Costa; Debian bug #259340). + + * src/whatis.c (args, long_options, main): New -a/--and option for + apropos. + (usage): Document it. + (apropos): Store a count of how many times each item has been seen + in the hashtable. If --and was given, only display an item if its + count equals the number of supplied keywords. + (main): Store the number of supplied keywords. Adjust hash free + function. + * man/man1/apropos.man1 (SYNOPSIS, OPTIONS): Document --and. + * docs/NEWS: Document this. + +Wed Aug 29 11:09:31 BST 2007 Colin Watson <cjwatson@debian.org> + + * m4/man-path-progs.m4: Rename to ... + * m4/man-check-progs.m4: ... this. Use AC_CHECK_PROGS rather than + AC_PATH_PROGS. + * configure.ac: Use AC_CHECK_PROGS rather than + AC_PATH_PROG/AC_PATH_PROGS, and MAN_CHECK_PROGS rather than + MAN_PATH_PROGS. This fixes problems due to system utilities moving + around on $PATH (Debian bug #385651). + +Wed Aug 29 10:42:08 BST 2007 Colin Watson <cjwatson@debian.org> + + * configure.ac: Move bogus makefile content ... + * makefile.in: ... here. + +Wed Aug 29 10:15:33 BST 2007 Colin Watson <cjwatson@debian.org> + + * m4/man-path-progs.m4: Define HAVE_WITH-ARG if the program is + found. + * configure.ac: Rely on the above rather than setting HAVE_GZIP, + HAVE_COMPRESS, and HAVE_BZIP2 here. + +Wed Aug 29 09:41:51 BST 2007 Colin Watson <cjwatson@debian.org> + + * src/mandb.c (main): Revert inadvertently-committed debugging + change to straycats logic. + +Wed Aug 29 09:34:50 BST 2007 Colin Watson <cjwatson@debian.org> + + * src/lexgrog.l: Add Indonesian translation of NAME. + +Wed Aug 29 09:29:36 BST 2007 Colin Watson <cjwatson@debian.org> + + * docs/NEWS: Document previous apropos change. + +Wed Aug 29 09:26:23 BST 2007 Colin Watson <cjwatson@debian.org> + + * src/whatis.c (apropos): Add output keys to a hashtable, and skip + any that have already been seen (Debian bug #259338). + (main): Create the hashtable on startup and free it on exit. + +Tue Aug 28 19:16:18 BST 2007 Colin Watson <cjwatson@debian.org> + + * src/man.c (format_display): Wait for the decomp pipeline in the + !format_cmd case too. + +Tue Aug 28 19:07:53 BST 2007 Colin Watson <cjwatson@debian.org> + + * src/man.c (display_catman): Take a decompressor pipeline argument. + Connect it to format_cmd. + (display): Update call to display_catman. + +Tue Aug 28 18:38:31 BST 2007 Colin Watson <cjwatson@debian.org> + + Add a configuration file flag (NOCACHE) to disable cat page caching + (thanks, Ralph Corderoy; Debian bug #196642). + + * src/manp.c (add_to_dirlist): Recognise NOCACHE. + * src/man.c (display): Don't save a cat page if NOCACHE is set. + * src/man_db.conf.in: Document NOCACHE. + * man/man5/manpath.man5 (FORMAT): Document NOCACHE. + * docs/NEWS: Document this. + +Tue Aug 28 17:23:26 BST 2007 Colin Watson <cjwatson@debian.org> + + * docs/NEWS: Bump to 2.5.0; I think there's now enough to justify + that. + +Tue Aug 28 17:19:16 BST 2007 Colin Watson <cjwatson@debian.org> + + Implement and use a decompression library. This allows cat pages to + be saved in the background (Debian bug #18452) and operation with a + read-only /tmp (Debian bug #165499). + + * lib/pipeline.h (struct command): Add support for commands that + consist of calling a function rather than executing a process. + (struct pipeline): Add want_infile and want_outfile members. Note + that infile and outfile default to NULL. Add source, buffer, + buflen, bufmax, line_cache, and peek_offset members. + (command_new_function, command_dump, command_tostring, + pipeline_connect, pipeline_pump, pipeline_read, pipeline_peek, + pipeline_peek_size, pipeline_peek_skip, pipeline_readline, + pipeline_peekline): New prototypes. + (pipeline_join): Update description for want_infile and + want_outfile. + * lib/pipeline.c (command_new, command_dup, command_arg, + command_argv, command_args, command_argstr, command_free): Update + for 'struct command' changes. + (command_new_function, command_dump, command_tostring): New + functions. + (pipeline_new, pipeline_join, pipeline_dump, pipeline_tostring): + Update for 'struct pipeline' changes. + (pipeline_dump): Use command_dump. + (pipeline_tostring): Use command_tostring. + (pipeline_start): Implement want_infile, want_outfile, and + function commands. Make zero-command case work properly (read + directly from input file). Flush all pending stdio output so that + subprocesses don't inherit it. + (pipeline_connect, pipeline_pump, get_block, pipeline_read, + pipeline_peek, pipeline_peek_size, pipeline_peek_skip, get_line, + pipeline_readline, pipeline_peekline): New functions. + + * lib/decompress.c, lib/decompress.h: New files, implementing a + decompression abstraction layer. + * lib/Makefile.in: Always compile decompress.c. + + * src/lexgrog.l (YY_INPUT): Define to read from a 'struct pipeline'. + (find_name): Use decompress_open/decompress_fdopen rather than + older decompression methods. Split handling once we have a + decompressor pipeline out to ... + (find_name_decompressed): ... here. + * src/check_mandirs.c (test_manfile): Remove decompression code; + find_name will handle this itself now. + * src/compression.c (create_ztemp, decompress, remove_ztemp, + get_ztemp): Remove. + * src/man.c (checked_popen): Remove. + (local_man_loop): Remove decompression code. + (get_preprocessors_from_file): Convert to peeking the first line + from a pipeline. + (get_preprocessors): Adjust arguments and + get_preprocessors_from_file call. + (remove_stdintmp, create_stdintmp): Remove. + (make_roff_command): Remove special handling of stdin, now handled + by peeking a pipeline. + (open_cat_stream): Don't start the returned pipeline. + (close_cat_stream): Remove unnecessary COMP_CAT special case. + (format_display_and_save): Take a decompressor pipeline argument. + Simplify by using pipeline_connect and pipeline_pump. + (format_display): Take a decompressor pipeline argument. Use + pipeline_connect and pipeline_pump. + (display): Use decompress_open/decompress_fdopen rather than older + decompression methods. + (display_filesystem, display_database): Drop remove_ztemp calls. + * src/straycats.c (check_for_stray): Use decompression layer. + Rearrange control flow a bit to reduce duplication. Remove use of + temporary file; use find_name_decompressed instead. Only increment + strays if find_name_decompressed succeeds. + (straycats): Remove temporary file creation. + * src/ult_src.c (ult_src): Use pipeline and decompression layers + rather than older decompression methods. + * src/zsoelim.l (YY_INPUT): Define to read from a 'struct pipeline'. + (<so>\"?[^ \t\n\"]+\"?): Call open_file only once; let it worry + about compression extensions. Decrement so_stack_ptr here if + open_file fails rather than having it do it. + (<lfname>\"?[^ \t\n\"]+\"?): Free the old value of NAME, if set. + (<<EOF>>): Clean up used pipeline and free NAME. Remove so_delete + handling. + (main): Let open_file handle stdin. + (open_file): Use decompress_open/decompress_fdopen rather than + older decompression methods. Don't decrement so_stack_ptr here on + failure. + + * configure.ac: Remove decompressor variable. Check for gzopen in + libz. + * include/manconfig.h.in (DECOMPRESSOR): Remove. + (comp_list): Declare extern here. + (create_tempfile): Remove. + (decompress, remove_ztemp, get_ztemp): Remove. + (find_name_decompressed): Add prototype. + * lib/tempfile.c (create_tempfile): Remove. We now only need + temporary directory creation. + * src/man_db.conf.in (decompressor): Remove. + + * docs/TODO: Update. + * docs/NEWS: Document this. + +Tue Aug 28 11:14:53 BST 2007 Colin Watson <cjwatson@debian.org> + + * tools/mandb_[nt]fmt-script: Rename to tools/mandb_fmt-script, + which is a rather less hostile filename. + * tools/README: Update. + * GNUmakefile.in: Update. + +Tue Aug 28 10:36:20 BST 2007 Colin Watson <cjwatson@debian.org> + + * src/straycats.c (check_for_stray): Drop privileges while opening + temporary file (previously created with dropped privileges). + +Tue Aug 28 10:31:03 BST 2007 Colin Watson <cjwatson@debian.org> + + * src/straycats.c (straycats): Regain privileges on the error path + too. + +Mon Aug 27 20:13:09 BST 2007 Colin Watson <cjwatson@debian.org> + + * src/compression.c (comp_file): Free compfile if returning NULL. + +Mon Aug 27 20:02:17 BST 2007 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.c (pipeline_wait): Re-raise SIGINT or SIGQUIT if they + terminate a subprocess. + +Mon Aug 27 19:58:19 BST 2007 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.c (pipeline_wait): Return 1 if we fail to close the + pipeline's output. + +Sun Aug 26 23:33:23 BST 2007 Colin Watson <cjwatson@debian.org> + + * src/man.c (format_display): Check whether format_cmd is NULL + before discarding stderr from it. + +Sun Aug 26 21:20:45 BST 2007 Colin Watson <cjwatson@debian.org> + + * src/man.c (checked_popen): Remove unnecessary SECURE_MAN_UID + guard; drop_effective_privs/regain_effective_privs already check + this. + * src/security.c (remove_with_dropped_privs): Likewise. The uid != + ruid check is no longer necessary now that + drop_effective_privs/regain_effective_privs handle nesting + correctly. + +Sun Aug 26 19:40:12 BST 2007 Colin Watson <cjwatson@debian.org> + + * src/man.c (make_roff_command): If MAN_KEEP_FORMATTING is set in + the environment, don't strip formatting characters with col + (Debian bug #340673). + * man/man1/man.man1 (ENVIRONMENT): Document MAN_KEEP_FORMATTING. + * docs/NEWS: Document this. + +Sun Aug 26 16:40:50 BST 2007 Colin Watson <cjwatson@debian.org> + + Suppress warnings in --quiet mode (thanks, Martin Dorey; Debian bugs + #348008, #378428, and #411220). + + * src/check_mandirs.c (test_manfile): Suppress "bad symlink" warning + under --quiet. + * src/ult_src.c (ult_hardlink): Suppress "can't search directory" + warning under --quiet. + (ult_softlink): Suppress "dangling symlinks" and "can't resolve" + warnings under --quiet. + (ult_src): Suppress "can't resolve", "is self referencing", and + "can't open" warnings under --quiet. + * src/lexgrog.l: Declare global quiet variable. + +Sun Aug 26 16:10:26 BST 2007 Colin Watson <cjwatson@debian.org> + + * src/lexgrog.l (main): Skip descriptions with NULL name or whatis. + This causes pages with no description to be flagged as parse + failures, so that automatic scanners can pick them up more easily. + +Sun Aug 26 15:08:45 BST 2007 Colin Watson <cjwatson@debian.org> + + * src/man.c (is_section): Disallow sectional extensions of + alphabetic sections, e.g. n and l from the default configuration + (Debian bug #391977). Also disallow sectional extensions beginning + with a digit (Debian bug #421481). + +Mon Aug 20 00:10:49 BST 2007 Colin Watson <cjwatson@debian.org> + + Discard stderr from formatting processes when outputting to a pager, + to avoid visual corruption from any error messages (thanks, Vincent + Lefevre; Debian bug #372939). + + * lib/pipeline.h (struct command): Add discard_err member. + * lib/pipeline.c (command_new, command_dup): Initialise discard_err. + (pipeline_start): Redirect the child's stderr to /dev/null if + discard_err is set. + * src/man.c (discard_stderr): New function to set discard_err on all + commands in a pipeline. + (format_display_and_save, format_display): Use it on format_cmd. + * docs/NEWS: Document this. + +Sun Aug 19 21:04:24 BST 2007 Colin Watson <cjwatson@debian.org> + + * src/descriptions.c (parse_descriptions): Skip name tokens + containing whitespace, as they are almost never useful as manual + page names. + * man/man1/lexgrog.1 (WHATIS PARSING), docs/NEWS: Document this. + +Sun Aug 19 21:00:20 BST 2007 Colin Watson <cjwatson@debian.org> + + * src/lexgrog.l: Skip over .ft font change requests, and the .Vb and + .Ve definitions used by pod2man to begin and end verbatim mode. + This handles some POD-generated pages better. + +Sun Aug 19 20:48:42 BST 2007 Colin Watson <cjwatson@debian.org> + + Truncate apropos/whatis output to the terminal width by default + (thanks, Dan Jacobson; Debian bug #411721). + + * lib/linelength.c: New file for terminal line length detection, + split out from src/man.c. Unlike the previous implementation, this + does its own memoisation rather than requiring explicit + initialisation. + * lib/linelength.h: Prototype get_line_length. + * lib/Makefile.in: Always compile linelength.c. + * src/man.c (line_length, store_line_length): Remove. + (get_roff_line_length): Use get_line_length. + (main): We no longer need to call store_line_length. + * src/whatis.c (args, long_options, main): New -l/--long option. + (usage): Document it. + (display): Truncate names and descriptions to fit within the + terminal width. + * man/man1/apropos.man1 (SYNOPSIS, OPTIONS, ENVIRONMENT): Document + --long and the MANWIDTH override. + * man/man1/whatis.man1 (SYNOPSIS, OPTIONS, ENVIRONMENT): Likewise. + * docs/NEWS: Document this. + +Tue Jun 26 10:48:45 BST 2007 Colin Watson <cjwatson@debian.org> + + * man/de_DE.88591/man1/man.man1 (UMGEBUNG), + man/de_DE.88591/man8/catman.man8 (BESCHREIBUNG): MANSEC -> MANSECT + (thanks, Holger Kubiak; Debian bug #430635). + +Mon Jun 18 10:19:22 BST 2007 Colin Watson <cjwatson@debian.org> + + * lib/cleanup.c (do_cleanups): Split out signal-safe processing ... + (do_cleanups_sigsafe): ... here. + (sighandler): Call do_cleanups_sigsafe rather than do_cleanups. + (push_cleanup): Add sigsafe argument to allow cleanup functions to + be flagged as non-signal-safe (e.g. freeing memory). + * lib/cleanup.h: Update prototypes. + * libdb/db_gdbm.c (man_gdbm_firstkey): hash_free cleanup is not + signal-safe. + * src/globbing.c (update_directory_cache): hash_free cleanup is not + signal-safe. + (look_for_file): globfree cleanup is not signal-safe. + * src/man.c (open_cat_stream, display_catman): unlink cleanup is + signal-safe. + * src/mandb.c (cleanup): Split out signal-safe processing ... + (cleanup_sigsafe): ... here. + (main): Call cleanup_sigsafe as well as cleanup. + * src/manp.c (read_config_file): free_config_file cleanup is not + signal-safe. + +Mon Jun 18 08:03:30 BST 2007 Colin Watson <cjwatson@debian.org> + + * lib/xstrsignal.c: Include config.h. + +Mon Jun 18 07:50:56 BST 2007 Colin Watson <cjwatson@debian.org> + + * libdb/db_btree.c (btree_close, btree_flopen, btree_replace, + btree_insert, btree_fetch, btree_exists, btree_findkey, + btree_firstkey, btree_nextkey, btree_nextkeydata): Rename dbf to + db to avoid shadowing a global variable. + * libdb/mydbm.h: Update prototypes and btree macros likewise. + +Sat May 26 10:58:11 BST 2007 Colin Watson <cjwatson@debian.org> + + * src/man.c (gripe_no_name): On reflection, borrowing the error + message from gripe_no_man is clearer if a possible section name + was specified. + * po/man-db.pot, po/*.po: Update. + +Sat May 26 10:53:58 BST 2007 Colin Watson <cjwatson@debian.org> + + * po/man-db.pot: Add to revision control. + +Sat May 26 10:52:01 BST 2007 Colin Watson <cjwatson@debian.org> + + * src/man.c (gripe_no_name): Resolve ambiguous error message when + asking for a nonexistent manual page that might also be a section + name (Debian bug #421481). + * po/*.po: Update. + +Sat May 26 10:46:56 BST 2007 Colin Watson <cjwatson@debian.org> + + * src/man.c (gripe_no_name): Complete renaming of section to sect. + +Fri May 25 21:23:05 BST 2007 Colin Watson <cjwatson@debian.org> + + Add (untested) zh_HK support. Thanks to Alex Lau for advice. + + * src/encodings.c (directory_table): Add zh_HK, defaulting to the + BIG5-HKSCS encoding. + (charset_table): Add BIG5-HKSCS, defaulting to the nippon driver. + (compatible_encodings): Recognise BIG5-HKSCS encoding. + (get_roff_encoding): Add special case for zh_HK.UTF-8 locale. + +Wed Apr 11 04:37:35 BST 2007 Colin Watson <cjwatson@debian.org> + + Add MANPAGER support. Thanks to Faidon Liambotis for the suggestion. + + * src/man.c (main): Support MANPAGER, overriding PAGER. + * man/man1/man.man1 (OPTIONS, ENVIRONMENT): Document MANPAGER. + * docs/NEWS: Document this. + +Thu Apr 5 18:00:00 BST 2007 Colin Watson <cjwatson@debian.org> + + * src/lexgrog.l: Break whatis definitions at .IP, .HP, .RS, and .RE + (thanks to Ori Avtalion for the report). + +Mon Mar 5 10:02:01 GMT 2007 Colin Watson <cjwatson@debian.org> + + * src/man_db.conf.in (MANDATORY_MANPATH): Remove /usr/X11R6/man + (Debian bug #413349). + +Sun Mar 4 10:40:49 GMT 2007 Colin Watson <cjwatson@debian.org> + + * libdb/db_gdbm.c (gdbm_exists): Rename dbf to file. + +Sun Mar 4 10:39:14 GMT 2007 Colin Watson <cjwatson@debian.org> + + * libdb/db_store.c (dbstore): Rename basename to base. + +Sun Mar 4 00:51:30 GMT 2007 Colin Watson <cjwatson@debian.org> + + Eliminate variable and function shadowing. + + * configure.ac (CFLAGS): Add -Wshadow if the compiler is GCC. + + * src/manp.c: Don't declare manpathlist here, as it's never used in + this file. + * src/catman.c, src/man.c, src/mandb.c, src/whatis.c: Declare it + here instead. + + * lib/pipeline.c (pipeline_start): Remove duplicate declarations of + set and oset. + * libdb/db_ver.c (dbver): Merge into ... + (dbver_rd): ... this, eliminating a global variable. + (dbver_rd, dbver_wr): Rename dbf to dbfile. + * src/accessdb.c (main): Don't redeclare dbf locally. + * src/check_mandirs.c (gripe_rwopen_failed): Use global database + rather than passing it as an argument. Update all callers. + * src/man.c (gripe_no_name): Rename section to sect. + (add_roff_line_length): Rename save_cat to save_cat_p. + (make_roff_command): Declare cmd only once. + (make_browser): Rename command to pattern. + (display): Rename pause to prompt. + * src/manp.c (get_manpath): Rename to ... + (get_manpath_from_path): ... this. Update all callers. + (manpath): Rename to ... + (get_manpath): ... this. Update all callers. + (add_system_manpath): Rename system to one_system. + * src/manp.h (manpath): Rename to ... + (get_manpath): ... this. + * src/ult_src.c (ult_hardlink): Rename link to base. + (ult_src): Rename basename to base. + * src/whatis.c (apropos): Rename match to got_match. + (search): Return found rather than setting the global variable + status based on it. + (main): Use search's return value, eliminating a global variable. + * src/zsoelim.l (usage): Rename status to exit_status. + (open_file): Rename decompress to decomp. + +Sat Mar 3 22:35:31 GMT 2007 Colin Watson <cjwatson@debian.org> + + * src/manp.c: Declare tmplist as static. + +Wed Feb 28 22:04:04 GMT 2007 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.c (pipeline_start): Close inputs and outputs from + other active pipelines in all subprocesses. + +Wed Feb 28 21:57:24 GMT 2007 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.c (pipeline_start): Don't ignore SIGPIPE in + subprocesses; this has undesirable consequences in some + situations. + (pipeline_wait): Flatten SIGPIPE exit statuses to zero instead. + +Tue Feb 27 20:58:31 GMT 2007 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.c (pipeline_start): Save previous value of SIGQUIT + such that it gets restored as SIGQUIT, not as SIGINT. + +Wed Feb 14 12:20:28 GMT 2007 Colin Watson <cjwatson@debian.org> + + * m4/man-path-progs.m4: New file with MAN_PATH_PROGS macro. + * configure.ac: Use MAN_PATH_PROGS where reasonable (browser, pager, + nroff, eqn, neqn, tbl, col, vgrind, refer, grap, pic, gzip, + compress, bzip2) to allow overriding the default search for + auxiliary program locations. + * docs/NEWS: Document this. + +Wed Feb 14 10:41:28 GMT 2007 Colin Watson <cjwatson@debian.org> + + * acinclude.m4: Remove and split into ... + * m4/man-ansi-sprintf.m4, m4/man-bdb.m4, m4/man-fnmatch.m4, + m4/man-gnu-nroff.m4, m4/man-pclose.m4, m4/man-strsignal.m4: ... + these new files. + * configure.ac (AC_CONFIG_SRCDIR): Use src/man.c rather than + acinclude.m4. + +Wed Feb 14 10:32:28 GMT 2007 Colin Watson <cjwatson@debian.org> + + * libdb/db_lookup.c (make_content): Restore (size_t) cast in + assertion. + +Wed Feb 14 10:30:52 GMT 2007 Colin Watson <cjwatson@debian.org> + + * libdb/db_gdbm.c (man_gdbm_nextkey): Fix MYDBM_DPTR vs. MYDBM_DSIZE + typo. + +Wed Feb 14 09:52:15 GMT 2007 Colin Watson <cjwatson@debian.org> + + * libdb/db_btree.c (test_insert): Use debug function. + + * libdb/mydbm.h (GDBM, NDBM, BTREE): Add MYDBM_DPTR, MYDBM_SET_DPTR, + and MYDBM_DSIZE accessor macros. + (BTREE): Make datum be a typedef for DBT rather than our own + struct, fixing "dereferencing type-punned pointer will break + strict-aliasing rules" warnings from GCC. Adjust MYDBM_DELETE + definition accordingly. + * libdb/db_btree.c (test_insert, btree_findkey, dbstore, dblookup): + Use MYDBM_DPTR, MYDBM_SET_DPTR, and MYDBM_DSIZE macros instead of + accessing dptr and dsize members directly. + * libdb/db_delete.c (dbdelete): Likewise. + * libdb/db_gdbm.c (parent_sortkey_hash_free, sortkey_compare, + man_gdbm_firstkey, man_gdbm_nextkey, gdbm_exists): Likewise. + * libdb/db_lookup.c (copy_datum, make_multi_key, make_content, + dblookup): Likewise. + * libdb/db_store.c (replace_if_necessary, dbstore): Likewise. + * libdb/db_ver.c (dbver, dbver_wr, dbver_rd): Likewise. + * src/accessdb.c (main): Likewise. + * src/catman.c (add_arg, parse_for_sec): Likewise. + * src/check_mandirs.c (update_db_time, reset_db_time, update_db, + purge_pointers, purge_missing): Likewise. + * src/whatis.c (apropos): Likewise. + + * libdb/db_btree.c (btree_fetch, btree_findkey, dbstore, dblookup): + Make sure that datum structures allocated on the stack are zeroed + properly. + * libdb/db_delete.c (dbdelete): Likewise. + * libdb/db_lookup.c (make_multi_key, make_content, dblookup): + Likewise. + * libdb/db_store.c (dbstore): Likewise. + * libdb/db_ver.c (dbver, dbver_wr): Likewise. + * src/check_mandirs.c (update_db_time, reset_db_time, update_db): + Likewise. + +Tue Feb 13 11:02:08 GMT 2007 Colin Watson <cjwatson@debian.org> + + * zsoelim/README: Rename to ... + * src/README.zsoelim: ... this. + * zsoelim/zsoelim.l: Rename to ... + * src/zsoelim.l: ... this. + * zsoelim/Makefile.in: Remove. + * src/Makefile.in: Build, install, and clean zsoelim. + * GNUmakefile.in: Remove references to zsoelim directory. Distribute + src/README.zsoelim. + * configure.ac: Stop producing zsoelim/Makefile. + * docs/HACKING: Remove description of zsoelim directory. + * .bzrignore: Update ignores. + +Tue Feb 13 10:52:33 GMT 2007 Colin Watson <cjwatson@debian.org> + + * zsoelim/zsoelim.l (yywrap): Remove; use %option noyywrap instead. + * zsoelim/Makefile.in (LDLIBS): zsoelim doesn't need to be linked + with LEXLIB any more. + +Mon Feb 12 18:06:42 GMT 2007 Colin Watson <cjwatson@debian.org> + + * src/Makefile.in (LFLAGS), zsoelim/Makefile.in (LFLAGS), + zsoelim/zsoelim.l: Set options using %option rather than using + command-line options. + +Mon Feb 12 17:52:11 GMT 2007 Colin Watson <cjwatson@debian.org> + + * po/ca.po, po/cs.po, po/da.po, po/de.po, po/es.po, po/fi.po, + po/fr.po, po/it.po, po/ja.po, po/pl.po, po/pt_BR.po, po/ro.po, + po/ru.po, po/sv.po, po/vi.po: Update. + +Mon Feb 12 17:44:48 GMT 2007 Colin Watson <cjwatson@debian.org> + + * lib/debug.c: New file for debugging functions. + * include/manconfig.h.in: debug -> debug_level; prototype debug and + debug_error. + * lib/Makefile.in (ALL): Add debug.o. + * Update all emissions of debugging messages to use the new + functions where possible; otherwise, debug -> debug_level. + +Mon Feb 12 13:00:42 GMT 2007 Colin Watson <cjwatson@debian.org> + + * src/mandb.c (main): Change "No databases updated" to "No databases + created" now that we're no longer string-frozen. + * po/ca.po, po/cs.po, po/da.po, po/de.po, po/es.po, po/fi.po, + po/fr.po, po/it.po, po/ja.po, po/pl.po, po/pt_BR.po, po/ro.po, + po/ru.po, po/sv.po, po/vi.po: Update. + +Mon Feb 12 12:58:10 GMT 2007 Colin Watson <cjwatson@debian.org> + + * po/POTFILES.in: Add src/descriptions_store.c. + * po/ca.po, po/cs.po, po/da.po, po/de.po, po/es.po, po/fi.po, + po/fr.po, po/it.po, po/ja.po, po/pl.po, po/pt_BR.po, po/ro.po, + po/ru.po, po/sv.po, po/vi.po: Update. + +Mon Feb 12 12:42:44 GMT 2007 Colin Watson <cjwatson@debian.org> + + * man/es_ES.88591/man1/man.man1 (OPCIONES), + man/it_IT.88591/man1/man.man1 (OPZIONI), + man/ja_JP.eucJP/man1/man.man1 (オプション): Fix soft-hyphen + declarations to avoid error messages from groff. + +Mon Feb 12 10:35:14 GMT 2007 Colin Watson <cjwatson@debian.org> + + * Version: 2.4.4. + * configure.ac, docs/NEWS, man-db.lsm: Update. + +Mon Feb 12 09:20:09 GMT 2007 Colin Watson <cjwatson@debian.org> + + * man/man1/man.man1 (OPTIONS): Stop claiming that -d does not + display any manual pages (thanks, Dan Jacobson; Debian bug + #340910). + +Mon Feb 12 09:04:17 GMT 2007 Colin Watson <cjwatson@debian.org> + + * src/man.c (main): Treat an empty LANGUAGE environment variable as + equivalent to it being unset. + +Sun Feb 11 10:31:04 GMT 2007 Colin Watson <cjwatson@debian.org> + + * docs/NEWS: Add forgotten item about SIGCHLD handling. + +Sat Feb 3 10:08:03 GMT 2007 Giuseppe Sacco <eppesuig@debian.org> + + * man/it_IT.88591/man1/man.man1: Update translation. + * man/THANKS: Update translator credit. + +Mon Jan 29 10:51:09 GMT 2007 Valéry Perrin <valery.perrin.debian@free.fr> + + * man/fr_FR.88591: Add French man page translations. + * .bzrignore: Add ignores under man/fr_FR.88591. + * GNUmakefile.in (nls_man): Add fr_FR.88591. + * man/THANKS: Add translator credit. + +Mon Jan 8 13:31:15 GMT 2007 Colin Watson <cjwatson@debian.org> + + Partial update of tempname module from gnulib. (Once we switch to + automake, it will be possible to import it properly.) + + * m4/tempname.m4: New file. + * configure.ac: Use gl_FUNC_GEN_TEMPNAME. + +Mon Jan 8 13:06:42 GMT 2007 Colin Watson <cjwatson@debian.org> + + * docs/ToDo: Rename to ... + * docs/TODO: ... this for consistency with other projects. + * GNUmakefile.in (_docs), docs/README, docs/HACKING: Update + references. + +Mon Jan 8 12:45:33 GMT 2007 Colin Watson <cjwatson@debian.org> + + * configure.ac (AC_PREREQ): Require autoconf 2.59, for gnulib. + +Mon Jan 8 12:37:12 GMT 2007 Colin Watson <cjwatson@debian.org> + + Update setenv module from gnulib. + + * m4/setenv.m4: New file. + * .bzrignore: Ignore only gettextize-generated files in m4 + directory. + * autogen.sh: Pass '-I m4' option to aclocal. + * configure.ac: Use gt_FUNC_SETENV. + * lib/setenv.c, lib/unsetenv.c: Update. + +Mon Jan 8 12:14:59 GMT 2007 Colin Watson <cjwatson@debian.org> + + * acinclude.m4 (MAN_FUNC_STRSIGNAL): Include <string.h> for + strsignal. + +Mon Jan 8 12:10:08 GMT 2007 Colin Watson <cjwatson@debian.org> + + * acinclude.m4 (MAN_FUNC_FNMATCH): New macro to check whether + fnmatch supports the FNM_CASEFOLD flag (a GNU extension). + * configure.ac: Use it. + +Mon Jan 8 10:39:24 GMT 2007 Colin Watson <cjwatson@debian.org> + + * lib/xsigaction.c: New file: sigaction with EINTR checking. + * include/manconfig.h.in: Add prototype. + * lib/Makefile.in: Build xsigaction. + * lib/cleanup.c (sighandler, trap_signal, untrap_signal): Use + xsigaction instead of bare sigaction. + * lib/pipeline.c (pipeline_start, pipeline_wait, + pipeline_install_sigchld): Use xsigaction instead of + sigaction-plus-EINTR-check. + +Mon Jan 8 09:55:48 GMT 2007 Colin Watson <cjwatson@debian.org> + + * configure.ac: Rename lynx variable to browser. Check for + www-browser (as on Debian) before lynx. + * include/manconfig.h.in: Rename lynx variable to browser. + +Mon Jan 8 09:15:04 GMT 2007 Colin Watson <cjwatson@debian.org> + + * src/mandb.c (main): If no database changes were necessary, then: + don't bother committing database changes or running straycats; + only exit non-zero if the -c option was given; only emit "No + databases updated" message (should be "No databases created" now) + if the -c option was given but not -q, to help automatic + invocation from man. + +Sun Jan 7 23:54:18 GMT 2007 Colin Watson <cjwatson@debian.org> + + * src/man.c (make_roff_command): Don't try to pass -X or -P-g + options to eqn, only troff (Debian bug #327772). + +Sun Jan 7 21:16:57 GMT 2007 Colin Watson <cjwatson@debian.org> + + * man/man1/man.man1 (SYNOPSIS, OPTIONS): Document -X option (thanks, + Sam Morris; Debian bug #360112). + +Sun Jan 7 20:58:16 GMT 2007 Colin Watson <cjwatson@debian.org> + + Add cross-references to mandb in apropos and whatis documentation + (thanks, Phil Endecott; Debian bug #388755). + + * man/man1/apropos.man1 (DESCRIPTION): Mention that the database is + updated by mandb. + (SEE ALSO): Refer to mandb(8). + * man/man1/whatis.man1 (DESCRIPTION, SEE ALSO): Likewise. + +Sun Jan 7 20:51:27 GMT 2007 Colin Watson <cjwatson@debian.org> + + * src/globbing.c (parse_layout): Actually check upper-cased version + of layout rather than creating it and then ignoring it. + +Sun Jan 7 20:48:58 GMT 2007 Colin Watson <cjwatson@debian.org> + + Fix a slew of memory leaks, including a nasty per-search leak in + apropos (Debian bug #368749). + + * include/manconfig.h.in (ATTRIBUTE_UNUSED): Define to an attribute + marking a variable as unused if using GCC 2.4 or newer. + + * lib/error.c (error): Free program_name before exiting. + * src/accessdb.c (main): Put program_name in allocated memory. + * src/wrapper.c (main): Likewise. + * src/Makefile.in: Link wrapper against libman. + + * libdb/db_gdbm.c (man_gdbm_firstkey): Register cleanup function to + free parent_sortkey_hash on exit. + * src/globbing.c (update_directory_cache): Register cleanup function + to free dirent_hash on exit. + (look_for_file): Register cleanup function to free gbuf on exit. + Move freeing of gbuf before each search to ... + (match_in_directory): ... here. + * src/manp.c (free_config_file): New function. + (read_config_file): Register cleanup function to free + configuration file structures on exit. + + * lib/cleanup.c (do_cleanups): Free the stack after processing it. + * lib/hashtable.c (hash_free): Free ht->hashtab as well. + * libdb/db_lookup.c (free_mandata_elements): Add TODO comment about + strange memory handling. + * src/catman.c (parse_for_sec): Free entry. + (main): Free various variables before exiting. + * src/check_mandirs.c (count_glob_matches): Free info.name. + (purge_missing): Free entry rather than just content.dptr (== + entry.addr). + * src/globbing.c (parse_layout): Free upper_layout. + (match_in_directory): Free pattern_start.pattern in early return + case. + * src/man.c (main): Free various variables before exiting. + * src/mandb.c (finish_up, cleanup, mandb, main): Free various + database file names properly. + (main): Remember to assign the result of getcwd_allocated + somewhere. Free various variables before exiting. + * src/manp.c (add_sections): Free section_list; comment was + incorrect. + (add_nls_manpath): Free temp_locale. + (guess_manpath): Constify path. Free result of get_manpath before + returning. + (get_manpath): Constify path. Free tmplist elements. + (create_pathlist): Free result of xstrndup. + (free_pathlist): New function. + * src/manp.h (free_pathlist): Add prototype. + * src/util.c (mkdbname): Don't allocate mkdbname statically; it's + less confusing just to free it each time. + * src/whatis.c (apropos): Initialise and free info. + (search): Free database. + (main): Free regular expression after each search. Free various + variables before exiting. + +Wed Dec 27 13:34:23 GMT 2006 Colin Watson <cjwatson@debian.org> + + Teach lexgrog front-end about pages with multiple name/description + pairs (Debian bug #342834). + + * src/descriptions.c (parse_descriptions): Allow base_name to be + NULL to suppress ensuring that base_name is in the returned list. + (gripe_bad_store, store_descriptions): Move to ... + * src/descriptions_store.c: ... here. + * src/lexgrog.l (main): Use parse_descriptions to split lg.whatis up + into its component descriptions, and display each on a separate + line. + * src/Makefile.in (mandb, lexgrog): Adjust object lists for the + above. + * docs/NEWS: Document this. + +Tue Dec 26 20:52:50 GMT 2006 Colin Watson <cjwatson@debian.org> + + * src/man.c (local_man_loop): Fail with an error message if argv is + a character or block device, as we may well hang trying to read + from it and it almost certainly isn't what the caller intended + anyway (Debian bug #341706). + +Tue Dec 26 20:11:04 GMT 2006 Colin Watson <cjwatson@debian.org> + + * docs/HACKING (Revision control): New section. + * docs/NEWS: Refer to docs/HACKING for bzr archive location. + +Tue Dec 26 20:04:32 GMT 2006 Colin Watson <cjwatson@debian.org> + + * GNUmakefile.in: Distribute configure.ac and docs/HACKING. + +Tue Dec 26 15:06:06 GMT 2006 Colin Watson <cjwatson@debian.org> + + * Version: 2.4.4-pre1 (for translators). + +Tue Dec 26 15:02:33 GMT 2006 Colin Watson <cjwatson@debian.org> + + * po/*.po: Update. + +Tue Dec 26 14:49:56 GMT 2006 Colin Watson <cjwatson@debian.org> + + * libdb/db_store.c, libdb/db_ver.c: Correct gettext.h inclusions. + +Tue Dec 26 14:47:36 GMT 2006 Colin Watson <cjwatson@debian.org> + + * libdb/Makefile.in, src/Makefile.in: Remove .depend directory on + clean, not distclean. + +Tue Dec 26 14:34:25 GMT 2006 Colin Watson <cjwatson@debian.org> + + * autogen.sh: Upgrade to aclocal 1.10. + +Tue Dec 26 14:27:59 GMT 2006 Colin Watson <cjwatson@debian.org> + + * configure.ac (AM_GNU_GETTEXT_VERSION): Upgrade to gettext 0.15. + * lib/gettext.h: Copy from gettext 0.15. + * lib/README: Mention the above. + * lib/pipeline.c, libdb/db_delete.c, libdb/db_lookup.c, + libdb/db_store.c, libdb/db_ver.c, src/accessdb.c, src/catman.c, + src/check_mandirs.c, src/compression.c, src/convert_name.c, + src/descriptions.c, src/encodings.c, src/fake_security.c, + src/filenames.c, src/globbing.c, src/lexgrog.l, src/lexgrog.l.new, + src/man.c, src/mandb.c, src/manp.c, src/manpath.c, src/security.c, + src/straycats.c, src/ult_src.c, src/version.c, src/whatis.c, + src/wrapper.c, zsoelim/zsoelim.l: Include "gettext.h" rather than + <libintl.h>. Make sure not to include <locale.h> before + "gettext.h", for portability to Solaris. + * src/wrapper.c: Drop ENABLE_NLS test, now handled by gettext.h. + +Tue Nov 7 11:00:14 PST 2006 Colin Watson <cjwatson@debian.org> + + * src/man.c (make_browser): Remove unnecessary check for browser + being NULL. + * docs/NEWS: Add CVE identifier. + +Mon Nov 6 09:45:49 PST 2006 Colin Watson <cjwatson@debian.org> + + * configure.ac, include/manconfig.h.in: Only prepend "exec " to + WEB_BROWSER if configure found a web browser. + +Mon Nov 6 09:01:13 PST 2006 Colin Watson <cjwatson@debian.org> + + * src/globbing.c: _GNU_SOURCE is defined throughout now, so don't + redefine it. + +Mon Nov 6 08:40:54 PST 2006 Colin Watson <cjwatson@debian.org> + + * docs/NEWS: Document switch to bzr. + +Mon Nov 6 08:34:57 PST 2006 Colin Watson <cjwatson@debian.org> + + * src/man.c (make_browser): Fix buffer overrun if BROWSER contains + multiple %s expansions. Thanks to Jochen Voß for the report. + * docs/NEWS: Document this. + +Sun Nov 5 23:41:45 PST 2006 Colin Watson <cjwatson@debian.org> + + * configure.ac: Call AC_GNU_SOURCE before AC_PROG_CC, as autoconf + objects otherwise (due to macros called by AM_GNU_GETTEXT). Let's + hope using _GNU_SOURCE for everything doesn't break anything ... + +Sat Nov 4 17:24:27 GMT 2006 Colin Watson <cjwatson@debian.org> + + * GNUmakefile.in, docs/HACKING: Update references to configure.in to + say configure.ac instead. + +Sat Nov 4 17:04:54 GMT 2006 Colin Watson <cjwatson@debian.org> + + * configure.ac: Use AS_HELP_STRING throughout. + (AC_PREREQ): Bump to 2.53. + +Sat Nov 4 16:52:20 GMT 2006 Colin Watson <cjwatson@debian.org> + + * configure.in: Rename to configure.ac. + +Sat Nov 4 16:41:59 GMT 2006 Colin Watson <cjwatson@debian.org> + + * autogen.sh: Force the use of aclocal-1.8; at least 1.4 won't work + correctly. + +Fri Oct 20 12:46:41 BST 2006 Colin Watson <cjwatson@debian.org> + + * tools/config.guess: Update to 2006-07-02. + * tools/config.sub: Update to 2006-09-20. + +Sun Sep 17 09:20:33 BST 2006 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.c (pipeline_start): Ignore SIGPIPE in child processes + (Debian bug #387864). + * docs/NEWS: Document this. + +Thu Aug 10 17:23:03 BST 2006 Colin Watson <cjwatson@debian.org> + + * src/encodings.c (get_default_device): Always use utf8 if preconv + is available. + (get_roff_encoding): Skip CJK UTF-8 hack if preconv is available. + * src/man.c (make_roff_command): Use preconv if available to recode + input even if the encoding is detected by means other than looking + at the preprocessor line. Skip iconv preprocessing in that case. + +Thu Aug 10 17:00:21 BST 2006 Colin Watson <cjwatson@debian.org> + + * src/encodings.c (get_groff_preconv): New function, moved from + src/man.c because other functions here are going to need it. + * src/encodings.h (get_groff_preconv): Prototype it. + * src/man.c (make_roff_command): Use it. + +Wed Aug 9 14:58:50 BST 2006 Colin Watson <cjwatson@debian.org> + + * src/man.c (make_roff_command): Set page_encoding to pp_encoding if + available. Plug a memory leak. + +Wed Aug 9 14:45:13 BST 2006 Colin Watson <cjwatson@debian.org> + + * include/manconfig.h.in (GNUC_PREREQ): Check for __GNUC_MINOR__, + not __GNUC_MINOR. + +Wed Aug 9 14:10:57 BST 2006 Colin Watson <cjwatson@debian.org> + + * src/man.c (make_roff_command): Recognise preprocessor encoding + declarations like "-*- coding: utf8 -*-". Invoke the "preconv" + preprocessor for these if available. + +Mon Jul 3 04:54:13 BST 2006 Colin Watson <cjwatson@debian.org> + + * libdb/db_lookup.c (make_content): Break up dsize calculation + differently for legibility. + +Tue Mar 21 11:08:55 GMT 2006 Colin Watson <cjwatson@debian.org> + + Improve portability to Solaris and other systems without setenv. + + * lib/setenv.c, lib/setenv.h, lib/unsetenv.c: Copied from gnulib + 0.0.20051110-1. + * lib/Makefile.in (ALLSRCS): Add setenv.c and unsetenv.c. + * lib/README: Mention the above. + * configure.in: Check for setenv and unsetenv and use the gnulib + versions if they are unavailable. + * src/man.c, src/whatis.c: Include lib/setenv.h. + +Thu Mar 9 08:08:39 GMT 2006 Daniel Nylander <po@danielnylander.se> + + * po/sv.po: Update from Translation Project. + * man/THANKS: Add translator credit. + +Wed Feb 22 09:44:02 GMT 2006 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.c (command_new_argstr): Skip "exec" at the start of a + command, to make old configuration files work (Debian bug + #353959). + * docs/NEWS: Document this. + +Mon Feb 20 09:33:18 GMT 2006 Henning Makholm <henning@makholm.net> + + * src/lexgrog.l: Add Danish translation of NAME. + +Sun Jan 22 19:02:43 GMT 2006 Clytie Siddall <clytie@riverland.net.au> + + * po/vi.po: Update from Translation Project. + * po/LINGUAS: Add vi. + * man/THANKS: Add translator credit. + +Sun Jan 22 18:49:16 GMT 2006 Colin Watson <cjwatson@debian.org> + + * man/man1/man.man1, man/es_ES.88591/man1/man.man1, + man/it_IT.88591/man1/man.man1: Fix mistaken use of .l instead of + .I (thanks, Valéry Perrin). + +Thu Jan 19 10:15:33 GMT 2006 Karl Eichwalder <ke@suse.de> + + * po/de.po: Update from Translation Project. + * man/THANKS: Add translator credit. + +Sat Dec 31 16:30:44 GMT 2005 Colin Watson <cjwatson@debian.org> + + * lib/hashtable.c (hash_free): Update function name in debug + message. + +Sun Dec 18 08:57:01 GMT 2005 Yuri Kozlov <kozlov.y@gmail.com> + + * src/lexgrog.l: Change encoding of Russian translation of NAME to + KOI8-R. + +Sat Dec 10 17:31:45 CET 2005 Giuseppe Sacco <eppesuig@debian.org> + + * Updated italian translation po/it.po + +Mon Nov 14 11:02:54 GMT 2005 Yuri Kozlov <kozlov.y@gmail.com> + + * src/lexgrog.l: Add Russian translation of NAME. + +Tue Oct 4 10:34:03 BST 2005 Colin Watson <cjwatson@debian.org> + + * tools/chconfig: Start with "#! /" rather than "#!/", for 4.2BSD. + +Wed Sep 21 10:56:22 BST 2005 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.c (pipeline_wait): Queue SIGCHLD for the whole time + we're collecting child process statuses; we need to keep a careful + count of processes. Forget any previous errno before calling + reap_children. Should fix Debian bug #326488. + +Wed Sep 21 10:47:51 BST 2005 Nicolas Velin <nsv@fr.st> + + * po/fr.po: Update from Rosetta. + * man/THANKS: Add translator credit. + +Wed Sep 21 10:36:19 BST 2005 Ondřej Surý <ondrej@sury.org> + + * po/cs.po: Update from Rosetta. + * man/THANKS: Add translator credit. + +Wed Sep 21 10:33:13 BST 2005 Colin Watson <cjwatson@debian.org> + + * man/THANKS: Recode to UTF-8. + +Wed Sep 21 10:10:12 BST 2005 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.c (pipeline_start, pipeline_wait): Ignore SIGINT and + SIGQUIT in the parent while running subprocesses (Debian bug + #328982). + * docs/NEWS: Document this. + +Wed Sep 21 10:04:42 BST 2005 Colin Watson <cjwatson@debian.org> + + * docs/NEWS: Start 2.4.4. + +Wed Sep 21 09:45:48 BST 2005 Colin Watson <cjwatson@debian.org> + + * configure.in: Substitute basename of config_file as + config_file_basename. + * src/man_db.conf.in: Use @config_file_basename@ in header comment. + +Thu Sep 1 14:10:07 BST 2005 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.c (argstr_get_word): Use an enum for quotemode rather + than magic numbers. + +Thu Sep 1 14:04:29 BST 2005 Colin Watson <cjwatson@debian.org> + + * include/manconfig.h.in (ATTRIBUTE_WARN_UNUSED_RESULT): Define to a + function attribute enabling unused result checking if using GCC + 3.4 or newer. + (xmalloc, xrealloc, strappend): Use it. + +Wed Aug 31 01:23:55 BST 2005 Colin Watson <cjwatson@debian.org> + + * src/encodings.c (directory_table): Add Simplified Chinese -> + GB2312 and Traditional Chinese -> BIG5. + (charset_table): Use the nippon device for BIG5, GB2312, and GBK. + (device_table): Assume that the nippon device is + encoding-agnostic, since it handles several encodings now. + (compatible_encodings, get_roff_encoding): Extend the ja_JP.UTF-8 + hack to cover zh_CN.UTF-8, zh_SG.UTF-8, and zh_TW.UTF-8 too. + +Sun Jul 31 16:34:15 BST 2005 Colin Watson <cjwatson@debian.org> + + * docs/COPYING, docs/COPYING.LIB: Update from www.gnu.org to pick up + the FSF's new address. + * Update all other GPL and LGPL notices with the new address (apart + from those in externally-maintained files). + +Wed Jul 27 11:29:02 BST 2005 Colin Watson <cjwatson@debian.org> + + * src/man.c (gripe_no_man): Don't emit a different message in the + troff case; it's extra translation load and nobody really cares + about the distinction. Avoid splitting up a sentence into two + translatable pieces (Debian bug #320111). + * po/ca.po, po/cs.po, po/da.po, po/de.po, po/es.po, po/fi.po, + po/fr.po, po/it.po, po/ja.po, po/pl.po, po/pt_BR.po, po/ro.po, + po/ru.po, po/sv.po: Update with msgmerge. + +Tue Jul 26 00:05:02 BST 2005 Colin Watson <cjwatson@debian.org> + + * src/man.c (make_roff_command): Use 'col -b -p -x' rather than just + 'col -b' when stdout is not a terminal. + +Tue Jul 12 02:08:41 BST 2005 Colin Watson <cjwatson@debian.org> + + * include/manconfig.h.in (ATTRIBUTE_MALLOC): Define to a function + attribute enabling malloc return value checking if using GCC 2.96 + or newer. + (xmalloc, xrealloc, xstrdup, xstrndup): Use it. + +Tue Jul 12 01:59:10 BST 2005 Colin Watson <cjwatson@debian.org> + + * include/manconfig.h.in (GNUC_PREREQ): Helper macro borrowed from + glibc. + (ATTRIBUTE_FORMAT_PRINTF): Define to a function attribute enabling + printf-style format string checking if using GCC 2.0 or newer. + (ATTRIBUTE_SENTINEL): Use GNUC_PREREQ. Use __sentinel__ rather + than sentinel to avoid possible clashes with other macros. + * lib/error.h (error): Add printf format attribute. + * lib/xmalloc.c: Include "error.h" rather than redeclaring error. + +Mon Jul 11 18:12:58 BST 2005 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.c (pipeline_wait): Emit a debugging message. + +Mon Jul 11 14:41:52 BST 2005 Colin Watson <cjwatson@debian.org> + + * include/manconfig.h.in: Define ATTRIBUTE_SENTINEL to a function + attribute enabling sentinel checking if using GCC 4.0 or newer. + (strappend): Use it. + * lib/pipeline.h (command_new_args, command_args, + pipeline_new_commands, pipeline_command_args, pipeline_commands): + Likewise. + +Mon Jul 11 14:38:30 BST 2005 Colin Watson <cjwatson@debian.org> + + * lib/Makefile.in, libdb/Makefile.in, src/Makefile.in, + zsoelim/Makefile.in: Stop using -I-; it's deprecated in GCC 4.0, + and it doesn't seem worth the effort of switching to the -iquote + replacement. + +Mon Jul 11 12:02:57 BST 2005 Colin Watson <cjwatson@debian.org> + + * src/man.c (usage): Fix "gditview" typo (Debian bug #317696). + * po/ca.po, po/cs.po, po/da.po, po/de.po, po/es.po, po/fi.po, + po/fr.po, po/it.po, po/ja.po, po/pl.po, po/pt_BR.po, po/ro.po, + po/ru.po, po/sv.po: Unfuzzy all translations. + +Fri Jul 8 13:12:29 BST 2005 Ralph Corderoy <ralph@inputplus.co.uk> + + * src/man.c (display): Drop "Reformatting %s, please wait..." + message; it's been years since processing power was low enough for + this to be relevant. + +Mon Jul 4 00:49:36 BST 2005 Colin Watson <cjwatson@debian.org> + + * GNUmakefile.in (EVERYTHING, ALL): List intl before lib, since + intl/Makefile runs config.status and thus recreates lib/Makefile + after lib has been distcleaned. + +Sun Jul 3 22:14:02 BST 2005 Colin Watson <cjwatson@debian.org> + + * Version: 2.4.3. + * configure.in, docs/NEWS, man-db.lsm: Update. + * man-db.lsm: Correct primary download location. + +Sun Jul 3 20:55:13 BST 2005 Colin Watson <cjwatson@debian.org> + + * configure.in: Define HAVE_GZIP, HAVE_COMPRESS, and HAVE_BZIP2 as + appropriate. + * include/comp_src.h.in: Conditionalise compressor list on + HAVE_GZIP, HAVE_COMPRESS, and HAVE_BZIP2 rather than on GUNZIP, + UNCOMPRESS, and BUNZIP2; if a compressor isn't detected, the + latter will end up as empty strings, not undefined. Thanks to Paul + Slootman (Debian bug #196097). + * docs/NEWS: Document this. + +Sun Jul 3 18:58:14 BST 2005 Colin Watson <cjwatson@debian.org> + + * GNUmakefile.in (__distclean): Remove po/Makevars.template. + +Sun Jul 3 18:11:56 BST 2005 Colin Watson <cjwatson@debian.org> + + * docs/NEWS: List more language support since 2.4.2. + +Sun Jul 3 17:45:18 BST 2005 Colin Watson <cjwatson@debian.org> + + * docs/NEWS: Minor clarification. + +Sun Jul 3 17:41:20 BST 2005 Robert Luberda <robert@debian.org> + + * po/pl.po: Update. + +Sun Jul 3 17:39:14 BST 2005 Yuri Kozlov <yuray@id.ru> + + * po/ru.po: Update. + +Tue Jun 21 13:58:37 BST 2005 Jordi Mallach <jordi@gnu.org> + + * po/ca.po: Update from Translation Project. + * man/THANKS: Update e-mail address. + +Mon Jun 20 14:46:22 BST 2005 Colin Watson <cjwatson@debian.org> + + * tools/config.guess, tools/config.sub: Update to 2005-04-22. + +Fri Jun 10 15:05:53 BST 2005 Colin Watson <cjwatson@debian.org> + + * Version: 2.4.3-pre1 (for translators). + +Fri Jun 10 14:53:52 BST 2005 Colin Watson <cjwatson@debian.org> + + * man/THANKS: Add translator credits for it.po, ja.po, pt_BR.po, and + sv.po. + +Fri Jun 10 14:36:36 BST 2005 Colin Watson <cjwatson@debian.org> + + * po/LINGUAS: Add ro. + * man/THANKS: Add translator credit. + * po/fi.po, po/ro.po: Update with msgmerge. + +Fri Jun 10 14:31:42 BST 2005 Eugen Hoanca <eugenh@urban-grafx.ro> + + * po/ro.po: New from Translation Project. + +Fri Jun 10 14:29:17 BST 2005 Jordi Mallach <jordi@sindominio.net> + + * po/ca.po: Update from Translation Project. + +Fri Jun 10 14:22:04 BST 2005 Colin Watson <cjwatson@debian.org> + + * po/fi.po: New, from Lauri Nurmi via the Translation Project. + * po/LINGUAS: Add fi. + * man/THANKS: Add translator credit. + +Mon Jun 6 02:15:07 BST 2005 Colin Watson <cjwatson@debian.org> + + * docs/NEWS: Document various changes since this file was last + updated. + +Sun Jun 5 15:47:10 BST 2005 Jeremy C. Reed <reed@reedmedia.net> + + * configure.in: Add support for db4. Check for db3/db_185.h before + db_185.h. + +Sat Jun 4 12:42:26 BST 2005 Colin Watson <cjwatson@debian.org> + + * docs/manpage.example.mdoc: New file. + +Sat Jun 4 12:23:15 BST 2005 Colin Watson <cjwatson@debian.org> + + * po/ru.po: Update with msgmerge. + +Sat Jun 4 12:21:17 BST 2005 Colin Watson <cjwatson@debian.org> + + * po/ru.po: New, from Yuri Kozlov (Debian bug #268584). + * po/LINGUAS: Add ru. + * man/THANKS: Add translator credit. + +Sat Jun 4 12:17:52 BST 2005 Colin Watson <cjwatson@debian.org> + + * po/ca.po, po/cs.po, po/da.po, po/de.po, po/es.po, po/fr.po, + po/it.po, po/ja.po, po/pl.po, po/pt_BR.po, po/sv.po: Update with + msgmerge. + +Sat Jun 4 11:48:58 BST 2005 Colin Watson <cjwatson@debian.org> + + * po/pl.po: Fix typo in Last-Translator e-mail address. + +Sat Jun 4 11:46:13 BST 2005 Colin Watson <cjwatson@debian.org> + + * po/pl.po: New, from Robert Luberda (Debian bug #245057). + * po/LINGUAS: Add pl. + * man/THANKS: Add translator credit. + +Sat Jun 4 10:59:29 BST 2005 Colin Watson <cjwatson@debian.org> + + * lib/getcwdalloc.c, lib/getcwdalloc.h: Fix header comments. + +Sat Jun 4 10:55:47 BST 2005 Colin Watson <cjwatson@debian.org> + + * src/lexgrog.l (MAN_NAME): Terminate NAME section parsing on + encountering a macro definition (Debian bug #275562). + +Wed Jan 5 15:08:06 GMT 2005 Colin Watson <cjwatson@debian.org> + + * src/encodings.c (directory_table): Add Turkish -> ISO-8859-9. + +Sun Dec 12 21:48:04 CET 2004 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.c (pipeline_sigchld): Don't bother saving and + restoring errno if SIGCHLD is being queued. + +Mon Nov 8 09:57:27 GMT 2004 Colin Watson <cjwatson@debian.org> + + * lib/pathsearch.c: New file, containing functions for searching + $PATH. + * lib/pathsearch.h: Prototype pathsearch_executable(). + * lib/Makefile.in: Always compile pathsearch.c. + * src/man.c (find_in_path): Remove; replaced by + pathsearch_executable(). + (gripe_no_man): Use pathsearch_executable() instead of + find_in_path(). + +Mon Nov 8 09:52:02 GMT 2004 Colin Watson <cjwatson@debian.org> + + Get rid of plain getcwd(); this allows getting rid of most uses of + PATH_MAX. + + * lib/getcwdalloc.c: New file, providing an allocating version of + getcwd(). + * lib/getcwdalloc.h: Prototype it. + * lib/Makefile.in: Always compile getcwdalloc.c. + + * src/man.c (main, format_display): Use getcwd_allocated() instead + of getcwd(). + * src/mandb.c (main): Likewise. + * src/manp.c (add_dir_to_path_list): Likewise. + +Mon Nov 8 09:40:07 GMT 2004 Colin Watson <cjwatson@debian.org> + + * lib/hashtable.c (null_hash_free): No-op hash_free_ptr provider, + for convenience. + * lib/hashtable.h (null_hash_free): Prototype it. + +Mon Nov 8 09:36:55 GMT 2004 Colin Watson <cjwatson@debian.org> + + * acinclude.m4: Improve quoting to stop aclocal complaining. Improve + indentation. Get rid of unnecessary changequote(). + +Sun Nov 7 16:07:26 GMT 2004 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.c (pipeline_wait): Close pipeline output before + reaping processes, so that writing processes get SIGPIPE. + +Sun Nov 7 16:05:08 GMT 2004 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.c (pipeline_wait): Fix active process debugging + output to include processes without statuses. + +Sun Nov 7 16:01:26 GMT 2004 Colin Watson <cjwatson@debian.org> + + * src/compression.c (decompress): Invalidate file_fd after closing + it. + +Sun Nov 7 15:31:18 GMT 2004 Colin Watson <cjwatson@debian.org> + + * src/man.c (compare_candidates): Compare extensions' positions in + section_list at the same time as sections, but do the lexical + comparison fallback after comparing ids; this restores the + intended ability to use SECTIONS to move extensions out of order + with respect to their parent sections without breaking the earlier + workaround for Debian bug #204249. + +Thu Jul 22 14:46:30 BST 2004 Colin Watson <cjwatson@debian.org> + + * src/check_mandirs.c (testmandirs): Always scan directory if last + is 0 (i.e. creating) to avoid problems on systems with badly + broken clocks set before the epoch. + +Mon Jun 28 03:56:56 BST 2004 Colin Watson <cjwatson@debian.org> + + * src/man.c (man): Free candidate list after displaying it. + +Mon Jun 28 01:19:45 BST 2004 David Weinehall <tao@debian.org> + + * tools/mkcatdirs: Replace XSIish uses of 'test' with more portable + code. + +Thu Apr 1 05:10:50 BST 2004 Colin Watson <cjwatson@debian.org> + + * src/encodings.c (charset_table): Use the latin1 device for + ISO-8859-15, even though that isn't exactly right. + +Thu Apr 1 04:56:02 BST 2004 Colin Watson <cjwatson@debian.org> + + * src/encodings.c (get_page_encoding, get_standard_output_encoding): + Remove trailing ,<version> and @<modifier> from locale names. + * src/encodings.h (get_page_encoding, get_standard_output_encoding): + Update prototypes: these no longer return const. + * src/man.c (make_roff_command): Free page_encoding and cat_charset. + +Thu Apr 1 00:18:55 BST 2004 Colin Watson <cjwatson@debian.org> + + * src/man.c (do_extern): Pass only options understood by + apropos/whatis, using the pipeline library (Debian bug #207436). + (main): Make optind global. Install SIGINT and SIGCHLD handlers + earlier. Update do_extern call. + * docs/NEWS: Document this. + +Wed Mar 31 23:40:15 BST 2004 Colin Watson <cjwatson@debian.org> + + * src/man.c (make_roff_command): If stdout isn't a terminal, get rid + of formatting characters using GROFF_NO_SGR=1 and 'col -b' + (thanks, Adam Heath). + * docs/NEWS: Document this. + +Thu Mar 25 19:31:02 GMT 2004 Colin Watson <cjwatson@debian.org> + + * src/whatis.c (apropos): Move warning-silencing code to the bottom + of the function, so that it doesn't interfere with declarations. + +Sun Mar 14 03:52:12 UTC 2004 Giuseppe Sacco <eppesuig@debian.org> + + * Updated italian translation (corrected three fuzzy strings) + +Tue Mar 9 10:25:40 GMT 2004 Colin Watson <cjwatson@debian.org> + + * zsoelim/zsoelim.l: Define debug for the benefit of pipeline.c. + (open_file): Use pipeline library. + +Tue Mar 9 01:54:20 GMT 2004 Colin Watson <cjwatson@debian.org> + + * zsoelim/zsoelim.l: Long-overdue style cleanup per docs/HACKING. No + functional changes. + +Tue Mar 9 00:37:23 GMT 2004 Colin Watson <cjwatson@debian.org> + + Roll out the new pipeline library in most programs. + + * src/compression.c (decompress): Use pipeline library. + * src/fake_security.c (do_system_drop_privs): Likewise. + * src/lexgrog.l (main): Initialize pipeline library. + * src/man.c (checked_popen, gripe_system, checked_system, run_mandb, + format_display_and_save, format_display, display_catman, display): + Use pipeline library. + (add_roff_line_length): Append to a command structure rather than + using strappend. + (main): Initialize pipeline library. + (make_roff_command): Return a constructed pipeline instead of a + malloced string. This plugs various hitherto difficult leaks. Drop + support for changing the line length with groff < 1.18, as the + pipeline library can't handle compound commands in pipelines yet. + (make_browser): Return a constructed pipeline instead of a + statically allocated string. The pipeline construction is very + crude for now. + (make_display_command): Return a constructed pipeline instead of a + malloced string. The htmlout case is strange for now (return NULL + and let format_display sort it out). + (tmp_cat_filename): Handle debug > /dev/null here rather than in + open_cat_stream. Construct the temporary cat filename more + sensibly. Open the temporary file and record its file descriptor. + (open_cat_stream): Return a constructed (and started, if COMP_CAT + is defined) pipeline instead of a stream. This gets rid of a + fixed-size buffer associated with security problems in the past, + although it wasn't a vulnerability in itself. + (close_cat_stream): Clean up pipeline rather than stream. + (format_display): The htmlout case ignores disp_cmd and puts the + display pipeline together itself. + (display): When calling format_display_and_save, assert (disp_cmd) + to make sure we aren't in the htmlout case. + * src/man.h (make_roff_command): Drop unnecessary prototype. + * src/mandb.c (main): Initialize pipeline library. + * src/security.c (do_system_drop_privs): Take a pipeline rather than + a string. + * src/security.h (do_system_drop_privs): Update prototype. + * src/straycats.c (check_for_stray): Use pipeline library. + * src/util.c (do_system): Take a pipeline rather than a string. This + becomes a simple synchronous wrapper around pipeline_start and + pipeline_wait. + * src/whatis.c (use_grep): Use pipeline library. + (main): Initialize pipeline library. + + * include/manconfig.h.in (struct pipeline): Declare opaquely. + (do_system): Update prototype. + + * configure.in: Drop 'exec' from default pager; no longer needed + since the pipeline library obviates the use of /bin/sh -c. + + * docs/NEWS: Document all this. + +Mon Mar 8 16:45:27 GMT 2004 Colin Watson <cjwatson@debian.org> + + * src/compression.c (comp_info): If the new want_stem argument is + set, put a copy of the filename without extension in comp->stem + rather than a strange thing in comp->file. This is closer to what + most callers actually want, and removes a lot of memory management + confusion. + (comp_file): Use comp->stem instead of comp->file (previous usage + matched this semantically). + * include/manconfig.h.in (struct compression): Replace 'file' with + 'stem'. + (comp_info): Update prototype. + + * src/convert_name.c (convert_name): Update comp_info call. + * src/filenames.c (filename_info): Fix misuse of basename. Update + comp_info call. + * src/lexgrog.l (find_name): Update comp_info call. + * src/man.c (local_man_loop): Likewise. + * src/straycats.c (check_for_stray): Likewise. + * src/ult_src.c (ult_src): Likewise. + * zsoelim/zsoelim.l (open_file): Don't set comp->file. Add a + clone-and-hack warning. + +Mon Mar 8 16:07:11 GMT 2004 Colin Watson <cjwatson@debian.org> + + * src/compression.c (decompress): Error out if decompression program + not found, as a temporary workaround for poor detection in + configure. + +Mon Mar 8 15:59:29 GMT 2004 Colin Watson <cjwatson@debian.org> + + * src/manp.c (get_catpath): Use xstrdup and strappend rather than + doing memory management by hand. + +Mon Mar 8 11:28:51 GMT 2004 Colin Watson <cjwatson@debian.org> + + * include/manconfig.h.in: Protect against multiple inclusion. + +Mon Mar 8 11:21:05 GMT 2004 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.c (pipeline_dump): Show caller-supplied input and + output file descriptors. + + * lib/pipeline.c (command_free, pipeline_free): Return safely if + argument is NULL. + * lib/pipeline.h (command_free, pipeline_free): Document NULL + arguments as a safe no-op, like free(). + +Mon Mar 8 09:33:08 GMT 2004 Colin Watson <cjwatson@debian.org> + + * docs/manpage.example (DESCRIPTION): ".SS macros" -> ".SS macro". + +Mon Mar 8 00:16:53 GMT 2004 Colin Watson <cjwatson@debian.org> + + * src/man.c (compare_candidates): Instead of comparing extensions + followed by ids, compare pure sections first, then ids, then + extensions. This works around the worst effects of Debian bug + #204249, in which we have an incorrect whatis ref xterm(1) in + /usr/share/man and a correct real xterm(1x) in /usr/X11R6/man. + +Sun Mar 7 23:55:48 GMT 2004 Colin Watson <cjwatson@debian.org> + + * src/man.c (compare_candidates): Keep searching for more specific + extension matches in section_list even after finding one. + +Wed Jan 28 00:15:00 GMT 2004 Colin Watson <cjwatson@debian.org> + + * src/lexgrog.l: Add a terrifying hack to make '.B "..."' work in + NAME sections. lex is really the wrong tool for this job, I feel. + +Tue Jan 27 23:37:58 GMT 2004 Colin Watson <cjwatson@debian.org> + + * src/lexgrog.l: Attempt to fix problems with groff requests + immediately following .SH NAME. All patterns in the MAN_FILE and + MAN_NAME states need to avoid matching trailing newlines, since + they're needed by other patterns to detect beginning-of-line. + + In order to ignore any excess whitespace following .SH NAME, which + is how this problem got created, introduce a MAN_PRENAME start + condition, which just skips over spacing. Some evil use of yyless + is needed to transition properly to the MAN_NAME start condition + from this without eating trailing newlines. + +Tue Jan 27 21:19:41 GMT 2004 Colin Watson <cjwatson@debian.org> + + * src/Makefile.in (LFLAGS): Add -d if LEXGROG_DEBUG=yes. + +Wed Dec 24 10:29:16 UTC 2003 Giuseppe Sacco <eppesuig@debian.org> + + * src/whatis.c (usage): Fix usage message for --section + * updated italian translation. + +Wed Dec 24 10:10:16 GMT 2003 Colin Watson <cjwatson@debian.org> + + * src/whatis.c (usage): Fix usage message for --section, thanks to + Giuseppe Sacco. + +Wed Dec 24 09:14:19 UTC 2003 Giuseppe Sacco <eppesuig@debian.org> + + * Updated italian translation + +Mon Nov 17 22:50:39 GMT 2003 Colin Watson <cjwatson@debian.org> + + * src/globbing.c (match_in_directory): Oops; stop decrementing + bsearched when it reaches the beginning of the cache->names array, + otherwise patterns beginning with a metacharacter cause a + segfault. (The decrement loop is necessary because bsearch() + doesn't specify which element it returns if there are multiple + matches.) + +Mon Nov 17 05:04:54 GMT 2003 Colin Watson <cjwatson@debian.org> + + Speed up mandb's purging functions further, from about 20 seconds to + about 2 seconds on my i386 laptop, by being more intelligent about + calling fnmatch(). + + * src/globbing.c (cache_compare): New function. + (update_directory_cache): Sort the cache. + (pattern_compare): New function. + (match_in_directory): Rather than scanning the whole cache, start + from a point matching the start of the pattern up to the first + metacharacter, and stop once this no longer matches. + + * src/globbing.c (TEST): Include <libintl.h> and define _() so that + the test code compiles. + (main): Set program_name before any calls to usage(). + +Sun Nov 16 21:45:24 GMT 2003 Colin Watson <cjwatson@debian.org> + + * docs/HACKING: Mention the new CTYPE() macro. + +Sun Nov 16 21:29:35 GMT 2003 Colin Watson <cjwatson@debian.org> + + * src/convert_name.c (convert_name): Reorganize and clarify. The + alternate argument was confusing and is now gone. Add a new fsstnd + argument which controls whether the "man1" to "cat1" etc. + conversion is performed. That conversion now makes sure that the + directory name starts with "man" before blithely overwriting it. + Treat comp->file as const, since it will be soon. + * src/convert_name.h (convert_name): Update prototype. + * src/man.c (find_cat_file): New logic. First, check for existing + FSSTND cat files; then check for a cat dir based on the ultimate + source, if different from the original (Debian bug #129575); then + check for a cat dir based on the original man page path. + (display): Drop the !local_man_file case which tries to work out + whether to save a cat, as it's not a problem to try regardless of + whether there's already one in a FSSTND location. + (display_filesystem, display_database): Add extra argument to + find_cat_file() so that it knows the original man page path as + distinct from the ultimate source. + (display_filesystem): Remove debugging output, now in + find_cat_file(). + + * docs/ToDo: Remove entry about cleaning up cat file code, now done. + +Sun Nov 16 19:28:38 GMT 2003 Colin Watson <cjwatson@debian.org> + + Add an option to apropos and whatis to allow specification of a + section to search. + + * src/whatis.c (args, long_options, main): New -s/--section option. + (usage): Document it. + (whatis): Tell dblookup_all() to look in the section named by + --section, if present. + (apropos): If --section was given, check that it matches either + info.sec or info.ext for each page. Use info.whatis rather than + parsing the whatis out manually. + * man/man1/apropos.man1 (SYNOPSIS, OPTIONS): Document --section. + * man/man1/whatis.man1 (SYNOPSIS, OPTIONS): Likewise. + + * docs/NEWS: Start 2.4.3. Document the above. + +Sun Nov 16 18:47:46 GMT 2003 Colin Watson <cjwatson@debian.org> + + * include/manconfig.h.in (CTYPE): New macro to help get <ctype.h> + calls right. + * libdb/db_lookup.c (name_to_key): Use it. + * src/globbing.c (parse_layout, look_for_file): Likewise. + * src/man.c (manopt_to_env, main): Likewise. + * src/manp.c (add_to_dirlist): Likewise. + * src/ult_src.c (ult_softlink, test_for_include): Likewise. + * src/whatis.c (lower, match, word_fnmatch): Likewise. + +Sun Nov 16 17:06:29 GMT 2003 Colin Watson <cjwatson@debian.org> + + Style cleanups; no functional changes. + + * src/whatis.c (usage, match, apropos, search, main): Add a space + before the open parenthesis in several function calls. + (apropos): The nesting level has got out of control here. Use a + goto and a 'nextpage' label near the end of the loop instead. + +Sun Nov 16 15:49:12 GMT 2003 Erik Andersen <andersen@codepoet.org> + + * src/straycats.c (check_for_stray): Add missing open brace to + non-HAVE_CANONICALIZE_FILE_NAME case. + +Tue Oct 28 16:24:41 GMT 2003 Colin Watson <cjwatson@debian.org> + + * man/Makefile.in: Create new th* variables with capitalized + variants of program names for .TH lines. + * man/de_DE.88591/man1/*.man1, man/de_DE.88591/man5/*.man5, + man/de_DE.88591/man8/*.man8, man/es_ES.88591/man1/*.man1, + man/es_ES.88591/man5/*.man5, man/es_ES.88591/man8/*.man8, + man/it_IT.88591/man1/*.man1, man/it_IT.88591/man5/*.man5, + man/it_IT.88591/man8/*.man8, man/ja_JP.eucJP/man1/*.man1, + man/ja_JP.eucJP/man5/*.man5, man/ja_JP.eucJP/man8/*.man8, + man/man1/*.man1, man/man5/*.man5, man/man8/*.man8: Capitalize all + page titles in .TH lines. + * man/de_DE.88591/man5/manpath.man5: Fix typo: 'man' => 'manpath'. + +Sun Sep 28 20:11:55 BST 2003 Colin Watson <cjwatson@debian.org> + + * man-db.gnu: Remove. This is licensed under the GFDL, whose + freeness is under serious question. I'm not sure if the FSF + actually have standing to claim copyright over this file in the + first place, but it doesn't need to be in CVS here so I don't feel + like arguing about it. + +Sun Sep 21 02:17:43 BST 2003 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.c (pipeline_start): Dump pipeline in debugging mode. + +Sun Sep 21 02:15:17 BST 2003 Colin Watson <cjwatson@debian.org> + + * docs/NEWS: Add a forgotten entry for 2.4.2. + +Sat Sep 20 18:35:54 BST 2003 Colin Watson <cjwatson@debian.org> + + * src/encodings.c (directory_table): Add Galician -> ISO-8859-1, + Indonesian -> ISO-8859-1, Croatian -> ISO-8859-2, and Slovak -> + ISO-8859-2. + +Sat Sep 20 11:57:58 BST 2003 Colin Watson <cjwatson@debian.org> + + * po/ca.po, po/cs.po, po/da.po, po/de.po, po/es.po, po/fr.po, + po/it.po, po/ja.po, po/pt_BR.po, po/sv.po: Update with msgmerge + (po/Makevars changed). + +Sat Sep 20 01:07:24 BST 2003 Colin Watson <cjwatson@debian.org> + + * Version: 2.4.2. + * configure.in, docs/NEWS, man-db.gnu, man-db.lsm: Update. + * man-db.gnu: Suggest libgdbm-dev rather than libdb3-dev. + * man-db.lsm: Suggest GDBM. + +Sat Sep 20 00:11:14 BST 2003 Colin Watson <cjwatson@debian.org> + + * src/man.c (make_roff_command): Don't recode output if an explicit + encoding was specified with -E. + +Sat Sep 20 00:09:03 BST 2003 Colin Watson <cjwatson@debian.org> + + * po/.cvsignore: Add stamp-po. + +Fri Sep 19 22:49:14 BST 2003 Colin Watson <cjwatson@debian.org> + + * acinclude.m4 (MAN_CHECK_BDB): Temporarily add $lib to LIBS for + AC_TRY_LINK, not to DBLIBS; but add it to DBLIBS if the test + succeeds. + * configure.in: Simply set DBLIBS rather than appending to it. + +Fri Sep 19 22:20:07 BST 2003 Colin Watson <cjwatson@debian.org> + + * autogen.sh: Run aclocal after autopoint, in accordance with the + autopoint info documentation. + +Fri Sep 19 22:17:18 BST 2003 Colin Watson <cjwatson@debian.org> + + * configure.in (AM_GNU_GETTEXT_VERSION): Upgrade to gettext 0.12.1. + * po/Makevars (MSGID_BUGS_ADDRESS): Set to me. + * po/.cvsignore: Add Makevars.template. + +Fri Sep 19 00:48:07 BST 2003 Colin Watson <cjwatson@debian.org> + + * src/lexgrog.l (MAN_FILE): Accept blank lines immediately following + ".SH NAME". + +Fri Sep 19 00:06:02 BST 2003 Colin Watson <cjwatson@debian.org> + + * man/man8/mandb.man8 (OPTIONS): Improve --filename wording a bit. + +Wed Sep 17 07:17:22 BST 2003 Colin Watson <cjwatson@debian.org> + + Fix case where a page explicitly encoded in UTF-8 has to be recoded + down to a non-ISO-8859-1 legacy encoding for processing by groff and + then back up to UTF-8 for display. + + * src/encodings.c (get_page_encoding): New function, renamed from + get_source_encoding. + (get_source_encoding): Return only the canonical source encoding, + not any explicit encoding in the directory name. This allows us to + take account of differing explicit encoding and canonical encoding + of pages for the purposes of working out which device to use. + (get_roff_encoding): New source_encoding argument, now returned + instead of NULL. + (get_default_device): Pass source_encoding to get_roff_encoding(). + (compatible_encodings): The roff encoding can no longer be NULL. + * src/encodings.h (get_page_encoding): Add prototype. + (get_roff_encoding): Update prototype. + * src/man.c (make_roff_command): Call get_page_encoding(), and + recode from that to roff_encoding, not from source_encoding to + roff_encoding. Pass source_encoding to get_roff_encoding(). + roff_encoding can no longer be NULL. + +Tue Sep 16 22:53:36 BST 2003 Colin Watson <cjwatson@debian.org> + + Purge database entries corresponding to removed stray cat pages. + + * src/check_mandirs.c (purge_normal, purge_whatis): Add TODO notes + for systems where the cat extension differs from the man + extension. + (purge_whatis): Rename manpath to path. New cat argument, passed + through to look_for_file(). + (purge_missing): New catpath argument, passed to look_for_file() + and purge_whatis() in the STRAY_CAT and WHATIS_CAT cases, which + are now handled. + * src/check_mandirs.h (purge_missing): Update prototype. + * src/mandb.c (main): Pass catpath to purge_missing(). + * docs/NEWS: Document this. + +Tue Sep 16 22:37:33 BST 2003 Colin Watson <cjwatson@debian.org> + + Work around the fact that GDBM's firstkey/nextkey interface doesn't + return ordered results. + + * libdb/db_gdbm.c (man_gdbm_open_wrapper): New function. Wraps the + return value from gdbm_open() in a structure that remembers the + file name. + (parent_sortkey_hash_free, sortkey_hash_free): New functions to + free hashtables used here. + (sortkey_compare): New comparison function for qsort(). + (man_gdbm_firstkey): New function. Retrieve all keys using + gdbm_firstkey() and gdbm_nextkey() in advance, sort them into an + ordered hashtable, remember that hashtable for later, and return + the first key. + (man_gdbm_nextkey): New function. Find the previously remembered + ordered hashtable and return the next element from it. + (man_gdbm_close): New function. Clean up remembered data. + * libdb/db_lookup.c (copy_datum): Define even if using GDBM. + (gripe_lock): Explain why this isn't used for GDBM. + * libdb/mydbm.h (man_gdbm_wrapper): New type. + (man_gdbm_open_wrapper, man_gdbm_firstkey, man_gdbm_nextkey, + man_gdbm_close): Add prototypes. + (MYDBM_FILE): Change to man_gdbm_wrapper for GDBM. Adjust all + other MYDBM_* macros to cope with this and use man_gdbm_* + functions where necessary. + (copy_datum): Declare for all database types. Remove __inline__. + * docs/NEWS: Document this. + +Tue Sep 16 01:44:59 BST 2003 Colin Watson <cjwatson@debian.org> + + * src/accessdb.c (main): Free each key after listing it rather than + just leaking it. + +Mon Sep 15 23:45:33 BST 2003 Byrial Ole Jensen <byrial@image.dk> + + * po/da.po: Update from Translation Project. + +Mon Sep 15 23:29:33 BST 2003 Colin Watson <cjwatson@debian.org> + + * configure.in: Add --enable-mb-groff option, which defines + MULTIBYTE_GROFF for src/encodings.c. + * docs/NEWS: Document this. + +Mon Sep 15 01:23:00 BST 2003 Colin Watson <cjwatson@debian.org> + + * po/it.po: msgfmt doesn't like "charset=iso8859-1". Use + "charset=iso-8859-1" instead. + +Sun Sep 14 17:48:38 BST 2003 Colin Watson <cjwatson@debian.org> + + * src/encodings.c (get_source_encoding): If the language directory + is unknown (e.g. 'man -l'), guess based on the locale before + falling back to a default. + (get_standard_output_encoding): Likewise. + +Sun Sep 14 16:58:34 BST 2003 Colin Watson <cjwatson@debian.org> + + * src/encodings.c (get_source_encoding): Assume ISO-8859-1 source + encoding if it's unknown (e.g. 'man -l'). + (get_default_device): source_encoding can no longer be NULL. + * src/man.c (make_roff_command): Likewise. + +Sun Sep 14 16:45:43 BST 2003 Colin Watson <cjwatson@debian.org> + + * man/man1/man.man1 (EXAMPLES, ENVIRONMENT, HISTORY): Change a few + stray hyphens to dashes. + +Sun Sep 14 16:37:56 BST 2003 Colin Watson <cjwatson@debian.org> + + * src/encodings.c (get_source_encoding, + get_standard_output_encoding, get_default_device, + get_roff_encoding, get_output_encoding, get_less_charset): + Simplify using new table element struct types. + +Sun Sep 14 16:24:00 BST 2003 Colin Watson <cjwatson@debian.org> + + Make locales like ru_RU.UTF-8 that need the ascii8 device but UTF-8 + output work. This involves a good deal of restructuring. + + * src/encodings.c (directory_table): Remove a completed TODO + comment. + (directory_table, charset_table, device_table): Name array element + struct types in order to abbreviate code later. + (device_table): Split less_charset members out into a new table, + less_charset_table. They really depend on the locale charset, but + aren't quite appropriate for charset_table. Use "iso8859" rather + than "latin1", and add KOI8-R. + (device_table): Add output_encoding member, which is almost the + inverse of charset_table but slightly different for ascii8. + (compatible_encodings): New function to figure out if a source + encoding and a roff encoding are compatible. + (get_default_device): Take new source_encoding argument so that we + can make ru_RU.UTF-8 use the ascii8 device and an iconv pipe + rather than utf8 directly. Drop through to the fallback default + device if none of the predefined entries in charset_table are + compatible when considering the source encoding. + (get_roff_encoding): Split LESSCHARSET handling out into a new + function ... + (get_less_charset): ... here. The caller is expected to set + environment variables rather than having it done by the library. + (get_output_encoding): New function, returning the output encoding + produced by a device. + * src/encodings.h (get_default_device): Update prototype. + (get_output_encoding, get_less_charset): Add prototypes. + * src/man.c (make_roff_command): Update calls to encoding library + for these changes. + +Sun Sep 7 23:10:01 BST 2003 Colin Watson <cjwatson@debian.org> + + Fix decision about whether a given encoding is safe to save as a cat + page. + + * src/encodings.c (directory_table): Add standard_output_encoding + member, used to set the default encoding for cat pages. + (fallback_locale_charset): Remove. + (get_standard_output_encoding): New function. + (get_locale_charset): New function, split out in modified form + from get_default_device(). + (get_default_device): Take a character set as input rather than a + locale. + * src/encodings.h (get_standard_output_encoding, + get_locale_charset): Add prototypes. + (get_default_device): Update prototype. + * src/man.c (make_roff_command): Instead of comparing devices, test + that the default character set for this manual hierarchy is being + used, and don't save cat pages if it isn't. + +Sun Sep 7 11:33:09 +0200 2003 Giuseppe Sacco <eppesuig@debian.org> + + * po/it.po: changed the header of the po file correcting the + charset and the transfer encoding. + +Sat Sep 6 11:53:06 BST 2003 Colin Watson <cjwatson@debian.org> + + * src/encodings.c (get_source_encoding): Implement encodings in + manual hierarchy directory names. Include a mini-rant about the + bizarre specification for these in FHS 2.1, which I've declined to + implement for now. + +Sat Sep 6 11:28:46 BST 2003 Colin Watson <cjwatson@debian.org> + + * src/check_mandirs.c (purge_missing): Call MYDBM_REORG() after + deleting entries. Currently only useful for gdbm. + +Sat Sep 6 00:23:03 BST 2003 Colin Watson <cjwatson@debian.org> + + * acinclude.m4 (MAN_CHECK_BDB): Append to DBLIBS rather than LIBS. + * configure.in: Likewise for gdbm and ndbm tests. Make DBLIBS an + output variable. + * src/Makefile.in: Link only the necessary programs with the + database library. + +Sat Sep 6 00:15:37 BST 2003 Colin Watson <cjwatson@debian.org> + + * libdb/db_lookup.c (make_content): Cast cont.dsize to size_t when + comparing it with the return value of strlen(). Avoids warning + when building with gdbm. + +Thu Sep 4 20:22:21 BST 2003 Christian Rose <menthos@menthos.com> + + * po/sv.po: Update from Translation Project. + +Fri Aug 29 17:46:40 BST 2003 Michael Piefel <piefel@informatik.hu-berlin.de> + + * po/de.po: Update from Translation Project. + +Fri Aug 29 17:42:15 BST 2003 Giuseppe Sacco <eppesuig@debian.org> + + * po/it.po: Updated after the revision in tp@linux.it. + +Thu Aug 28 11:19:21 BST 2003 Christian Rose <menthos@menthos.com> + + * po/sv.po: Update from Translation Project. + +Thu Aug 28 00:45:50 BST 2003 Jordi Mallach <jordi@sindominio.net> + + * po/ca.po: Update from Translation Project. + +Thu Aug 28 00:43:33 BST 2003 Christian Rose <menthos@menthos.com> + + * po/sv.po: Update from Translation Project. + +Thu Aug 28 00:40:09 BST 2003 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.c (pipeline_start): Change "couldn't exec %s" to + "can't execute %s" in line with src/man.c, to make translators' + lives easier. + (pipeline_wait): Separate "%s: %s%s" into two translatable + strings: the "(core dumped)" portion should definitely be + translated. + * src/accessdb.c (usage): Clarify "man_database" to "(The) man + database". + +Thu Aug 28 00:18:46 BST 2003 Colin Watson <cjwatson@debian.org> + + * src/globbing.c (usage): Expand "sec" to "section". + +Wed Aug 27 00:50:07 BST 2003 Giuseppe Sacco <eppesuig@debian.org> + + * po/it.po: Remove all fuzzy translations and insert missed ones. + Now this translation will be reviewed by the Italian translation + project for proofreading. + +Tue Aug 26 20:16:23 BST 2003 Colin Watson <cjwatson@debian.org> + + * Version: 2.4.2-pre1 (for translators). + * docs/NEWS: Mention pipeline library. + +Sat Aug 16 14:07:46 BST 2003 Colin Watson <cjwatson@debian.org> + + * src/lexgrog.l (find_name): Report a sensible error if file is a + directory. + +Fri Aug 15 18:11:06 BST 2003 Colin Watson <cjwatson@debian.org> + + * src/check_mandirs.c (test_manfile): file is const. + * src/check_mandirs.h (test_manfile): Update prototype. + * src/mandb.c (update_one_file): filename is const. + +Fri Aug 15 18:05:37 BST 2003 Colin Watson <cjwatson@debian.org> + + * include/manconfig.h.in: Remove incorrect prototype of basename() + which was hiding several bugs. + * configure.in: Check for <libgen.h>. + * lib/pipeline.c, src/accessdb.c, src/catman.c, src/check_mandirs.c, + src/filenames.c, src/lexgrog.l, src/man.c, src/mandb.c, + src/manpath.c, src/straycats.c, src/whatis.c, zsoelim/zsoelim.l: + Include <libgen.h> instead of relying on basename() prototype in + manconfig.h. + * src/check_mandirs.c (test_manfile), src/man.c (local_man_loop), + src/straycats.c (check_for_stray): Copy strings before calling + basename() on them. + +Fri Aug 15 00:16:13 BST 2003 Colin Watson <cjwatson@debian.org> + + * src/ult_src.c (ult_hardlink): Return a newly allocated string + rather than messily copying over an existing one (and possibly + corrupting the malloc arena). link and dir are now allocated + rather than being declared as arrays. + (ult_src): Update call to ult_hardlink(). Return 'const char *' to + make sure callers aren't messing about with our memory. + * src/ult_src.h (ult_src): Update prototype. + * src/check_mandirs.c (test_mandirs): ult is const. + * src/lexgrog.l (main): file is const. + * src/man.c (try_section): ult is const. + (display_filesystem, display_database): man_file is const. + +Sat Aug 9 21:30:16 BST 2003 Colin Watson <cjwatson@debian.org> + + * po/POTFILES.in: Add lib/pipeline.c, src/descriptions.c, + src/filenames.c, and src/globbing.c. + * po/ca.po, po/cs.po, po/da.po, po/de.po, po/es.po, po/fr.po, + po/it.po, po/ja.po, po/pt_BR.po, po/sv.po: Update with msgmerge. + +Sat Aug 9 18:28:01 BST 2003 Colin Watson <cjwatson@debian.org> + + Replace the old "wait() for one child at a time" approach with a + SIGCHLD-handling edifice that collects children's exit statuses as + they die. + + * lib/pipeline.c (pipeline_new): Initialize statuses. + (pipeline_join): Set statuses to NULL in joined pipeline. + (pipeline_join, pipeline_get_infile, pipeline_get_outfile, + pipeline_start, pipeline_wait): Assert that statuses field is NULL + or non-NULL as appropriate. + (pipeline_free): Free statuses if necessary. + + (pipeline_start): Add p to a new active_pipelines array, to be + used while reaping children. Initialize statuses elements to -1. + Block SIGCHLD while forking children. + (reap_children): New function. Delivers collected exit statuses + into statuses fields of entries in active_pipelines. + (pipeline_wait): Rather than wait()ing manually here, check + whether any statuses have been picked up by the SIGCHLD handler, + and if not call reap_children(). Remove now-obsolete TODO comment. + (pipeline_sigchld): New function, the SIGCHLD handler. + (pipeline_install_sigchld): New function, to be called once per + program. + + (pipeline_start, pipeline_wait): Add minimal debugging + information. + + * lib/pipeline.h: Prototype new functions. + (struct pipeline): New statuses member. + +Sat Aug 9 17:00:12 BST 2003 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.c (command_dup): Copy cmd->nice. + (pipeline_command): Correct condition for growing commands array. + +Mon Aug 4 20:44:16 BST 2003 Colin Watson <cjwatson@debian.org> + + * man/man1/man.man1 (HISTORY): Rearrange text to avoid having + "Wilf." at the end of a line, since groff thinks that's the end of + a sentence and adjusts spacing accordingly. (Alternatively, I + could have used \&.) + +Mon Aug 4 19:35:26 BST 2003 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.c (command_dup): Terminate argv with a NULL. + (command_dup, command_arg): Assert that argc < argv_max after + changing either. + +Mon Aug 4 19:30:22 BST 2003 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.c (pipeline_dump): New function to dump a printable + representation of a pipeline to a stream. + (pipeline_tostring): Likewise, but to a newly allocated string. + * lib/pipeline.h: Prototype these. + +Mon Aug 4 12:03:38 BST 2003 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.c (argstr_get_word): Plug some memory leaks. + +Mon Aug 4 01:05:12 BST 2003 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.c (pipeline_wait): The return value was a bit + groff-specific. Now just return the status of the last command in + the pipeline, as reported by wait(). + +Mon Aug 4 00:31:44 BST 2003 Colin Watson <cjwatson@debian.org> + + Add support for getting stdio streams for input and output. Needs + library support because pipeline_wait() needs to know to close the + stream rather than the underlying file descriptor. + + * lib/pipeline.h (struct pipeline): New infile and outfile members. + (pipeline_get_infile, pipeline_get_outfile): Add prototypes. + * lib/pipeline.c (pipeline_new): Initialize infile and outfile. + (pipeline_join): Likewise. + (pipeline_get_infile, pipeline_get_outfile): New functions. + (pipeline_wait): Check for infile and outfile and fclose() them in + preference to close()ing infd and outfd. Check for errors on + close(). + +Sun Aug 3 23:59:18 BST 2003 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.c (pipeline_start): Use dup2() instead of close() + then dup(). + +Sun Aug 3 23:52:14 BST 2003 Colin Watson <cjwatson@debian.org> + + infd and outfd should now only be set by pipeline_start(). Positive + values in want_in and want_out now indicate caller-supplied file + descriptors, while negative values indicate a request for + pipeline_start() to create a pipe. + + * lib/pipeline.h (struct pipeline): Document this. + * lib/pipeline.c (pipeline_start): Implement it. Caller-supplied + input and output file descriptors previously didn't work properly. + (pipeline_wait): Update TODO comment. + +Sun Aug 3 21:07:46 BST 2003 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.h (struct command): New 'nice' member. + * lib/pipeline.c (command_new): Initialize nice. + (pipeline_start): Change child process priority if nice is set. + +Sun Aug 3 20:50:35 BST 2003 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.c (pipeline_start): Pop all cleanups in child. + +Sun Aug 3 20:47:24 BST 2003 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.c (argstr_get_word, command_new_argstr, + command_argstr, pipeline_command_argstr): New functions to handle + constructing commands from shell-quoted strings, such as those + found in man-db configuration files. They deliberately handle only + a safe subset of shell syntax. + * lib/pipeline.h: Prototype command_new_argstr(), command_argstr(), + and pipeline_command_argstr(). + +Sun Aug 3 19:09:59 BST 2003 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.c (command_dup): New function to duplicate a command. + (pipeline_join): New function to join two pipelines together. + * lib/pipeline.h: Prototype these. + +Sun Aug 3 18:00:59 BST 2003 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.h (struct pipeline): The writeto, readfrom, writefd, + and readfd names turn out to be confusing in calling code. Rename + to want_in, want_out, infd, and outfd respectively. + * lib/pipeline.c (pipeline_new, pipeline_start, pipeline_wait): Use + new names. + +Sun Aug 3 16:35:24 BST 2003 Colin Watson <cjwatson@debian.org> + + Add support in pipeline library for writing input to or reading + output from the whole pipeline. + + * lib/pipeline.c (pipeline_new): Initialize writeto, readfrom, + writefd, and readfd. + (pipeline_start): Create extra pipes as necessary. + (pipeline_wait): Expand TODO comment. Close file descriptors from + extra pipes if necessary. + * lib/pipeline.h (struct pipeline): Add writeto, readfrom, writefd, + and readfd. + +Sun Aug 3 11:15:17 BST 2003 Colin Watson <cjwatson@debian.org> + + * lib/pipeline.c: New pipeline library, adapted from that in groff. + The interface isn't complete yet; in particular, it can't be a + replacement for popen() at the moment. + * lib/pipeline.h: New file with pipeline library interface. + * lib/Makefile.in (ALLSRCS, ALL): Build pipeline. + +Sun Aug 3 11:09:07 BST 2003 Colin Watson <cjwatson@debian.org> + + * acinclude.m4 (MAN_FUNC_STRSIGNAL): New macro to check for the GNU + extension strsignal(). + * configure.in: Use it. + * lib/xstrsignal.c: New file, wrapping strsignal() or sys_siglist + depending on what's available (and with a saner return type than + strsignal()). + * lib/Makefile.in (ALLSRCS, XOBJS): Build xstrsignal. + * include/manconfig.h.in (xstrsignal): Add prototype. + +Sun Aug 3 10:57:55 BST 2003 Colin Watson <cjwatson@debian.org> + + * include/comp_src.h.in: Protect against multiple inclusions. + +Sat Aug 2 19:32:04 BST 2003 Colin Watson <cjwatson@debian.org> + + * docs/NEWS: Document the recent security fixes. + +Sat Aug 2 12:31:24 BST 2003 Colin Watson <cjwatson@debian.org> + + * lib/error.c (error_print_progname): Use a proper prototype. + +Sat Aug 2 01:23:08 BST 2003 Colin Watson <cjwatson@debian.org> + + * tools/checkman: Tolerate spaces in NAME sections, since they occur + in practice and confused checkman before this. Prompted by a + question from James B. Hiller. + +Fri Aug 1 22:06:33 BST 2003 Colin Watson <cjwatson@debian.org> + + Fix vulnerability due to over-permissiveness of DEFINE directive. + + * src/manp.c (DEFINE_USER): New list flag. + (get_def): Note that this must not return DEFINEs set in + ~/.manpath. + (get_def_user): New function, which may return DEFINEs set in + ~/.manpath. + (add_def): Use DEFINE or DEFINE_USER depending on context. + (add_to_dirlist): Update call to add_def(). + * src/manp.h (get_def_user): Add prototype. + + * src/man.c (main): pager and cat are safe for the user to define. + (make_display_command): cat, tr, and decompressor are safe. + * src/straycats.c (check_for_stray): col and decompressor are safe. + * src/whatis.c (use_grep): whatis_grep_flags, + apropos_regex_grep_flags, apropos_grep_flags, and grep are safe. + +Fri Aug 1 01:32:37 BST 2003 Colin Watson <cjwatson@debian.org> + + * src/man.c (main): Minor whitespace cleanups. + +Fri Aug 1 01:05:42 BST 2003 Colin Watson <cjwatson@debian.org> + + * src/manp.c (mkcatdirs): Allocate manname and catname dynamically. + +Wed Jul 30 22:28:13 BST 2003 Colin Watson <cjwatson@debian.org> + + Fix vulnerability 4 posted by Vade 79 <v9@fakehalo.deadpig.org> on + BugTraq, Message-ID: + <20030729210308.15518.qmail@www.securityfocus.com>. This fix is just + a stopgap measure for now; proper list handling will be added later. + + * src/manp.c (gripe_overlong_list): New function. + (add_dir_to_list): Die gracefully if too many list entries are + added. + (add_dir_to_path_list): Likewise. Take an extra argument for the + head of the list so that we can spot this efficiently. + (create_pathlist): Update calls to add_dir_to_path_list(). + +Wed Jul 30 22:15:16 BST 2003 Colin Watson <cjwatson@debian.org> + + * src/manp.c (gripe_reading_mp_config): This is a fatal error, so + shouldn't be conditional on quiet. + +Wed Jul 30 20:48:57 BST 2003 Colin Watson <cjwatson@debian.org> + + Fix vulnerability 1 posted by Vade 79 <v9@fakehalo.deadpig.org> on + BugTraq, Message-ID: + <20030729210308.15518.qmail@www.securityfocus.com>. + + * src/manp.c (add_to_dirlist): Limit all sscanf() calls to the + appropriate buffer size. Leave a TODO to say that a replacement + that allocates its own memory would be welcome. + +Wed Jul 30 20:38:40 BST 2003 Colin Watson <cjwatson@debian.org> + + Fix vulnerabilities 2 and 3 posted by Vade 79 + <v9@fakehalo.deadpig.org> on BugTraq, Message-ID: + <20030729210308.15518.qmail@www.securityfocus.com>. + + * src/ult_src.c (ult_softlink): Return a newly allocated string + rather than copying into fullpath. + (test_for_include): Return a newly allocated string rather than + copying into rel (which was a pointer into part of basename in + ult_src(), and wasn't reallocated in the event that the .so text + was too large). + (ult_src): Allocate basename dynamically rather than using a + static buffer. relative is no longer needed. Update for changes in + ult_softlink() and test_for_include(). + +Wed Jul 30 12:33:25 BST 2003 Colin Watson <cjwatson@debian.org> + + * src/man.c (close_cat_stream): The unlink(tmp_cat_file) cleanup is + only pushed if (!debug), so apply the same condition to popping + it. + +Wed Jul 30 12:21:20 BST 2003 Colin Watson <cjwatson@debian.org> + + * src/descriptions.c (parse_descriptions): Revert this part of + xstrdup(NULL) change from 28 April 2003; head->whatis is undefined + if the else branch was taken. + +Wed Jul 30 10:40:06 BST 2003 Colin Watson <cjwatson@debian.org> + + * src/man.c (find_in_path): Avoid leaking filename for each PATH + element. + +Wed Jul 30 10:36:22 BST 2003 Colin Watson <cjwatson@debian.org> + + * src/compression.c (decompress): Don't free command until after + printing the error message that includes it. + +Wed Jul 30 10:23:50 BST 2003 Colin Watson <cjwatson@debian.org> + + * src/mandb.c (main): Return non-zero with an error message if no + databases were updated. Required so that man knows not to call + mandb over and over again. + +Sat Jun 28 01:26:55 BST 2003 Colin Watson <cjwatson@debian.org> + + * man/it_IT.88591/man1/apropos.man1: Use %date% rather than + %date_it% (which the build system no longer supports). + +Sat Jun 28 00:23:02 BST 2003 Colin Watson <cjwatson@debian.org> + + * man/man1/man.man1: Clarify section 3 as "program libraries" rather + than "system libraries". + +Tue May 6 00:50:25 CEST 2003 Giuseppe Sacco <eppesuig@debian.org> + + * Updated the apropos italian man page. + +Mon May 5 19:47:07 BST 2003 Colin Watson <cjwatson@debian.org> + + * src/man.c (set_term, get_term, store_line_length): Use the + fileno() of stdin and stdout respectively instead of literal 0 and + 1. + * src/ult_src.c (ult_src): Use STRNEQ() instead of strncmp(). + +Mon May 5 18:35:02 BST 2003 Colin Watson <cjwatson@debian.org> + + * src/encodings.c (directory_table): Add Czech -> ISO-8859-2. + +Thu May 1 19:12:54 BST 2003 Colin Watson <cjwatson@debian.org> + + * configure.in (CFLAGS): Add -Wpointer-arith and -Wstrict-prototypes + for gcc. + + * src/man.h: Move prototype from convert_name.c to ... + * src/convert_name.h: ... here (new file). + * src/convert_name.c: Include "convert_name.h". Add some TODO + comments. + * src/man.c: Include "convert_name.h". + + * lib/error.c: Include "error.h". Prototype strerror() fully. + * lib/tempfile.c: Include "manconfig.h" instead of prototyping + strappend() and xstrdup(). Prototype path_search() fully. + * lib/xmalloc.c: Remove most K&R compatibility, since it's not + really supported elsewhere in man-db. + * src/globbing.c: Include "globbing.h". + (match_in_directory): Add static. + * src/man.c (set_term, get_term): Add static. + (int_handler): Move above main(), and add static. + (main): Remove int_handler() prototype. + (make_roff_command, format_display_and_save): Prototype + old_handler fully. + (open_cat_stream, display_catman): Cast to cleanup_fun rather than + to an incomplete prototype. + * src/manp.c (guess_manpath): Add static. + * src/security.c (gripe_set_euid): Prototype fully. + * src/ult_src.c (realpath): Move prototype to the non-STDC_HEADERS + case. + + * src/lexgrog.l: Add '%option warn'. + +Thu May 1 17:39:55 BST 2003 Colin Watson <cjwatson@debian.org> + + * configure.in (CFLAGS): Add -W for gcc. + + * lib/hashtable.c (hash): Change array index type to size_t. + * src/globbing.c (dirent_hash_free, match_in_directory): Likewise. + + * src/check_mandirs.c (purge_pointers): Remove unused manpath + argument. + * src/check_mandirs.h (purge_pointers): Update prototype. + * src/mandb.c (update_one_file): Update call to purge_pointers(). + + * src/catman.c (catman): Remove unused arg_no argument. + (do_catman): Update call to catman(). + * src/man.c (make_roff_command): dir is unused except #ifdef + ALT_EXT_FORMAT. + * src/mandb.c (cleanup): dummy is unused. + * src/ult_src.c (ult_hardlink): Change type of inode to ino_t. + (ult_softlink): mantree is unused. + (ult_src): Update call to ult_softlink(). + * src/whatis.c (apropos): lowpage is unused except #ifdef APROPOS. + * src/wrapper.c (main): argc is unused. + +Thu May 1 16:52:44 BST 2003 Colin Watson <cjwatson@debian.org> + + Remove all assumptions that string literals have type 'char *' + rather than 'const char *'. + + * configure.in (CFLAGS): Add -Wwrite-strings for gcc. + + * lib/tempfile.c (xstrdup): First argument is const. + (path_search): Return 'const char *'. + (create_tempfile, create_tempdir): Copy return value of + path_search() right away rather than after checking for NULL. + + * libdb/db_ver.c (dbver): Take a private copy of VER_KEY. + (dbver_wr): Take private copies of VER_KEY and VER_ID. + + * src/accessdb.c (cat_root): Add const. + * src/catman.c (parse_for_sec): Remove __inline__; add const to both + arguments. Take private copies of "man" and the basic options. + (main): Copy "C" for locale. Make sections etc. 'const char **', + since STD_SECTIONS is an array of 'const char *'. + * src/check_mandirs.c (update_db_time, reset_db_time, update_db): + Take a private copy of KEY. + * src/filenames.c (make_filename): Make type const. + * src/filenames.h (make_filename): Update prototype. + * src/globbing.c (extension, mandir_layout): Add const. + * src/lexgrog.l (fname): Add const. + (find_name): Make filename const. + (main): Set program_name here from argv[0] rather than from a + string literal. + * include/manconfig.h.in (find_name): Update prototype. + * src/man.c (lang_dir): Add static. Copy string literals into ld. + Use xstrndup() rather than copying and then inserting '\0'. + (extension, alt_system_name, section_list, preprocessors, pager, + locale, std_sections, external, gxditview, html_pager): Add const. + (add_roff_line_length): First argument is const. Return a copy of + it if necessary. + (gripe_no_man): Copy external before passing it to basename(). + (main): Copy "C" for internal_locale. Reorganize locale + reinitialization slightly so that locale can be const. + (man_getopt): Set 'const char *' and 'char *' variables to NULL + separately. + (is_section, compare_candidates, man): Use a 'const char **' to + iterate through section_list. + (make_roff_command): Remove __inline__. Take a copy of "" for dev + so that dev is always allocated memory. Handle filter in a more + const-safe way (although there's still a memory leak). + (get_section_list): Remove __inline__. Return 'const char **'. + * src/man.h (get_section_list): Update prototype. + * src/manp.c (get_from_list): Make return value and first argument + const. + (get_def): Make return value and both arguments const. + (get_sections): Return const. + (cat_manpath): Make path and catdir const. + * src/manp.h (get_def, get_sections): Update prototypes. + * src/manpath.c (main): Make alt_system const. + * src/whatis.c (use_grep): Make flags and anchor const. + (main): Make manp and alt_systems const. Copy "C" for locale. + * zsoelim/zsoelim.l (main): Copy argv[0] basename for program_name, + as basename()'s return value may not be long-lived. Copy "-" for + so_name[0]. + + * src/mandb.c (main): Don't bother remembering the return value of + setlocale(). + * src/manpath.c (main): Likewise. + +Mon Apr 28 15:11:28 BST 2003 Colin Watson <cjwatson@debian.org> + + * src/catman.c (main): Don't guard xstrdup() from NULL input, as it + checks itself. + * src/check_mandirs.c (test_manfile): Likewise. + * src/descriptions.c (parse_descriptions): Likewise. + * src/mandb.c (main): Likewise. + * src/whatis.c (main): Likewise. + +Mon Apr 28 09:06:28 BST 2003 Colin Watson <cjwatson@debian.org> + + Introduce a readdir() cache, which substantially speeds up mandb's + purging functions (from 2 minutes to under 45 seconds on my laptop, + and from about 280000 to about 13500 system calls). + + * src/globbing.c (dirent_hash_free, update_directory_cache): New + functions. + (match_in_directory): Use update_directory_cache() rather than + reading the directory on every call. + * docs/NEWS: Document this. + +Mon Apr 28 00:51:11 BST 2003 Colin Watson <cjwatson@debian.org> + + * lib/hashtable.c (hash_lookup): Return the definition rather than + the hash entry structure. This turns out to be a lot more useful. + * lib/hashtable.h (hash_lookup): Update prototype. + * src/man.c (try_db): Simplify; in_cache is no longer needed. Just + assign to the target variable directly. + * src/check_mandirs.c (test_manfile): Likewise. xstrdup() already + checks for NULL input, so don't bother checking here. + +Tue Apr 22 19:56:13 BST 2003 Colin Watson <cjwatson@debian.org> + + * docs/HACKING: New prototypical document for developers. + +Tue Apr 22 19:48:46 BST 2003 Colin Watson <cjwatson@debian.org> + + * src/globbing.c (parse_layout, look_for_file): Add a BSD layout in + which cat pages have the extension .0 (Jeremy C. Reed). More work + is needed elsewhere so that man can write such cat pages, though. + * configure.in (--enable-mandirs): Add BSD layout. + * manual/intro.me (Arguments to configure): Document + --enable-mandirs=BSD. + * README: Sync with manual/intro.me. + +Tue Apr 22 19:38:03 BST 2003 Colin Watson <cjwatson@debian.org> + + * libdb/COPYING.LIB: Remove (obsoleted in favour of + docs/COPYING.LIB). + * GNUmakefile.in (_docs, _libdb): Include COPYING.LIB from docs/ + rather than libdb/. + +Tue Apr 22 19:34:30 BST 2003 Colin Watson <cjwatson@debian.org> + + * tools/mandb_[nt]fmt-script: Correct "# !" to "#! " on the shebang + line. + +Tue Apr 15 18:16:30 BST 2003 Colin Watson <cjwatson@debian.org> + + * src/Makefile.in (LFLAGS): Provide -8 and -B as separate arguments. + flex 2.5.31 is stricter about this. + * zsoelim/Makefile.in (LFLAGS): Likewise. + +Sun Apr 13 14:36:29 BST 2003 Colin Watson <cjwatson@debian.org> + + * src/encodings.c (directory_table): Add Hungarian -> ISO-8859-2. + +Sun Apr 13 13:39:38 BST 2003 Colin Watson <cjwatson@debian.org> + + * src/mandb.c (xcopy): Return 0 if the source file doesn't exist, so + that the caller can go on and silently create a non-existent + database rather than bailing out. + +Sun Apr 13 12:49:33 BST 2003 Colin Watson <cjwatson@debian.org> + + * src/mandb.c: Remove DO_CHOWN define and simply use SECURE_MAN_UID. + +Thu Apr 10 23:51:43 BST 2003 Byrial Ole Jensen <byrial@image.dk> + + * po/da.po: Update from Translation Project. + +Mon Apr 7 09:12:27 BST 2003 Colin Watson <cjwatson@debian.org> + + * src/man.c (man): Call local_man_loop() straight away if name + contains a slash. Make the number of pages found an output + argument rather than the return value, so that we can include + local_man_loop()'s return behaviour. + (main): Update throughout for new man() signature. Don't call + local_man_loop() if man() returns an error, as man() now sorts + that out for itself. + * src/man.h (man): Update prototype. + +Mon Apr 7 08:09:08 BST 2003 Colin Watson <cjwatson@debian.org> + + * include/Defines.in: Generate dependencies in .depend rather than + the current directory. Suppress echoing of dependency generation + commands. + * libdb/Makefile.in: Remove .depend directory on distclean. Always + use dependencies (except on clean), not just when --enable-debug + was passed to configure. + * src/Makefile.in: Likewise. Set up $(DEFS_*) variables so that the + correct flags are used when generating dependencies. + * libdb/.cvsignore, src/.cvsignore: Ignore .depend. + + * configure.in: Remove now-redundant --enable-debug option. Remove + search for libefence if --enable-debug is used; using it with + LD_PRELOAD is generally more convenient anyway. + * README, manual/intro.me (Arguments to configure): Remove + documentation for --enable-debug. + * docs/NEWS: Document the removal. + +Mon Apr 7 01:02:27 BST 2003 Colin Watson <cjwatson@debian.org> + + * man/ja_JP.eucJP/man1/man.man1: Replace "%date%" with the Japanese + "ima", meaning "now" or "the present time" (thanks, Liyang Hu). + +Mon Apr 7 00:04:30 BST 2003 Colin Watson <cjwatson@debian.org> + + * configure.in: Don't generate language-specific date variants for + man pages, as that requires all the relevant locales to be + installed on the build machine. Use the ISO 8601 date format + instead. + * include/Defines.in: Remove obsolete substitutions of date_it, + date_es, date_de, and date_fr. + * man/Makefile.in: Likewise. + * man/de_DE.88591/man1/*.man1, man/de_DE.88591/man5/*.man5, + man/de_DE.88591/man8/*.man8, man/es_ES.88591/man1/*.man1, + man/es_ES.88591/man5/*.man5, man/es_ES.88591/man8/*.man8, + man/it_IT.88591/man1/*.man1, man/it_IT.88591/man5/*.man5, + man/it_IT.88591/man8/*.man8 (.TH): Replace "%date_de%", + "%date_es%", and "%date_it%" substitutions by plain "%date%". + * man/man1/man.man1 (HISTORY): "%date%" -> "present day". + * man/it_IT.88591/man1/man.man1 (STORIA): Similarly, "%date_it%" -> + "presente" (present day). + +Sun Apr 6 21:39:36 BST 2003 Colin Watson <cjwatson@debian.org> + + * src/man.c (main): Ignore LANGUAGE if a locale is explicitly + specified using the -L/--locale option. + +Sun Apr 6 20:28:57 BST 2003 Colin Watson <cjwatson@debian.org> + + Revamp locale encoding support. The old code made the incorrect + assumption that the source encoding of manual pages is dependent on + the locale. + + If MULTIBYTE_GROFF is defined then man will assume that it is using + a version of groff with the multibyte patch applied, which supports + some additional locales. + + * src/man.c (lang_table, determine_lang_table): Remove. + (lang_dir): Return "C" if there is no language directory element. + (make_roff_command): Find out the source encoding for the + requested man page and the default device for the current locale, + and use these to select a device more intelligently. Insert an + iconv pipe if the source encoding differs from the input *roff + encoding for the current device. + * src/encodings.c: New file. There are three tables replacing the + old lang_table: directory_table, charset_table, and device_table. + (get_source_encoding): New function, returning the assumed source + encoding for the current page from directory_table. + (get_default_device): New function, returning the default *roff + output device based on the current locale from charset_table. + (get_roff_encoding): New function, returning the input encoding + expected by *roff from device_table. This is always ISO-8859-1 + unless MULTIBYTE_GROFF is defined (this is still a subject of some + debate, and will be UTF-8 for all devices in groff 2). + * src/encodings.h: Prototype new functions. + * src/Makefile.in (man): Add encodings.o. + * docs/NEWS: Document the above. + +Sun Mar 30 23:14:47 BST 2003 Colin Watson <cjwatson@debian.org> + + * man/man1/man.man1 (SYNOPSIS): Both -H and -T take optional + arguments. The fact that they're optional means that no space is + allowed between the option and its argument (thanks to Peter Muir + for that observation). + (OPTIONS): Likewise. Document the 'browser' argument to -H. + Correct a couple of hyphens to dashes. + +Fri Mar 28 09:23:19 GMT 2003 Colin Watson <cjwatson@debian.org> + + * src/man.c (main): Protect ruid/euid debugging statement with + #ifdef SECURE_MAN_UID. + (commit_tmp_cat): Likewise for temporary cat ownership code. + * src/security.c (drop_effective_privs, regain_effective_privs): + priv_drop_count is only declared #ifdef SECURE_MAN_UID. Move the + corresponding directives so that these functions are no-ops if + that symbol isn't defined. + * docs/NEWS: Document this. + +Wed Mar 26 15:04:00 GMT 2003 Colin Watson <cjwatson@debian.org> + + * manual/format.me: Correct location of example external formatter + script. + +Tue Mar 25 04:15:41 GMT 2003 Colin Watson <cjwatson@debian.org> + + * configure.in: Use AC_MSG_NOTICE throughout rather than MAN_ECHO. + Move the definition of MAN_ECHO_VAR to just above its only uses. + +Tue Mar 25 03:44:06 GMT 2003 Giuseppe Sacco <eppesuig@debian.org> + + * po/it.po: Update. + +Tue Mar 25 03:41:13 GMT 2003 Colin Watson <cjwatson@debian.org> + + * src/whatis.c (parse_name): Free lowdbname before returning. + +Tue Mar 25 03:38:39 GMT 2003 Colin Watson <cjwatson@debian.org> + + * lib/strappend.c, lib/xstrdup.c, lib/xstrndup.c: Remove unused + definitions of VOID. + +Sun Mar 16 00:51:12 GMT 2003 Jeremy C. Reed <reed@reedmedia.net> + + * configure.in (--enable-mandirs): Use 'mandirs' rather than + 'mandir', as the latter clashes with an autoconf variable. + +Wed Mar 12 13:17:45 GMT 2003 Colin Watson <cjwatson@debian.org> + + * libdb/db_lookup.c (gripe_bad_multi_key): This function has been + unused since 24 June 2002 (noticed by Giuseppe Sacco). Remove. + * libdb/db_storage.h (gripe_bad_multi_key): Remove prototype. + +Tue Mar 11 21:17:56 GMT 2003 Giuseppe Sacco <eppesuig@debian.org> + + * po/it.po: Update. + +Mon Mar 10 17:20:46 GMT 2003 Colin Watson <cjwatson@debian.org> + + * libdb/db_btree.c, libdb/db_delete.c, libdb/db_gdbm.c, + libdb/db_lookup.c, libdb/db_ndbm.c, libdb/db_storage.h, + libdb/db_store.c, libdb/db_ver.c: Style cleanup (as with src/* on + 28 May 2001). No functional changes. + +Mon Mar 10 15:55:34 GMT 2003 Colin Watson <cjwatson@debian.org> + + * GNUmakefile.in (EVERYTHING, ALL): Move intl ahead of libdb. (Not + 'make -j'-clean, though ...) + * libdb/Makefile.in: Use '$(top_srcdir)' rather than '..' + throughout. Add $(top_srcdir)/intl to the include path if USE_NLS + is set. + +Mon Mar 10 15:24:04 GMT 2003 Colin Watson <cjwatson@debian.org> + + * configure.in (AC_CONFIG_HEADER): Generate config.h rather than + include/config.h. intl/Makefile.in is insistent on config.h being + in the top-level directory. + * GNUmakefile.in, manual/comp.me: Replace 'include/config.h' with + 'config.h' throughout. + * .cvsignore, include/.cvsignore: Update for new config.h and + config.h.in locations. + +Mon Mar 10 15:00:32 GMT 2003 Colin Watson <cjwatson@debian.org> + + * lib/mkdtemp.c: Define __GT_DIR if necessary. + * lib/tempfile.c: Prototype mkstemp() and mkdtemp(). + +Mon Mar 10 14:46:39 GMT 2003 Colin Watson <cjwatson@debian.org> + + * lib/tempname.c: Include "config.h" rather than <config.h>. + +Mon Mar 3 22:00:03 GMT 2003 Colin Watson <cjwatson@debian.org> + + * src/mandb.c (xcopy): Remove silly calls to fclose() on null + pointers. + +Sun Mar 2 20:37:08 GMT 2003 Colin Watson <cjwatson@debian.org> + + * src/mandb.c (xcopy): Save errno before performing operations that + might change it. Close ifp as well if an error occurs while + opening ofp. + +Fri Feb 28 01:50:21 GMT 2003 Colin Watson <cjwatson@debian.org> + + * src/man.c (find_in_path): path needs to be preserved in order to + be freed safely, or else we segfault. Use a temporary variable for + strsep() instead. + +Mon Feb 24 17:05:25 GMT 2003 Colin Watson <cjwatson@debian.org> + + * man/man1/man.man1 (OPTIONS): Only use the \[shc] character if it's + available, which is the case on groff's latin1 and utf8 devices + but not on others. Otherwise, use \(hy. + +Mon Feb 24 00:17:39 GMT 2003 Colin Watson <cjwatson@debian.org> + + * docs/manpage.example (OPTIONS): Move the note about '\-' versus + '-' from a comment into displayed text. + +Sun Feb 23 00:34:12 GMT 2003 Alexandre Folle de Menezes <afmenez@terra.com.br> + + * po/pt_BR.po: Update from Translation Project. + +Sat Feb 22 18:32:58 GMT 2003 Colin Watson <cjwatson@debian.org> + + * acinclude.m4 (MAN_CHECK_BDB): Remove some extra calls to + AC_MSG_RESULT, since AC_CACHE_CHECK already calls that. + +Sat Feb 22 18:10:14 GMT 2003 Morten Brix Pedersen <morten@wtf.dk> + + * po/da.po: Translate a few more strings. + +Sat Feb 22 18:06:09 GMT 2003 Alexandre Folle de Menezes <afmenez@terra.com.br> + + * po/pt_BR.po: Update from Translation Project. + +Sat Feb 22 17:50:55 GMT 2003 Colin Watson <cjwatson@debian.org> + + * src/Makefile.in: Fix typo ("developement" -> "development"). + * src/manp.c (add_to_dirlist): Fix typo ("mach" -> "match"). + +Sat Feb 22 17:41:07 GMT 2003 Colin Watson <cjwatson@debian.org> + + * src/manp.c (read_config_file): If user_config_file is non-NULL, + use it instead of ~/.manpath. Programs can now set the user + configuration file to be used. + + * src/catman.c, src/mandb.c, src/manpath.c, src/whatis.c + (long_options): Add -C/--config-file option. + (usage): Document it. + (main): Handle it. + * src/man.c (long_options): Add -C/--config-file option. + (usage): Document it, along with adding -i and -I to the synopsis. + (man_getopt): Handle it. + * man/man1/apropos.man1, man/man1/man.man1, man/man1/manpath.man1, + man/man1/whatis.man1, man/man8/catman.man8, man/man8/mandb.man8 + (SYNOPSIS): Add -C. + (OPTIONS): Describe -C/--config-file. + + * docs/NEWS: Document this addition. + +Fri Feb 21 18:32:21 GMT 2003 Colin Watson <cjwatson@debian.org> + + * src/Makefile.in (man): lexgrog.o is no longer needed. Removing it + takes 24K off the size of a stripped man binary on Linux/i386. + +Fri Feb 21 18:12:45 GMT 2003 Colin Watson <cjwatson@debian.org> + + * src/mandb.c (xcopy): Improve error handling. + (mandb): Since xcopy() now returns int, handle its return value. + +Fri Feb 21 16:40:26 GMT 2003 Colin Watson <cjwatson@debian.org> + + * src/man.c (find_in_path): New function to look for executables on + the $PATH. + (gripe_no_man): Only emit the "undocumented" message if a + corresponding executable is found on the $PATH. + * docs/NEWS: Document this. + +Fri Feb 21 16:26:00 GMT 2003 Colin Watson <cjwatson@debian.org> + + * docs/NEWS: Preliminary entries for 2.4.2. + +Fri Feb 21 15:49:08 GMT 2003 Colin Watson <cjwatson@debian.org> + + * zsoelim/zsoelim.l: Internationalize usage and error messages. + +Fri Feb 21 15:46:04 GMT 2003 Colin Watson <cjwatson@debian.org> + + * src/check_mandirs.c (gripe_bogus_manpage, make_filename, + filename_info): Move to ... + * src/filenames.c: ... here. + * src/check_mandirs.h: Move corresponding prototypes to ... + * src/filenames.h: ... here. + + * src/check_mandirs.c (purge_pointers): New function to purge any + entries whose pointers refer to a given name. + * src/check_mandirs.h (purge_pointers): Add prototype. + * src/mandb.c (long_options): Add -f/--filename option. + (usage): Document it, along with -t/--test. + (update_one_file): New function to update a single file in an + existing database. + (update_db_wrapper): Call update_one_file() if using --filename. + (main): Handle --filename option. If using --filename, only call + mandb() if the manpath prefix matches. + * man/man8/mandb.man8 (SYNOPSIS): Improve *roff style and document + -p. Add separate call summary for when -f is used. + (OPTIONS): Document -f. + + * lib/hashtable.c (hash_remove): New function to remove an entry + from a hash table. + * lib/hashtable.h (hash_remove): Add prototype. + + * libdb/db_store.c (replace_if_necessary): Replace entries with ids + other than ULT_MAN too, so that their timestamps can be updated. + Add more debugging output. + * src/man.c (need_to_rerun): Remove. + (display_database): Remove code to check whether pages found in + databases are up to date. This is done elsewhere now. + (run_mandb): New function, used instead of updating databases + directly. + (main): Call run_mandb() instead of need_to_rerun(). + (maybe_update_file): New function to check whether a page found in + a database is up to date. If not, use run_mandb() to recache it. + (try_db): Use run_mandb() rather than create_db(). Use #defines + for special return values rather than magic numbers. Check whether + pages are up to date as they're found. + (locate_page): If try_db() returns TRY_DATABASE_UPDATED (i.e. + mandb was called to update some pages), call it again. + (display_pages): Use a switch with named candidate types instead + of an if. + + * src/Makefile.in (DEFS_man.o): Add definition for MANDB. + (man): Database code is no longer needed. Add filenames.o. + (mandb): Add filenames.o. + +Mon Feb 17 23:28:55 GMT 2003 Colin Watson <cjwatson@debian.org> + + * src/manpath.c: Remove unused prototypes. + +Tue Jan 21 01:42:16 GMT 2003 Colin Watson <cjwatson@debian.org> + + * src/mandb.c (xcopy, main): Minor whitespace cleanups. + * src/ult_src.c: Fix typo (loosing -> losing). + +Mon Jan 6 03:25:16 GMT 2003 Colin Watson <cjwatson@debian.org> + + * src/man.c (display_pages): Drop privileges if candp->path is a + user manpath. Inner code generally dropped privileges anyway, + certainly when running external commands, but the absence of this + drop meant that pages in non-world-readable user manpaths could + not be read. + +Mon Jan 6 03:19:57 GMT 2003 Colin Watson <cjwatson@debian.org> + + * lib/error.c (error): Print a backtrace if the BACKTRACE_ON_ERROR + symbol is defined. This undoubtedly isn't portable and is not + intended for production use; it's just a last-resort way to get a + backtrace when the usual methods fail, chiefly when running + setuid. + +Tue Dec 31 04:39:03 GMT 2002 Colin Watson <cjwatson@debian.org> + + * src/man.c (man): If update is set, need_to_rerun() will always + have been called already by now. Remove this redundant code. + +Tue Dec 31 04:26:50 GMT 2002 Colin Watson <cjwatson@debian.org> + + * man/man1/apropos.man1, man/man1/lexgrog.man1, + man/man1/manpath.man1, man/man1/whatis.man1, + man/man1/zsoelim.man1: --version no longer displays author + information. + +Sun Dec 29 19:57:55 GMT 2002 Colin Watson <cjwatson@debian.org> + + * src/check_mandirs.c, src/check_mandirs.h: Move page_description + interface functions to ... + * src/descriptions.c, src/descriptions.h: ... here (new files). + * src/Makefile.in (man, mandb): Link descriptions.o. + + * libdb/db_storage.h: Include libdb/mydbm.h for the datum type. + +Sun Dec 29 19:51:11 GMT 2002 Colin Watson <cjwatson@debian.org> + + * src/lexgrog.l: Add commas between short and long options in usage + output. + + * src/accessdb.c (main): Support -h/--help and -v/--version options. + (usage): Document them. Move MAN_DB outside translatable string. + * man/man8/accessdb.man8 (SYNOPSIS, OPTIONS): Document new options. + (AUTHOR): Add myself. + * src/globbing.c (long_options, args, main): Support -h/--help and + -v/--version options. + (usage): New function. + * zsoelim/zsoelim.l: Support long option forms of -C (--compatible), + -h (--help), and -V (--verbose). + * man/man1/zsoelim.man1: Document long options. + + * src/Makefile.in: Link $(TOOLS) as well as $(PROGS) with version.o. + +Sun Dec 29 19:40:46 GMT 2002 Colin Watson <cjwatson@debian.org> + + Patch partly by Werner Fink <werner@suse.de>. + + * src/whatis.c (args, long_options): Add -v/--verbose option. + (usage): Document it. + (get_whatis): Print pointer loop warnings only if --verbose. + (main): Handle --verbose option. + * man/man1/apropos.man1 (OPTIONS): Document --verbose. + * man/man1/whatis.man1 (OPTIONS): Likewise. + +Sun Dec 22 23:30:12 GMT 2002 Colin Watson <cjwatson@debian.org> + + * src/check_mandirs.c (test_manfile): Initialize the mandata struct + on the stack to zero. + (count_glob_matches): Likewise. + * src/straycats.c (check_for_stray): Likewise. + * src/man.c (try_section): Use infoalloc() (which initializes the + mandata struct to zero) rather than malloc(). This had caused + several uses of uninitialized memory (Debian bug #168584). + + * src/check_mandirs (purge_whatis): Compare info->pointer against + "-", not just its first character. + +Sun Dec 22 19:29:38 GMT 2002 Colin Watson <cjwatson@debian.org> + + * Version: 2.4.1. + * docs/NEWS, man-db.gnu, man-db.lsm: Update. + +Sun Dec 22 18:19:09 GMT 2002 Colin Watson <cjwatson@debian.org> + + * libdb/db_btree.c (btree_findkey): Cast key.dsize to int when using + it as an fprintf() field width. + +Sun Dec 22 18:15:51 GMT 2002 Colin Watson <cjwatson@debian.org> + + Patch inspired by part of SuSE's diff, although not identical. + + * GNUmakefile.in: Export DESTDIR. + * man/Makefile.in, src/Makefile.in, zsoelim/Makefile.in: Honour + DESTDIR when installing and uninstalling files. + +Sun Dec 22 14:14:37 GMT 2002 Colin Watson <cjwatson@debian.org> + + * GNUmakefile.in (dist): Don't update .po files automatically, since + they're kept under revision control. + +Sun Dec 22 13:59:23 GMT 2002 Colin Watson <cjwatson@debian.org> + + * po/ca.po, po/cs.po, po/da.po, po/de.po, po/es.po, po/fr.po, + po/it.po, po/ja.po, po/pt_BR.po, po/sv.po: Update with msgmerge. + +Sun Dec 22 13:44:20 GMT 2002 Alexandre Folle de Menezes <afmenez@terra.com.br> + + * po/pt_BR.po: Update from Translation Project. + +Sat Dec 21 13:30:43 GMT 2002 Colin Watson <cjwatson@debian.org> + + * src/check_mandirs.c (count_glob_matches): Exclude file names which + fail stat(), such as dangling symlinks. + +Sat Dec 21 03:01:34 GMT 2002 Colin Watson <cjwatson@debian.org> + + * src/check_mandirs.c (count_glob_matches): New function, + sanity-checking results from look_for_file(). This should probably + be done in look_for_file() itself eventually, but that requires + more widespread changes. + (purge_normal, purge_whatis): Use it. + + * src/check_mandirs.c (gripe_bogus_manpage, gripe_rwopen_failed, + filename_info, purge_normal, purge_whatis): Constify arguments. + * src/check_mandirs.h (filename_info): Update prototype. + + * docs/NEWS: Document --enable-mandirs guesswork. + * src/.cvsignore: Add the globbing test executable. + +Fri Dec 20 15:38:48 GMT 2002 Colin Watson <cjwatson@debian.org> + + * src/globbing.c (main): Make the test program compile again, and + add full argument parsing. + * src/Makefile.in (globbing): Link with util.o. + +Fri Dec 20 15:34:51 GMT 2002 Colin Watson <cjwatson@debian.org> + + * configure.in: Guess the --enable-mandirs setting where possible if + it isn't specified explicitly. + +Fri Dec 20 02:28:15 GMT 2002 Colin Watson <cjwatson@debian.org> + + * src/check_mandirs.c (purge_missing): Match database entries + against real filenames using the name field where available, not + the lowercased field. + +Fri Dec 20 02:15:21 GMT 2002 Colin Watson <cjwatson@debian.org> + + * src/mandb.c (mandb): If force_rescan is set, delete the database + and recreate it from scratch. + * src/check_mandirs.c (testmandirs): force_rescan is handled + elsewhere now. + (purge_normal, purge_whatis): Remove inline qualifier. + (check_multi_key): New function to check for broken multi keys + such as those generated by 2.4.0. + (purge_missing): Call check_multi_key() where necessary. + + * src/lexgrog.l (find_name): Revert change of 27 November 2002, as + calling ult_src() inside find_name() breaks mandb (which already + calls ult_src() itself). Instead: + (main): Do the ult_src() resolution here for each element of argv. + + * src/ult_src.c (ult_src): 'name' argument is const. + * src/lexgrog.l (find_name): 'file' argument is const. + * include/manconfig.h.in, src/ult_src.h: Update prototypes. + +Mon Dec 16 05:28:34 GMT 2002 Colin Watson <cjwatson@debian.org> + + From SuSE's diff: + + * lib/error.c: Add 'extern' to prototypes. + * lib/strappend.c, lib/xstrdup.c, lib/xstrndup.c: #include + "manconfig.h" rather than using an explicit prototype. + * lib/xstrdup.c (xstrdup): 'string' should be const. + + * po/cs.po: Fix a format string. + + * src/lexgrog.l: Add Japanese translation of NAME. + * src/man.c: 'wd', 'cwd', and local_man_loop() are static. + +Mon Dec 16 04:30:39 GMT 2002 Colin Watson <cjwatson@debian.org> + + * configure.in: 'test "$foo"' => 'test -n "$foo"' throughout. Taken + from SuSE's diff. + +Wed Dec 4 21:02:48 GMT 2002 Colin Watson <cjwatson@debian.org> + + * man/man1/lexgrog.man1: Replace `, ', and - (for literal dash + rather than hyphen) with \(oq, \(cq, and \- respectively. + (NOTES): lexgrog attempts to handle .so requests now. + +Tue Dec 3 01:39:54 GMT 2002 Colin Watson <cjwatson@debian.org> + + * src/man.c (main): Only set multiple_locale if it's going to be + used. Look at multiple_locale rather than internal_locale when + performing special $LANGUAGE handling. + +Mon Dec 2 14:08:08 GMT 2002 Michael Piefel <piefel@informatik.hu-berlin.de> + + * po/de.po: Fix a missing newline. + +Mon Dec 2 13:58:55 GMT 2002 Michael Piefel <piefel@informatik.hu-berlin.de> + + * po/de.po: Update from Translation Project. + +Fri Nov 29 15:40:21 GMT 2002 Jordi Mallach <jordi@sindominio.net> + + * po/ca.po: Update from Translation Project. + +Wed Nov 27 20:27:59 GMT 2002 Christian Rose <menthos@menthos.com> + + * po/sv.po: Update from Translation Project. + +Wed Nov 27 02:43:03 GMT 2002 Colin Watson <cjwatson@debian.org> + + * Version: 2.4.1-pre1 (for translators). + * docs/NEWS: Update. + +Wed Nov 27 02:29:42 GMT 2002 Colin Watson <cjwatson@debian.org> + + * src/lexgrog.l (find_name): Call ult_src() to resolve .so links. + * src/Makefile.in: Link ult_src.o into lexgrog. + +Wed Nov 27 01:49:18 GMT 2002 Colin Watson <cjwatson@debian.org> + + * release.sh: Don't pass --copy to autogen.sh, as it's a no-op now. + * po/.cvsignore, tools/.cvsignore: More ignored files. + +Wed Nov 27 01:46:27 GMT 2002 Colin Watson <cjwatson@debian.org> + + * tools/mkinstalldirs: Remove. It's more trouble than it's worth to + store something in CVS that autopoint thinks it controls. + +Wed Nov 27 01:25:52 GMT 2002 Colin Watson <cjwatson@debian.org> + + * po/da.po: Correct some minor typographical mistakes (mostly + missing spaces or newlines at the end of one piece of a string + concatenation). + * po/ca.po, po/cs.po, po/da.po, po/de.po, po/es.po, po/fr.po, + po/it.po, po/ja.po, po/pt_BR.po, po/sv.po: Update with msgmerge. + +Wed Nov 27 00:51:47 GMT 2002 Colin Watson <cjwatson@debian.org> + + * 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: + Add a .pc request so that the % characters we use for + substitutions don't get translated into page numbers when + formatting the unsubstituted pages. + +Wed Nov 27 00:37:29 GMT 2002 Colin Watson <cjwatson@debian.org> + + * man/man1/lexgrog.man1 (WHATIS PARSING): Add an example of how NAME + sections should be written in mdoc. + +Tue Nov 26 22:57:27 GMT 2002 Colin Watson <cjwatson@debian.org> + + * .cvsignore: Ignore the m4 directory, created by autopoint. + * GNUmakefile.in (_subdirs, _m4): Add m4/*.m4 to the distribution. + (_root): There are no *.h files left in the top-level directory. + (nls_man): de_DE.ascii is gone. + (dist): Use 'cp -p' rather than 'ln', since ln notes that making a + hard link to a symbolic link is not portable. + +Tue Nov 26 03:43:15 GMT 2002 Colin Watson <cjwatson@debian.org> + + * po/pt_BR.po: New from Translation Project. + * po/LINGUAS: Add pt_BR. + +Fri Nov 22 22:06:01 GMT 2002 Morten Brix Pedersen <morten@wtf.dk> + + * po/da.po: Further updates. + +Sat Nov 16 12:54:29 GMT 2002 Colin Watson <cjwatson@debian.org> + + * docs/manpage.example: Clarify that dashes in options should be + written using '\-', not '-'. + +Thu Nov 14 23:29:14 GMT 2002 Morten Brix Pedersen <morten@wtf.dk> + + * po/da.po: Update. + +Thu Nov 14 23:26:58 GMT 2002 Colin Watson <cjwatson@debian.org> + + * configure.in: Implement --enable-undoc=COMMAND. + * src/man.c (gripe_no_man): If --enable-undoc=COMMAND was set, print + an additional message referring users to COMMAND. This is mostly + here to support Debian's undocumented(7) page in a nicer way, but + perhaps others will find it useful too. + +Thu Nov 14 04:21:09 GMT 2002 Colin Watson <cjwatson@debian.org> + + * src/Makefile.in: Use @LIBINTL@ rather than @INTLLIBS@. The latter + is deprecated. + +Thu Nov 14 04:17:49 GMT 2002 Colin Watson <cjwatson@debian.org> + + * po/ca.po, po/cs.po, po/da.po, po/de.po, po/es.po, po/fr.po, + po/it.po, po/ja.po, po/sv.po: Update with msgmerge. + +Thu Nov 14 04:10:44 GMT 2002 Colin Watson <cjwatson@debian.org> + + * acinclude.m4, configure.in: Include documentation in all calls to + AC_DEFINE and AC_DEFINE_UNQUOTED. Look for acinclude.m4 in + AC_CONFIG_SRCDIR rather than acconfig.h. + * acconfig.h: Remove; the above makes it unnecessary. + * GNUmakefile.in: Remove acconfig.h from stamp-h.in's dependencies. + + * autogen.sh: Run autopoint, not gettextize. autogen.sh no longer + takes an optional --copy argument. + +Thu Nov 14 04:06:41 GMT 2002 Colin Watson <cjwatson@debian.org> + + * po/.cvsignore: Add messages.mo and remove-potcdate.sed. + * po/it.po: Add missing '=' in charset. + +Thu Nov 14 03:53:22 GMT 2002 Colin Watson <cjwatson@debian.org> + + * po/cs.po: Fix an incorrect C format string. + * po/da.po: Fix some out-of-sync C format strings and default PO + file headers. I've contacted the translator about these. + +Thu Nov 14 01:57:42 GMT 2002 Colin Watson <cjwatson@debian.org> + + * man-db.gnu, man-db.lsm: Document the switch from SourceForge to + Savannah. + +Mon Nov 11 01:50:28 GMT 2002 Colin Watson <cjwatson@debian.org> + + * src/man.c (man): Update the count of found pages with the return + value of display_pages(). This should fix the situation where man + finds a matching entry in the database, discovers that it's + actually a dangling symlink, but fails to print an error message + to say that no page was found. + +Mon Nov 11 00:47:38 GMT 2002 Colin Watson <cjwatson@debian.org> + + * man/man1/man.man1 (OPTIONS): Change \[char173] to \[shc]. The + former doesn't appear to display as anything useful these days. + * man/es_ES.88591/man1/man.man1, man/it_IT.88591/man1/man.man1, + man/ja_JP.eucJP/man1/man.man1: Likewise. + +Thu Nov 7 02:18:44 GMT 2002 Colin Watson <cjwatson@debian.org> + + * src/man.c (display): Don't do access() checks on an empty man_file + in the display_to_stdout branch, to avoid problems when running + 'man -X -l -'. Similar code is already in the other branch. Patch + from Peter Muir <iyhi@yahoo.com>. + +Thu Nov 7 01:42:52 GMT 2002 Colin Watson <cjwatson@debian.org> + + * docs/NEWS: Further updates for 2.4.1. + * docs/ToDo: I think the new-style database is OK now. + +Thu Nov 7 01:32:29 GMT 2002 Colin Watson <cjwatson@debian.org> + + * src/globbing.c (match_in_directory): Don't use FNM_NOESCAPE flag + to fnmatch(). + (look_for_file): Escape paths and names before passing them to + match_in_directory(). + * src/globbing.h: Update variable names in prototype. + +Wed Oct 23 02:12:43 BST 2002 Colin Watson <cjwatson@debian.org> + + * tools/README: Remove reference to install-manpage. + +Wed Oct 23 02:10:15 BST 2002 Colin Watson <cjwatson@debian.org> + + * tools/install-manpage: Remove. It doesn't work at all as far as I + can see, and at least as far as Debian is concerned dh_installman + does a better job. + * GNUmakefile.in: Remove reference to install-manpage. + +Wed Oct 23 02:03:18 BST 2002 Colin Watson <cjwatson@debian.org> + + Apply proper copyright and licence notices to all source files. + There are no functional changes here, either to the code or to the + applicable licences, merely clarifications. + + * docs/COPYING.LIB: New file, containing version 2.1 of the GNU + LGPL. + +Wed Oct 23 01:56:38 BST 2002 Colin Watson <cjwatson@debian.org> + + * tools/install-sh: Update to the version in automake 1.4-p4, which + includes a full (MIT) licence notice. + +Sat Oct 12 20:16:48 BST 2002 Colin Watson <cjwatson@debian.org> + + A much-needed complete rewrite of splitline(). The previous version + was extremely difficult to debug (see http://bugs.debian.org/123130) + and got info->pointer and info->whatis wrong quite frequently. This + version is much simpler and I hope more correct. + + * src/util.c (trim_spaces): New function. + * include/manconfig.h.in: Prototype trim_spaces(). + + * src/check_mandirs.c (gripe_bad_store): New function. + (splitline): Remove. + (parse_descriptions, store_descriptions, free_descriptions): New + functions, implementing the whatis parsing that used to be in + splitline() and test_manfile(). + (test_manfile): Reduce the complicated loop over splitline() to + calls to the above three functions. Adjust the parsing failure + case to require less deeply nested indentation. + * src/check_mandirs.h: New page_description struct, used to + implement the above. Prototype new functions. + * src/straycats.c: Use the new page_description-based interface. + +Wed Sep 25 00:39:16 BST 2002 Colin Watson <cjwatson@debian.org> + + * man/man1/man.man1 (DESCRIPTION): Clarify the purpose of section 7 + as "Miscellaneous". + +Tue Sep 24 00:22:36 BST 2002 Colin Watson <cjwatson@debian.org> + + * lib/strnlen.c: Don't try to define a weak alias. We aren't libc. + +Mon Sep 16 21:14:26 BST 2002 Colin Watson <cjwatson@debian.org> + + * libdb/mydbm.h: datum.dsize must be size_t, not int. + +Mon Sep 16 01:07:16 BST 2002 Colin Watson <cjwatson@debian.org> + + * src/compression.c (decompress): If the decompressor fails, print + an error message and return NULL rather than exit()ing + immediately. This allows callers to behave more intelligently. + * src/lexgrog.l (find_name): Cope with decompress() returning NULL. + * src/man.c (local_man_loop): Likewise. + * src/ult_src.c (ult_src): Likewise. + +Mon Sep 16 00:25:17 BST 2002 Clint Adams <schizo@debian.org> + + * configure.in: Detect bzip2. + * include/comp_src.h.in (comp_list): Include bunzip2 support if + available. + * include/manconfig.h.in: Add BUNZIP2 definition. + +Sun Sep 15 23:53:28 BST 2002 Colin Watson <cjwatson@debian.org> + + Upgrade to gettext 0.11.5. + + * configure.in: Remove ALL_LINGUAS. Add AM_GNU_GETTEXT_VERSION. + * po/LINGUAS: New file. Adds sv to the value of the old ALL_LINGUAS. + * po/Makevars: New file. + * po/POTFILES.in: Add src/fakesecurity.c. Change src/lexgrog.c to + src/lexgrog.l. + * tools/mkinstalldirs: Upgrade to current version. + +Fri Sep 6 23:58:10 BST 2002 Colin Watson <cjwatson@debian.org> + + * src/mandb.c (xcopy): Don't print the error from fopen() if it's + just ENOENT. + +Tue Sep 3 21:53:56 BST 2002 Colin Watson <cjwatson@debian.org> + + * libdb/db_lookup.c (list_extensions): Prevent a theoretical buffer + overflow by allocating names and ext as necessary rather than + using a fixed-length array. + (dblookup): Update callers. + * libdb/db_delete.c (dbdelete): Likewise. + * libdb/db_storage.h: Update prototypes. ENTRIES definition is now + redundant. + +Tue Sep 3 20:26:22 BST 2002 Colin Watson <cjwatson@debian.org> + + * libdb/db_delete.c (dbdelete): Construct new multi_content + correctly (names as well as extensions) when deleting some of its + elements. + +Fri Aug 30 03:11:42 BST 2002 Colin Watson <cjwatson@debian.org> + + * src/man.c (make_roff_command): Restore the fix from 13 July 2001 + that got lost while implementing -E. We need to look up the + correct character set each time a page is displayed, but still + honour any device explicitly set by -E, so test different_encoding + rather than roff_device. + +Thu Aug 29 01:14:19 BST 2002 Colin Watson <cjwatson@debian.org> + + * src/man.c (setenv_less): Export the value of $MAN_PN for the + benefit of other pagers (suggestion from Jeff Sheinberg). + +Thu Aug 29 00:50:54 BST 2002 Colin Watson <cjwatson@debian.org> + + * src/man.c: dbfilters is no longer a global variable. + (get_preprocessors, make_roff_command, display): Take an extra + dbfilters argument. + (local_man_loop, make_roff_command, display, display_filesystem): + Adjust callers. + (display_database): Likewise. Pass in->filter as the dbfilters + argument to display() rather than setting it globally (and + forgetting to set it back to NULL later). + * src/man.h: Update prototypes. + +Sat Aug 17 21:53:38 BST 2002 Colin Watson <cjwatson@debian.org> + + * src/straycats.c (check_for_stray): Initialize info.name and + info.filter. Remove unhelpful __inline__. + +Tue Aug 13 18:25:13 BST 2002 Colin Watson <cjwatson@debian.org> + + * src/man.c (usage): Document new option -W, --where-cat, + --location-cat. + (man_getopt): Accept -W. + (display): -w now just prints man_file, while -W prints cat_file. + If both are given, the two filenames are printed separated by a + space, as -w used to do. + * man/man1/man.man1, docs/NEWS: Document this. + +Sat Aug 10 13:19:34 BST 2002 Colin Watson <cjwatson@debian.org> + + * docs/NEWS: Preliminary entries for 2.4.1. + +Sat Aug 10 13:15:49 BST 2002 Colin Watson <cjwatson@debian.org> + + * lib/hashtable.c (plain_hash_free, hash_install, hash_free): Remove + the type argument and nlist element. All current users can just + use separate hashtables instead. + * lib/hashtable.h: Update prototypes and nlist declaration. + * libdb/db_btree.c: Don't pass dummy type argument to + hash_install(). + + * src/check_mandirs.c, src/man.c: Include "lib/hashtable.h" rather + than "hashtable.h". + * src/check_mandirs.c (test_manfile): Use hashtable functions on the + new static whatis_hash directly rather than the old functions + which implicitly operated on the global man_hash. + (testmandirs): Since we use full paths as hash keys, there's no + need to clear whatis_hash between hierarchies. + * src/man.c (db_hash_free): New function. + (main, try_db): Use hashtable functions on the new static db_hash + directly rather than the old functions which implicitly operated + on the global man_hash. + (try_db, man): Don't clear hashtables before creating a new + database. This used to segfault in some circumstances. + + * src/hashtable.c, src/hashtable.h: Remove. + * src/Makefile.in: Remove mentions of hashtable.o. + +Thu Aug 8 02:05:34 BST 2002 Colin Watson <cjwatson@debian.org> + + * po/sv.po: New from Translation Project. + +Mon Jul 22 01:20:28 BST 2002 Colin Watson <cjwatson@debian.org> + + * src/check_mandirs.c (splitline): Check for pointer underflow when + trimming leading spaces. + +Mon Jul 22 01:18:18 BST 2002 Colin Watson <cjwatson@debian.org> + + * libdb/db_ver.c: Include <string.h> for strcmp(). + +Wed Jul 17 20:30:30 BST 2002 Colin Watson <cjwatson@debian.org> + + * src/wrapper.c: Include <locale.h> even under --disable-nls. + +Mon Jul 15 14:18:56 BST 2002 Colin Watson <cjwatson@debian.org> + + * src/lexgrog.l: Allow EOF to terminate MAN_NAME cleanly. + +Thu Jul 11 20:45:36 BST 2002 Colin Watson <cjwatson@debian.org> + + * manual/man_db.me: Version 0.7. Remove version number from \*M + string. Set a default page width of 78 ens for nroff output. Add + myself as an author. + * manual/intro.me (man-db): Mention lexgrog. + (The format of manual pages): Ted and Werner now maintain groff. + * manual/sec.me (Specifying a section): Extensions don't have to be + listed unless a special ordering is desired. + * manual/files.me (Other OS's manual pages): --systems, not + --system. + (NLS manual pages): Likewise. Update Daniel Quinlan's e-mail + address. Correct "/usr/man/man" to "/usr/man" in example manpath + output. + (Displaying latin1 characters on a Linux virtual terminal): Set + sample script in a constant-width font. + (Local cat page directory caches): Modification times are now + compared for equality rather than for the cat file being more + recent. + * manual/format.me (GROFF): tools/nroff-script is no longer + provided. + (Pre-format processors (pre-processors)): Mention the lexgrog scan + for preprocessor hints. + * manual/db.me (Contents of an index database): Clarify where the + true case of a name is stored. + (Accessdb): accessdb is compiled by default now. + * manual/misc.me (NLS message catalogues): Point to the Translation + Project. + * manual/*.me: Minor wording improvements. Apply better *roff style + (newline at each sentence break). + + * man/THANKS: Update Jordi Mallach's e-mail address. + +Sun Jul 7 22:19:41 BST 2002 Colin Watson <cjwatson@debian.org> + + * tools/config.guess: Update to 2002-05-29. + * tools/config.sub: Update to 2002-06-21. + * tools/README: Describe config.guess and config.sub. + + * tools/nroff-script: Remove. groff has had this since 1992, and its + version is considerably more up-to-date. + * GNUmakefile.in, tools/README: Remove references to nroff-script. + + * zsoelim/zsoelim.l: -Wall cleanup. Set the nounput option, since we + don't need yyunput(). + (open_file): Make sure the compiler knows that compfile and comp + are always initialized. + +Sat Jul 6 21:30:07 BST 2002 Colin Watson <cjwatson@debian.org> + + * src/man.c (get_roff_line_length): Widen to match groff 1.18's + defaults. + (add_roff_line_length, make_roff_command): Simplify by using en + units rather than inches. + + * src/man.c (main): Slight improvement in the error message for a + missing page. If the name doesn't begin with a digit, never use + gripe_no_name(): having the 'n' section shouldn't mean that 'man + nonexistent' says "What manual page do you want from section + nonexistent?". + + * src/man.c (try_section): Check for ult_src() returning NULL. + +Wed Jul 3 23:46:31 BST 2002 Colin Watson <cjwatson@debian.org> + + * src/manp.c (add_system_manpath): Make sure the loop that scans for + per-system manpaths always makes progress. + +Wed Jul 3 23:14:42 BST 2002 David Martinez Moreno <ender@debian.org> + + * man/THANKS: Update e-mail address. + * po/es.po: Update. + +Sat Jun 29 14:58:08 BST 2002 Colin Watson <cjwatson@debian.org> + + * src/man.c (main): If a section is given but the lookup fails, + check to see if the section is actually a page name. This allows + man page names that begin with a digit to work much more sanely. + (is_section): If a single-character entry in section_list is a + prefix of the requested section name, return successfully. This + means that e.g. '3tcl' is treated as a valid section even if only + '3' is in section_list. + + * src/man.c (is_section), src/man.h (is_section): Constify argument + and return type. + + * src/globbing.c (match_in_directory, look_for_file): Reduce + debugging chatter. + +Wed Jun 26 20:07:56 BST 2002 Colin Watson <cjwatson@debian.org> + + * src/whatis.c (get_whatis): "(unknown)" => "(unknown subject)", + mainly so that translators know the number and gender. + +Wed Jun 26 19:49:49 BST 2002 Colin Watson <cjwatson@debian.org> + + * src/catman.c (usage), src/man.c (usage), src/mandb.c (usage), + src/manpath.c (usage): Make --help output more consistent. + * src/whatis.c (usage): Likewise. "alternate systems" => "alternate + systems'". + +Wed Jun 26 14:47:01 UTC 2002 Colin Watson <cjwatson@debian.org> + + * Version: 2.4.0. + * README: Update or remove references to "man-db-2.3" and similar. + * man-db.gnu: Update and sync with GNU. + * man-db.lsm: Update. + * manual/man_db.me: Replace "2.3.x" with "2.4.x". + * po/ca.po, po/cs.po, po/da.po, po/de.po, po/es.po, po/fr.po, + po/it.po, po/ja.po: Update with msgmerge. + +Wed Jun 26 14:09:25 BST 2002 Colin Watson <cjwatson@debian.org> + + * src/lexgrog.l (name_sec): Allow whitespace before any closing + double quote. (rman(1) uses '.SH "NAME "'.) + +Tue Jun 25 00:29:22 BST 2002 Colin Watson <cjwatson@debian.org> + + * docs/NEWS: Translation credits are in man/THANKS. + * man/THANKS: Update. + + * manual/.cvsignore: New file. + +Mon Jun 24 02:53:00 BST 2002 Colin Watson <cjwatson@debian.org> + + * libdb/db_store.c (dbstore): Use \t instead of . to separate + case-variant-names and extensions in multi keys. + * libdb/db_lookup.c (list_extensions): Take an extra 'names' array + argument, and split alternately into that and 'ext'. + (dblookup): Update and simplify accordingly; we don't need the + awkward '.' handling any more. + * libdb/db_delete.c (dbdelete): Likewise. + * libdb/db_storage.h (list_extensions): Update prototype. + + * include/manconfig.h.in: Database format version 2.4.1. + + * manual/db.me (Contents of an index database): Document + case-insensitive name storage format. Bring the documentation of + the database entry format up to date. + * manual/sec.me (Specifying a section): Mention the SECTION + configuration directive. + +Fri Jun 21 10:50:40 UTC 2002 Colin Watson <cjwatson@debian.org> + + * src/check_mandirs.c (make_filename): in->comp may be NULL. + + * po/fr.po: Update from Translation Project. + +Mon Jun 17 09:56:15 UTC 2002 Colin Watson <cjwatson@debian.org> + + * configure.in (ALL_LINGUAS): Add ca. + * src/man.c: Update some comments. + * src/lexgrog.l: Treat \~ as a space. Treat \# as a comment. Treat + .ig as ending the whatis. + +Thu Jun 13 18:16:46 BST 2002 Colin Watson <cjwatson@debian.org> + + * po/ca.po: Some updates after review. + +Wed Jun 12 18:29:18 BST 2002 Colin Watson <cjwatson@debian.org> + + * docs/ToDo: Updates. + * po/ca.po: New from Translation Project. + +Wed Jun 5 14:23:13 BST 2002 Colin Watson <cjwatson@debian.org> + + * po/de.po: Update from Translation Project. + +Tue Jun 4 13:15:09 BST 2002 Colin Watson <cjwatson@debian.org> + + * src/man.c (compare_candidates): Return 0 when asked to compare two + candidates we can't distinguish, not -1. The latter broke + multilingual support. + +Tue Jun 4 01:33:31 BST 2002 Colin Watson <cjwatson@debian.org> + + * Version: 2.3.90 (for translators). + * docs/NEWS: More updates. + * po/cs.po, po/da.po, po/de.po, po/es.po, po/fr.po, po/it.po, + po/ja.po: Update with msgmerge. + +Tue May 28 00:36:55 BST 2002 Colin Watson <cjwatson@debian.org> + + * libdb/db_lookup.c (dblookup): Check the MATCH_CASE flag in the + case of a single entry as well as multiple entries. + +Mon May 27 23:57:26 BST 2002 Colin Watson <cjwatson@debian.org> + + * lib/hashtable.c, lib/hashtable.h: New files, containing the + generic parts of src/hashtable.{c,h}. + * lib/Makefile.in: Add hashtable.c. + * src/hashtable.c (hash, lookup, install): Remove. These functions + have been renamed and moved to lib/hashtable.c. + (free_defn): Rename to man_hash_free and update for new hashtable + API. + (free_hashtab): Update for new hashtable API. + * src/hashtable.h: Update prototypes. + + * libdb/db_btree.c (btree_findkey): Check for entries we've seen + before in the current run. These indicate a corrupt database + containing a loop. + +Thu May 23 01:50:53 BST 2002 Colin Watson <cjwatson@debian.org> + + * lib/cleanup.h: #endif must not be followed by a token on the same + line. + +Thu May 23 00:29:24 BST 2002 Colin Watson <cjwatson@debian.org> + + * src/fake_security.c (get_man_owner): New fake function to match + the real one in src/security.c. + * src/manp.c (mkcatdirs): Chown newly created cat directories to the + MAN_OWNER when running as root. + + * .cvsignore, intl/.cvsignore, po/.cvsignore: Ignore a few more + files. + * src/man_db.conf.in: Correct the heading. + +Wed May 22 00:06:18 BST 2002 Colin Watson <cjwatson@debian.org> + + * libdb/db_store.c (compare_ids): New function, replacing the + FAVOUR() macro. Without this, the last-but-one commit won't + compile ... + (replace_if_necessary): Use it. + * libdb/db_storage.h: Prototype it. + +Mon May 20 03:07:24 BST 2002 Colin Watson <cjwatson@debian.org> + + * src/man.c (setenv_less): New function to set up $LESS. This + honours the new environment variable $MANLESS, which overrides the + usual processing and is copied directly into $LESS. + (make_display_command): Use it. + * man/man1/man.man1 (OPTIONS): Mention $MANLESS alongside the + --prompt option. + (ENVIRONMENT): Document $MANLESS. + +Mon May 20 02:16:43 BST 2002 Colin Watson <cjwatson@debian.org> + + * src/man.c (compare_candidates): Compare id fields as a last + resort, so that, for example, real pages sort ahead of whatis-only + names. + (try_section): Set the id field based on the output of ult_src(). + + * src/man.c (man): When locating pages, don't stop when one is found + in a particular directory and -a wasn't given. That's now the job + of the display code. + +Mon May 20 01:16:02 BST 2002 Colin Watson <cjwatson@debian.org> + + * libdb/db_lookup.c (free_mandata_elements): New function, to be + used rather than freeing the addr field directly. This frees name + as well. + (free_mandata_struct): Use it. + * libdb/db_btree.c (dbstore, dblookup): Likewise. + * libdb/db_store.c (dbstore): Likewise. + * src/whatis.c (whatis): Likewise. + * libdb/db_storage.h: Prototype it. + + * libdb/db_store.c (replace_if_necessary): Rename in and info to + newdata and olddata, which are more comprehensible. Don't check + that the name fields match here - the caller should do that. + (dbstore): Make sure in->name isn't set on entry, and instead set + it to the basename where necessary. Don't set the name field in + multi keys, which use the proper case. + + * src/check_mandirs.c (filename_info): We don't need to examine the + case of base_name here. + +Thu May 16 00:47:05 BST 2002 Colin Watson <cjwatson@debian.org> + + * libdb/db_btree.c (btree_flopen): If O_CREAT isn't set, check + whether we're trying to open a zero-length database and, if so, + return immediately. This works around some pathological behaviour + in Berkeley DB. + +Mon May 6 03:48:17 BST 2002 Colin Watson <cjwatson@debian.org> + + * libdb/db_store.c (FAVOUR): Parenthesize macro arguments. + (dbstore): In situation (3), use the old lookup key for the name + of the corresponding multi key, not the basename (which may be in + the wrong case). + +Sun May 5 17:49:21 BST 2002 Colin Watson <cjwatson@debian.org> + + * src/lexgrog.l: Accept DOS line-ending conventions. + +Sun May 5 15:38:34 BST 2002 Colin Watson <cjwatson@debian.org> + + * libdb/db_delete.c (dbdelete): Don't scribble over the list + returned by list_extensions(). We need it shortly afterwards to + construct the new multi key. + +Fri May 3 19:43:52 BST 2002 Colin Watson <cjwatson@debian.org> + + * include/manconfig.h.in (LESS_OPTS): Add the -R flag, which helps + with displaying the ANSI colour escapes generated by groff 1.18. + +Fri May 3 19:27:40 BST 2002 Colin Watson <cjwatson@debian.org> + + * src/man.c (add_roff_line_length): New function, adding -rLL and + -rLT to the groff command line (supported in groff >= 1.18). + (make_roff_command): Call add_roff_line_length(). The old code to + set .ll and .lt remains for compatibility purposes. + +Wed May 1 02:16:11 BST 2002 Colin Watson <cjwatson@debian.org> + + * src/check_mandirs.c (testmandirs): Include the subdirectory name + in the "Updating index cache" message. + +Wed May 1 02:05:02 BST 2002 Colin Watson <cjwatson@debian.org> + + * libdb/db_store.c: Make sure the check for whether a replace is + necessary in situation (3) behaves as it did before the multi key + format changes. + + * libdb/db_lookup.c (copy_if_set, dash_if_unset): Constify + arguments. + * libdb/db_storage.h: Likewise for prototypes. + * src/convert_name.c (gripe_converting_name): name should be const. + * src/manp.c (get_catpath): suffix should be const. + +Wed May 1 00:14:20 BST 2002 Colin Watson <cjwatson@debian.org> + + * src/globbing.c (match_in_directory): Close the directory after + reading through it. + +Wed May 1 00:02:53 BST 2002 Colin Watson <cjwatson@debian.org> + + Case-(in)sensitivity in database lookups should work properly now. + + * libdb/db_lookup.c (gripe_bad_multi_key): New function. + (make_multi_key): Don't lowercase page any more - that happens + elsewhere. + (list_extensions): We now return names/extensions, not just + extensions. + (dblookup): Multi keys are now formed as "RealCase.1" rather than + just "1". Add a new MATCH_CASE flag which, if set, makes sure the + RealCase part matches. Otherwise the database lookup is + case-insensitive. + (dblookup_exact, dblookup_all): Pass through a match_case flag for + the above. + * libdb/db_delete.c (dbdelete): Cope with new multi key format. + * libdb/db_store.c (dbstore): Construct the multi key from the + original case of the name rather than the lowercased version. Add + the basename to the multi keys created here, as above. + * src/man.c (display_database): Pass match_case flag through to the + database lookup. + (try_db): Likewise. + * src/check_mandirs.c (test_manfile): Make sure lookups are + case-sensitive. + * src/straycats.c (check_for_stray): Likewise. + * src/whatis.c (get_whatis): Likewise. + (whatis): Use a case-insensitive lookup. + + * libdb/db_storage.h (struct mandata): name is no longer const; it + should always be freeable if non-NULL. We no longer use "-" to + indicate it being the same as the requested name, except in the + database itself. + * libdb/db_lookup.c (copy_if_set, dash_if_unset): New functions. + (infoalloc): Zero the newly allocated structure. + (free_mandata_struct): Free name if it's set. + (dbprintf, split_content, make_content, dblookup): Cope with the + new convention for info->name. + * libdb/db_store.c (replace_if_necessary): Likewise. + * src/check_mandirs.c (filename_info): Likewise. + * src/man.c (compare_candidates, add_candidate, display_database): + Likewise. + * src/whatis.c (display): Likewise. + + * libdb/db_storage.h: Update prototypes. + +Mon Apr 29 00:13:58 BST 2002 Colin Watson <cjwatson@debian.org> + + * src/whatis.c (display): Display page names in the correct case + using the new info->name field. + +Mon Apr 29 00:00:38 BST 2002 Colin Watson <cjwatson@debian.org> + + * src/whatis.c (use_grep): Put a space in the grep command before + the flags! + +Sun Apr 28 23:50:22 BST 2002 Colin Watson <cjwatson@debian.org> + + Pass through much of the code adding 'const' where appropriate. This + should help me avoid various memory management bugs. + + Noteworthy changes from this: + + * include/manconfig.h.in (struct compression): prog and ext + generally shouldn't be modified directly. + * libdb/db_lookup.c (make_content): dash really has to stay + constant, or the various things that point to it statically will + break other things badly. + * libdb/db_storage.h (struct mandata): The only pointers here that + should generally be modified directly are next and addr. + * libdb/db_store.c (dbstore): Remove debugging code left from + previous checkin. + * src/check_mandirs.c (splitline): Note that we're deliberately + modifying info->whatis here. + (filename_info): Modify to be more const-friendly. + * src/compression.c (comp_file): Add TODO for comp->file. + * src/man.c (find_cat_file): Drop unused sec argument, and update + callers. + + * include/manconfig.h.in, libdb/db_storage.h, src/hashtable.h, + src/man.h, src/manp.h: Update prototypes for all of the above. + +Fri Apr 26 01:59:46 BST 2002 Colin Watson <cjwatson@debian.org> + + Add case-insensitivity support to the database. + + * libdb/db_storage.h (struct mandata): Add 'name' element. + * libdb/db_lookup.c (dbprintf): Print name. + (split_content): Read name from start of data. + (make_content): Prepend name to each data element. + (name_to_key): New function, converting a name to lowercase for + use in database keys. + (make_multi_key): Use name_to_key(). + (dblookup): Use name_to_key(). If info->name is "-", set it to the + requested key instead. + * libdb/db_delete.c (dbdelete): Use name_to_key(). + * libdb/db_store.c (dbstore): Likewise. + + * src/check_mandirs.c (make_filename): Use in->name if name is NULL. + (filename_info): Fill in info->name with either a new req_name + argument or the supplied base_name. + (test_manfile): Update calls to make_filename() and + filename_info(). + * src/check_mandirs.h: Update prototype. + + * src/man.c (struct candidate): Rename 'name' to 'req_name'. + (display_filesystem, display_database_check): Update accordingly. + (compare_candidates): Sort exact-case matches to the front. + (add_candidate): Update calls to compare_candidate() and + filename_info(). When comparing duplicates, check the name field + in the mandata rather than the requested name. + (try_section): The hack to get the name from info_buffer is no + longer required now that filename_info() fills that in. + (display_filesystem): Update calls to make_filename(). Use the + mandata name for the displayed title rather than the requested + name. Sanity-check in->name != "-". + + * include/manconfig.h.in: Bump the database version to 2.4.0. + + * lib/xstrndup.c: Prototype strnlen(). + +Mon Apr 22 00:00:08 BST 2002 Colin Watson <cjwatson@debian.org> + + * src/globbing.c (match_in_directory): New function, implementing a + limited glob() with optional case-insensitivity. + (look_for_file): Use match_in_directory() rather than glob(). + Accept new match_case argument. + * src/globbing.h: Update prototype. + * src/check_mandirs.c (purge_whatis, purge_missing): Update calls to + look_for_file(). + * src/man.c (usage, man_getopt): Add --ignore-case and --match-case + arguments. + (try_section): Update calls to look_for_file(). + (try_section, display_filesystem, display_database, + display_database_check, display_pages, man): Make sure to use the + candidate name rather than the requested name, so that + case-insensitive lookups work. + * man/man1/man.man1 (OPTIONS): Document --ignore-case and + --match-case. + + * po/.cvsignore: Ignore man-db.pot rather than man_db.pot. + +Thu Apr 18 11:15:11 BST 2002 Matej Vela <vela@debian.org> + + * docs/manpage.example: Use .BR for links to other man pages. + +Wed Apr 3 19:54:03 BST 2002 Colin Watson <cjwatson@debian.org> + + * Rename package from man_db to man-db. + + * docs/NEWS: Start updating for 2.4.0. + +Wed Apr 3 18:44:04 BST 2002 Colin Watson <cjwatson@debian.org> + + * GNUmakefile.in (distclean): Remove autom4te.cache. + +Wed Apr 3 18:40:19 BST 2002 Colin Watson <cjwatson@debian.org> + + * .cvsignore: Add autom4te.cache. + * configure.in: Use AC_LIBOBJ rather than setting LIBOBJS directly. + (--enable-setuid): Use quadrigraphs to get [ and ]. + (--with-config-file): New option. + * include/Defines.in (config_file): Honour --with-config-file + setting. + +Fri Mar 29 21:08:37 GMT 2002 dann frazier <dannf@dannf.org> + + * docs/manpage.example.sgml: Update copyright year. + +Thu Mar 21 16:22:58 GMT 2002 Colin Watson <cjwatson@debian.org> + + * src/man.c (main): Save the value of $LESS at startup to + $MAN_ORIG_LESS, and use that saved value in preference to $LESS. + This lets recursive invocations of man give less the correct page + titles. + +Wed Mar 20 09:37:11 GMT 2002 Eirik Fuller <eirik@hackrat.com> + + * src/check_mandirs.c (splitline): Don't create a copy of base_name + as pointer_name. + (test_manfile): Be more careful about pointer reuse across calls + to splitline(). + +Mon Feb 11 13:01:07 GMT 2002 Michael Piefel <piefel@debian.org> + + * po/de.po: Corrections and updates; convert to UTF-8. + * man/THANKS: Add credit (the contributor of the previous de.po is + unidentified). + +Sun Jan 27 03:31:11 GMT 2002 Colin Watson <cjwatson@debian.org> + + * configure.in (ALL_LINGUAS): Add da. Reorder alphabetically. + +Sat Jan 12 17:55:12 GMT 2002 Colin Watson <cjwatson@debian.org> + + * src/lexgrog.l: Match a line at a time rather than a character at a + time after the end of the NAME section. + + * src/check_mandirs.c (testmandirs): More --debug information. + + * include/manconfig.h.in (LESS_OPTS): Prune duplicate -Pm option. + Set -PM too so it works even when $LESS contains -M. + * src/man.c (make_display_command): Substitute prompt_string into + LESS_OPTS twice to accommodate the above. + +Mon Jan 7 16:16:02 GMT 2002 Colin Watson <cjwatson@debian.org> + + * src/lexgrog.l: Another {blank_eol} fix, thanks to Peter Clay. + +Sun Jan 6 19:05:46 GMT 2002 Colin Watson <cjwatson@debian.org> + + * src/lexgrog.l: Use {blank_eol}, not [blank_eol]. The latter + matches in entirely inappropriate places. + +Sun Dec 23 06:17:47 GMT 2001 Colin Watson <cjwatson@debian.org> + + * src/man.c (long_options, usage, man_getopt): Add a new + -E/--encoding option. It behaves a little like -T, except that it + uses nroff instead of troff and outputs to a pager. + (make_roff_command): Only call determine_lang_table() if + roff_device isn't already set. + (display, try_section, display_filesystem, display_database): + Check for different_encoding. + * man/man1/man.man1 (DEFAULTS, OPTIONS): Document -E. + +Sun Dec 23 05:23:05 GMT 2001 Colin Watson <cjwatson@debian.org> + + * src/man.c (compare_candidates): Compare sections according to + section_list before comparing them lexicographically. + (add_candidate): Do a better job of inserting each entry at the + right place in the list. + +Sun Dec 23 04:47:02 GMT 2001 Colin Watson <cjwatson@debian.org> + + * src/man.c (determine_lang_table): Format man pages in UTF-8 if + that's the current locale's character set. + +Sun Dec 23 02:35:24 GMT 2001 Colin Watson <cjwatson@debian.org> + + * src/man.c (popen, pclose): Move to a separate library file ... + * lib/popen.c: ... here. + * acinclude.m4 (MAN_FUNC_PCLOSE): Use AC_LIBOBJ to conditionally + compile this. + * acconfig.h: Remove BROKEN_PCLOSE definition. + + Major rewrite of man's searching code to make it maintainable and to + prepare for better sorting of displayed man pages. + + * src/man.c (add_candidate): New function to add an item to a list + of candidate pages. + (compare_candidates): New helper function. + (compare_names, compare_mandata_ext): Remove. + (try_section): Use add_candidate() rather than displaying the page + immediately. + (try_db): Likewise. + (display_filesystem): New function to display pages found by + try_section(). + (try_db_section): Rename to display_database(), and use the + candidate structures. + (exist_check): Rename to display_database_check(); use candidates. + (locate_page): Pass the candidate list through to try_section() + and try_db(). + (display_pages): New function to iterate through a candidate list + and display each entry. + (man): Create a candidate list and pass it to locate_page(). + Display pages only after building the full list. + +Mon Dec 17 03:40:48 GMT 2001 Colin Watson <cjwatson@debian.org> + + * man/man8/mandb.man8 (EXIT STATUS): Document mandb's exit codes. + +Mon Dec 17 03:20:15 GMT 2001 Colin Watson <cjwatson@debian.org> + + * src/whatis.c (long_options): Remove duplicate for --exact. + (word_fnmatch): New function. + (parse_whatis): Match using word_fnmatch() if --wildcard but not + --exact was given. + * man/man1/apropos.man1 (OPTIONS): Document this. + (DESCRIPTION): Fix typographical glitch. + +Mon Dec 17 00:53:20 GMT 2001 Colin Watson <cjwatson@debian.org> + + * man/man1/man.man1 (OPTIONS): Mention groff 1.17 and the ps and + utf8 devices. + * man/*/man1/man.man1: Likewise. + +Sun Dec 9 03:31:54 GMT 2001 Morten Brix Pedersen <morten@wtf.dk> + + * po/da.po: New file. + * man/THANKS: Add credit. + +Sun Dec 9 03:19:57 GMT 2001 Jose Rodriguez <boriel@airtel.net> + + * src/man.c (main): Initialize program_name before calling error(). + +Fri Dec 7 01:35:31 GMT 2001 Colin Watson <cjwatson@debian.org> + + * configure.in: Detect libdb3, although man-db hasn't been well + tested with it yet. + +Fri Dec 7 00:35:53 GMT 2001 Paul Slootman <paul@wurtel.net> + + * src/man.c (main): Delete spurious backslashes in prompt_string. + +Wed Nov 21 20:59:14 GMT 2001 Colin Watson <cjwatson@debian.org> + + * po/fr.po: Update from Laurent Pelecq. + * po/.cvsignore: Ignore ChangeLog. + +Wed Nov 21 00:48:50 GMT 2001 Colin Watson <cjwatson@debian.org> + + Keeping generated files like the output of gettextize in CVS is bad. + + * intl/*, po/ChangeLog, po/Makefile.in.in: Remove. + * autogen.sh: Run gettextize. + * release.sh: When releasing, pass --copy to gettextize. + +Wed Nov 21 00:29:26 GMT 2001 Colin Watson <cjwatson@debian.org> + + * src/compression.c (decompress): Free esc_file and esc_filename + once we're finished with them. + + * src/man.c (local_man_loop): If argv is a directory, display a + useful error message rather than letting zsoelim get confused. + +Mon Nov 19 00:53:03 GMT 2001 Colin Watson <cjwatson@debian.org> + + * libdb/db_lookup.c (copy_datum): Explicitly null-terminate + dat.dptr, since C string-manipulation functions are used on it. + +Fri Nov 16 04:28:31 GMT 2001 Colin Watson <cjwatson@debian.org> + + * src/manp.c (add_nls_manpath): Concatenate strings more safely. + + Changes adapted from a patch by OGAWA Hirofumi + <hirofumi@mail.parknet.co.jp>: + + * acinclude.m4 (MAN_CHECK_BDB): $LIBS, not LIBS, and quote it while + we're here. + * src/manp.c (pathappend): Use strsep() rather than strtok(). + (cat_manpath): Likewise. + (add_nls_manpath): Likewise. + +Thu Nov 8 11:27:32 GMT 2001 Colin Watson <cjwatson@debian.org> + + * src/man.c (get_preprocessors_from_file): Drop privileges to access + temporary file. + +Wed Nov 7 13:34:38 GMT 2001 Colin Watson <cjwatson@debian.org> + + * src/man.c (format_display): Drop privileges throughout. Don't free + command until after it could have been used for an error message. + +Sun Oct 14 05:23:20 BST 2001 Colin Watson <cjwatson@debian.org> + + * src/version.c: Include <stdlib.h> for exit(). + * include/manconfig.h.in: Remove spurious orphaned #ifdef. Oops. + + Spanish translation updates from David Martínez <ender@adi.uam.es>: + + * po/es.po, man/es_ES.88591/man1/apropos.man1: Bring up to date. + * man/man1/lexgrog.man1: Fix thinko - s/problems/programs/. + +Tue Sep 25 22:46:45 BST 2001 Colin Watson <cjwatson@debian.org> + + * src/whatis.c (get_whatis): Suppress wrong report of a pointer loop + when the second or subsequent element in a pointer chain points to + itself and has a usable whatis. + +Wed Sep 19 00:47:55 BST 2001 Colin Watson <cjwatson@debian.org> + + * src/man.c (local_man_loop): Drop privileges throughout. + + Documentation corrections thanks to Andreas Dilger + <adilger@turbolabs.com>: + + * man/man1/man.man1 and translations (SEE ALSO): Refer to man(7). + * docs/manpage.example, docs/manpage.example.pod, + docs/manpage.example.sgml (SEE ALSO): Move to the end. + (SYNOPSIS, DESCRIPTION, OPTIONS): Add more advice. + * docs/manpage.example (FILES): Restore tabs that had been turned + into spaces. + +Tue Sep 18 03:46:00 BST 2001 Colin Watson <cjwatson@debian.org> + + * lib/xstrndup.c: New file. + * lib/Makefile.in: Build it. + * include/manconfig.h.in: Prototype xstrndup(). + + * src/man.c (compare_names, compare_mandata_ext): New functions. + (try_section): Build title more locally, displaying extensions + correctly. Sort the results of look_for_file(). + (try_db_section): Build title even if NROFF_MISSING is defined. + (try_db): Sort data returned from the database. + (locate_page): Look in the filesystem first and then the database, + rather than the other way round. + + * src/manp.c (checkpath): Remove; it used to resolve symlinks, but + it doesn't do that any more and I don't think it should. + * src/manp.c: Constify arguments to many functions by either being + more careful not to alter them or by duplicating them. + * src/util.c (is_directory): Likewise. + * src/catman.c, src/man.c, src/mandb.c, src/whatis.c (main): + Simplify calls. + * src/manp.h, include/manconfig.h.in: Update prototypes. + * src/manp.h: add_system_manpath() is static now. + + * include/manconfig.h.in: Provide stupid getcwd() emulation with + getwd() if the former isn't available. + * src/man.c (main, format_display): Assume getcwd() is available. + * src/mandb.c (main): Likewise. + * src/manp.c (add_dir_to_path_list): Likewise. + + * src/manp.c (add_dir_to_path_list): The checks that manpaths end in + /man or /MAN were overly anal and never compiled in; remove them. + + * acinclude.m4 (MAN_PROG_GNU_NROFF): More portable shell for ash. + + * src/man.c (lang_table): We use the latin1 alias rather than + iso8859 for all other languages, so do so for Korean too. + + * src/lexgrog.l: Prevent the no-op request '.' from eating text on + the next line. + (find_name): Remove trailing spaces as well as leading ones. + +Fri Sep 7 19:28:12 BST 2001 Colin Watson <cjwatson@debian.org> + + * Version: 2.3.20. + * docs/NEWS: Update. + * po/cs.po, po/de.po, po/es.po, po/fr.po, po/it.po, po/ja.po: + Update. + +Fri Sep 7 00:55:53 BST 2001 Colin Watson <cjwatson@debian.org> + + * GNUmakefile.in (dist): Include other manpage.example formats. + + * lib/tempfile.c (create_tempfile): Create with mode 0600. + * src/check_mandirs.c (test_manfile): Drop privileges for temporary + file operations. + * src/lexgrog.l (find_name): Likewise. + * src/man.c (make_roff_command): Likewise. + * src/straycats.c (check_for_stray): Likewise. + (straycats): Likewise. + * src/ult_src.c (ult_src): Likewise. + +Thu Sep 6 21:54:05 BST 2001 Colin Watson <cjwatson@debian.org> + + * include/Defines.in: Add lexgrog to list of transformed program + names. Adjust sysconfdir detection. + * src/Makefile.in (install): Really install lexgrog by default. + Create the directory config_file is in rather than sysconfdir. + +Wed Sep 5 19:55:01 BST 2001 Colin Watson <cjwatson@debian.org> + + * GNUmakefile.in (dist): Generate a .tar.gz, not a .tgz. + * src/man.c: Korean: roff_device is ascii8, LESSCHARSET is iso8859. + * po/cs.po, po/de.po, po/es.po, po/fr.po, po/it.po, po/ja.po: + Update. + +Wed Sep 5 03:42:18 BST 2001 Colin Watson <cjwatson@debian.org> + + * src/compression.c (decompress): Constify arguments. + * include/manconfig.h.in: Likewise. + + * src/lexgrog.l (find_name): Deal with '-' and compressed files. + * man/man1/lexgrog.man1 (DESCRIPTION): Document this. + (BUGS): Remove (optimism ...). + (NOTES): New section. lexgrog can't parse .so requests. + * src/Makefile.in: Really build lexgrog by default, and add some + objects. + +Wed Sep 5 02:02:20 BST 2001 Colin Watson <cjwatson@debian.org> + + * docs/NEWS: Describe recent changes. + + * man/man1/man.man1 (OPTIONS): Document --html. + (ENVIRONMENT): Document $BROWSER. + * man/man8/mandb.man8 (OPTIONS): Explain that --create implies + --no-purge. + +Tue Sep 4 18:38:23 BST 2001 Colin Watson <cjwatson@debian.org> + + * src/man.c (format_display): If $BROWSER contains several elements + separated by colons, try each in turn until one succeeds. + +Tue Sep 4 02:09:07 BST 2001 Colin Watson <cjwatson@debian.org> + + * src/man.c (format_display): Actually change to the temporary + directory for HTML output. + * src/mandb.c (main): --create implies --no-purge. + +Sat Sep 1 17:40:06 BST 2001 Colin Watson <cjwatson@debian.org> + + * lib/mkdtemp.c, lib/mkstemp.c, lib/tempname.c: New files, taken + from glibc 2.2.4. + * lib/Makefile.in, lib/README: Add them. + * configure.in: Check for mkdtemp() and mkstemp(). + * lib/tempfile.c (path_search): New function, split from + create_tempfile(). Now checks $TMP as well as $TMPDIR, and ensures + that neither is checked when privileges are raised. + (create_tempfile): Use it. Fix the umask around the call to + mkstemp() rather than calling fchmod() after the fact. + (create_tempdir): New function. + * include/manconfig.h.in: Prototype create_tempdir(). + + * src/man.c: --html code needs to be guarded by TROFF_IS_GROFF. + (man_getopt): If -H is given, set troff to 1. Add -H to the + "incompatible options" error message. + (make_roff_command): Revert determine_lang_table() special case. + (format_display): Use a temporary directory for HTML output (groff + tends to output several files, including images). Take an extra + argument, used to set the name of the main output file. + (display): Pass man_file to format_display(). + * src/util.c (remove_directory): New function. + * include/manconfig.h.in: Prototype it. + +Fri Aug 31 22:20:08 BST 2001 Colin Watson <cjwatson@debian.org> + + Initial support for ESR's $BROWSER variable. Not complete yet. + + * src/man.c: Remove ENABLE_HTML guards around all the --html code. + Too many #ifdefs clutter the code, and it should at least be + usable to some extent now. + (main): Check $BROWSER before other ways of finding html_pager. + (man_getopt): If -H is given, set roff_device to "html". Reset + htmlout and html_pager with -D. + (make_roff_command): Don't call determine_lang_table() if htmlout + is set. + (make_browser): New function. + (make_display_command): Add case for htmlout being set. + (format_display_and_save): Rename roff_cmd to format_cmd. + (display_catman): Likewise. + (display): Likewise. Add some cases for htmlout being set (always + format, never save a cat page). Split some code out into + format_display(). + (format_display): New function. + + * src/man.c (main): Save the value of $LESS for later. + (make_display_command): Use setenv() to change $LESS in the + environment rather than nasty shell code. + + * src/man.c (main): Don't loop if $LANGUAGE is set but empty. + (display_catman): Fix segfaults due to strappend() misuse. + * src/manp.c (read_config_file): Print dotmanpath, not home (which + might point to freed memory). + + * src/man.c (main): Tidy up error message. + (store_line_length): Remove duplicate 'int width' declaration. + +Wed Aug 29 20:44:27 BST 2001 Colin Watson <cjwatson@debian.org> + + * man/man8/mandb.man8 (WHATIS PARSING): Move to ... + * man/man1/lexgrog.man1: ... here. + + * po/cs.po, po/de.po, po/es.po, po/fr.po, po/it.po, po/ja.po: Run + msgmerge. + +Wed Aug 29 01:48:53 BST 2001 Colin Watson <cjwatson@debian.org> + + * man/man1/apropos.man1 (ENVIRONMENT): Fix grammar error. + +Wed Aug 29 01:34:33 BST 2001 Colin Watson <cjwatson@debian.org> + + * src/lexgrog.l (usage): New function. + (main): Rewrite. Add command-line options, and make the output + more easily parseable by other programs. By default, the lexgrog + program now only attempts to parse its input as a man page and + only displays the whatis line, although this can be changed on the + command line. + * src/Makefile.in: Include lexgrog in $(PROGS), so that it gets + built by default and linked against version.o. + * man/man1/lexgrog.man1: New man page. Still needs some work. + * man/Makefile.in: Install it. Tolerate it being missing in some + languages (ugly hack). + +Tue Aug 21 01:57:44 BST 2001 Colin Watson <cjwatson@debian.org> + + * src/Makefile.in: Link non-setuid programs against fake_security.o + rather than security.o. + * src/fake_security.c: Add a few stub variables to match recent + security.c changes. + +Tue Aug 21 01:34:49 BST 2001 Colin Watson <cjwatson@debian.org> + + * src/Makefile.in (install): Don't depend on all, so that the + package isn't recompiled when running 'make install' on a machine + with a skewed clock. + Don't install the wrapper. Install man and mandb in $(bindir) + rather than $(libdir)/man-db. + If lexgrog and globbing have been built, install them in + $(libdir)/man-db rather than $(sbindir). + Ensure $(sbindir) and $(libdir)/man-db exist. + +Tue Aug 21 00:40:47 BST 2001 Colin Watson <cjwatson@debian.org> + + * src/man.c (escape_special): Rename to escape_less(). Constify + argument. + (determine_lang_table): Constify argument. Unify some common code. + (make_display_common): Use escape_less() rather than + escape_special(). + * docs/NEWS: Document shell escaping. + +Sun Aug 19 23:56:36 BST 2001 Colin Watson <cjwatson@debian.org> + + * configure.in: Compile with -Wall by default. + * src/compression.c: Include "security.h". + * src/manp.c: Likewise. + * src/check_mandirs.c (purge_whatis): Correct return value when + purging a WHATIS_MAN entry with a missing target. + * src/whatis.c (get_whatis): Remove unused variables 'pointer' and + 'ext'. + * src/man.c: Include <time.h> for time(). + (local_man_loop): Remove unused variable 'dir'. + (make_roff_command): Remove unused variable 'tmpfile'. + (exist_check): Print 'loc' in pointer format rather than string + format (it's a struct mandata *). + * src/wrapper.c: Include <grp.h> for initgroups(). + +Sun Aug 19 13:16:01 BST 2001 Colin Watson <cjwatson@debian.org> + + * src/manp.c (iterate_over_list): New function (get_from_list() can + only get the first matching element). + (get_manpath): Use iterate_over_list() to get multiple matching + MANPATH_MAP entries. + +Sun Aug 19 13:02:01 BST 2001 Colin Watson <cjwatson@debian.org> + + * src/man.c (popen, pclose): Rely on the BROKEN_PCLOSE check in + configure rather than checking architectures here. + (man_getopt): Wrap the remaining code related to --html in '#ifdef + ENABLE_HTML'. + (make_roff_command): Remove HAS_TROFF and NROFF_MISSING asserts; I + think they're unnecessarily unwieldy here. + (tmp_cat_filename): Constify argument. + (commit_tmp_cat): Constify arguments. + (display_catman): New function, split from display(). + (display): Use display_catman(). Don't shadow status from an outer + scope. + (try_section): Simplify cat page case. + + * src/util.c (escape_shell): New function. + * include/manconfig.h.in: strappend() is no longer in util.c. + Prototype escape_shell(). + * src/man.c (make_roff_command): Use escape_shell() liberally to + protect against strange characters. + (make_display_command): Likewise. Add special handling for $MAN_PN + in the less prompt string, since the environment variable is no + longer parsed by the shell. + (display_catman): Likewise. + (display): Likewise. + * src/whatis.c (use_grep): Likewise. + + * src/catman.c (main): Print a warning if setlocale() fails. + * src/man.c (main): Likewise. + * src/mandb.c (main): Likewise. + * src/manpath.c (main): Likewise. + * src/whatis.c (main): Likewise. + * src/wrapper.c (main): Explain why this doesn't need to warn if + setlocale() fails. + +Thu Aug 9 15:10:26 BST 2001 Colin Watson <cjwatson@debian.org> + + * configure.in: Require autoconf 2.50a (for AS_VAR_*). + * src/wrapper.c: If DEBUG is defined, allow _man and _mandb as + argv[0] names as well as man and mandb, rather than instead of + them. + * docs/NEWS: Document lexgrog improvement. The mkstemp() work was + more an improvement than a fix, as I don't think it was + exploitable. + +Mon Aug 6 02:22:38 BST 2001 Colin Watson <cjwatson@debian.org> + + * src/lexgrog.l: groff requests aren't case-sensitive, so stop the + preprocessor detection thinking they are. + +Mon Aug 6 01:26:26 BST 2001 Colin Watson <cjwatson@debian.org> + + * lib/tempfile.c (create_tempfile): Use mode 0644 rather than mode + 0600 so that it can be read with different privilege levels. + +Thu Aug 2 00:12:41 BST 2001 Colin Watson <cjwatson@debian.org> + + * lib/tempfile.c: New file. create_tempfile() does sane + mkstemp()-like temporary file creation, while searching through + $TMPDIR, P_tmpdir, and /tmp in the style of tempnam(). + * include/manconfig.h.in: Prototype create_tempfile(). + * lib/tempnam.c: Remove, as we no longer use it. + * lib/Makefile.in, lib/README: Remove mentions of tempnam.c, and use + tempfile.c instead. + * configure.in: Don't replace tempnam(). + + * src/compression.c (create_ztemp): Use create_tempfile() rather + than tempnam(). + * src/man.c (create_stdintmp): Likewise. + * zsoelim/zsoelim.l (open_file): Likewise. + * src/straycats.c (straycats): Use create_tempfile() rather than + mkstemp(). + + * src/compression.c (decompress): Call remove_ztemp() rather than + duplicating code. + (remove_ztemp): Only close the fd if it looks valid. + * src/man.c (remove_stdintmp): Remember to free stdin_tmpfile. + + * acinclude.m4: Correct AC_VAR_* to AS_VAR_*. + * src/util.c (is_changed): Fix comment. + + * docs/NEWS: Preliminary entries for 2.3.20. + +Tue Jul 24 02:17:53 BST 2001 Colin Watson <cjwatson@debian.org> + + * docs/manpage.example: Some cleanups. Use more conventional + formatting for references to other man pages. + * docs/manpage.example.pod, docs/manpage.example.sgml: New files. + +Mon Jul 16 16:42:46 BST 2001 Colin Watson <cjwatson@debian.org> + + * src/lexgrog.l: Restore fr_name to the NAME regex. + +Fri Jul 13 11:51:40 BST 2001 Colin Watson <cjwatson@debian.org> + + * man/de_DE.ascii: Remove (Latin-1 variant still exists). + +Fri Jul 13 02:35:39 BST 2001 Colin Watson <cjwatson@debian.org> + + * */.cvsignore: New files. + + * src/man.c (make_roff_command): Look up the correct character set + each time a page is displayed, not just the first time. + +Thu Jul 12 01:11:41 BST 2001 Colin Watson <cjwatson@debian.org> + + * src/lexgrog.l: Split out NAME-matching regex into one regex per + language. Add support for cs, fi, hu, nl, and pl, not forgetting + Latin (for Lingua::Romana::Perligata(3pm), of course). + (add_separator_to_whatis): New function, to allow trimming the + first space from the " - " separator. + (main): Rewrite; find_name()'s prototype changed long ago. + +Tue Jul 10 14:37:51 BST 2001 Colin Watson <cjwatson@debian.org> + + * src/util.c (is_newer): Rename to ... + (is_changed): ... this. We now check whether the cat page has a + different timestamp from the man page, rather than simply whether + it is newer. + Remove hack for archivers that preserve timestamps: it's no longer + needed. + * include/manconfig.h.in: Rename is_newer() prototype to + is_changed(). + + * src/man.c (commit_tmp_cat): Set the modification time of a created + cat page to be the same as the corresponding man page. + (display): stat() the man page so that commit_tmp_cat() can get + its modification time. + Use is_changed() rather than is_newer(). + +Sun Jul 8 16:06:43 BST 2001 Colin Watson <cjwatson@debian.org> + + * src/whatis.c (get_whatis): Allow an entry to point to itself if it + contains a non-empty whatis field. This occasionally happens when + multiple names and descriptions are present, and it's easier to + tolerate this. + (display): If an entry points to itself, don't display the pointer + in square brackets. + + * include/sections.list: Remove; it's no longer needed. + * GNUmakefile.in (dist): Don't install it. + * include/Defines.in: Don't reference it. Also remove definition of + message_catalogue (obsoleted by gettext). + + * include/manconfig.h.in (LESS_OPTS): Don't include $LESS. + * src/man.c (make_display_command): Include $LESS here instead. Put + it after prompt_string rather than before, so that long options in + $LESS work. + +Sat Jul 7 16:32:24 BST 2001 Colin Watson <cjwatson@debian.org> + + * src/man.c (determine_lang_table): Fix silly bracketing typo that + caused none of the lang_table entries to match. + +Thu Jul 5 15:48:42 BST 2001 Colin Watson <cjwatson@debian.org> + + * Version: 2.3.19. + + * docs/NEWS: Update. + * man-db.gnu: Update. Change formatting to something closer to that + currently in the Free Software Directory CVS repository. + * man-db.lsm: Update. + +Thu Jul 5 14:27:17 BST 2001 Colin Watson <cjwatson@debian.org> + + * man/man5/manpath.man5 (FORMAT): MANDB_MAP now only affects + setuidness when in the system configuration file. + * src/man_db.conf.in: Likewise. + + * po/cs.po, po/de.po, po/es.po, po/fr.po, po/it.po, po/ja.po: + Update. + +Wed Jul 4 13:39:40 BST 2001 Colin Watson <cjwatson@debian.org> + + The product of some hacking at the Debian Conference. Enjoy. + + * docs/NEWS: Describe recent changes. + + * include/manconfig.h.in: Add SYSTEM_CAT and USER_CAT defines. + Move includes from security.c to ... + * src/security.h: ... here (new file). + * src/man.c: Include security.h. + * src/mandb.c: Likewise. + * src/security.c: Likewise. + + * src/manp.c (add_mandb_map): Take an additional parameter, user. + Use the new MANDB_MAP_USER flag instead of MANDB_MAP if it is set. + (cat_manpath): Look at user catpaths before system catpaths. + (add_to_dirlist): Take user parameter, passed through to + add_mandb_map(). + (read_config_file): Call add_to_dirlist() with user set for + ~/.manpath, and reset for /etc/manpath.config (security fix). + (get_mandb_manpath): Allow user manpaths. + (global_catpath): Rename to get_catpath(), and only allow it to + handle user catpaths (from ~/.manpath) as well if explicitly + requested. + (is_global_mandir): Note that this is trusted. + * src/manp.h: Reflect renaming of global_catpath() to get_catpath(). + + * src/man.c (need_to_rerun): Use get_catpath() instead of + global_catpath(). + (make_roff_command): Likewise. + (display): Likewise. + (find_cat_file): Likewise. + (try_db_section): Likewise. + (try_db): Likewise. + * src/catman.c (main): Likewise (check only user mandirs). + * src/mandb.c (main): Likewise (check only user mandirs). + * src/straycats.c (straycats): Likewise (check only with user + mandirs). + * src/whatis.c (search): Likewise (check only with user mandirs). + + * src/man.c (need_to_rerun): Use is_global_mandir() rather than + global_catpath() to decide whether to drop privileges. + * src/mandb.c (main): Likewise. Unify common code for system and + user catpaths. + + * src/man.c (make_roff_command): Check catpath even if + global_manpath is false. + (locate_page): Simplify slightly. + + * src/security.c (get_man_owner): New function: gets and caches the + password entry structure for MAN_OWNER. + * src/man.c (commit_tmp_cat): If running as root, chown created cat + pages to MAN_OWNER. + +Sun Jul 1 01:58:33 BST 2001 Colin Watson <cjwatson@debian.org> + + * src/check_mandirs.c (splitline): Don't initialize the pointer + field here; instead, control it from ... + (test_manfile): ... here. + Change the logic for multiple name/description blocks again. + Remove misguided special-casing of the first name in a block. Set + the id field more carefully, depending on string equality instead + of ordering. Avoid scribbling over lg.whatis when a later + splitline() needs it. Don't call splitline() if whatis parsing + failed. + + * src/check_mandirs.c (purge_normal): New function, factored out + from purge_missing(). + (purge_whatis): New function to decide whether to purge a + WHATIS_MAN entry. + (purge_missing): Use both of these. + (testmandirs): purge_whatis() sometimes needs to ensure a + hierarchy is rescanned. Honour this. + Improve indentation levels. + * src/mandb.c (main): Reset force_rescan before each purge. + + * src/lexgrog.l: Treat '..' as a no-op request. + +Sun Jul 1 01:38:13 BST 2001 Colin Watson <cjwatson@debian.org> + + * manual/misc.me (Modes of operation): Mention new requirement to + use --update to update databases. + mandb knows how to delete old entries now, so remove a sentence + saying it can't. + + * src/man.c: More in the quest for sane indentation levels. + + * man/man1/apropos.man1: Textual cleanups. + * man/man1/man.man1: Likewise. + * man/man1/manpath.man1: Likewise. + * man/man1/whatis.man1: Likewise. + * man/man1/zsoelim.man1: Likewise. + * man/man5/manpath.man5: Likewise. + * man/man8/accessdb.man8: Likewise. + * man/man8/catman.man8: Likewise. + + * man-db.lsm: Reformatted as per the LSM.README. + +Thu Jun 28 22:52:04 BST 2001 Colin Watson <cjwatson@debian.org> + + * src/man.c (try_db_section): Downgrade whatis refs warning to a + debugging message, as it's rather noisy for a stable release. + +Thu Jun 28 22:38:41 BST 2001 Colin Watson <cjwatson@debian.org> + + * src/check_mandirs.c (gripe_rwopen_failed): New function. + (testmandirs): Use it. + (purge_missing): New function to purge database entries whose + associated manual pages have been deleted. + * src/check_mandirs.h: Prototype purge_missing(). + + * src/mandb.c (main): New --no-purge option. Unless it is used, + purge_missing() is called on each database before calling mandb(). + Don't call straycats() until after the temporary database has been + moved to its permanent location. Make sure all cleanup code is + called with dropped privileges. + Add statistics message for purged entries, and separate messages + for the benefit of translations. + When --test is given, only assume --quiet if --debug wasn't given. + (usage): Describe --no-purge. + + * src/man.c: Move extension's storage to ... + * src/globbing.c: ... here. + (look_for_file): Constify string arguments. + * src/man.h: Move prototype of look_for_file() to ... + * src/globbing.h: ... here (new file). + + * src/manp.c (pathappend): Only append the new element(s) if any + were left after removing duplicates. + (read_config_file): Make sure what we free was actually allocated. + + * src/Makefile.in (mandb): Link with globbing.o. + + * man/man8/mandb.man8 (OPTIONS): Document --no-purge. + General textual cleanup. + + * src/accessdb.c (main): Move content into a tighter scope. + + * src/security.c (drop_effective_privs): Style nit. + +Thu Jun 28 13:28:13 BST 2001 Colin Watson <cjwatson@debian.org> + + * man/man1/man.man1 (ENVIRONMENT): Document $MANWIDTH. + +Thu Jun 28 13:15:04 BST 2001 Colin Watson <cjwatson@debian.org> + + * src/man.c (store_line_length, get_roff_line_length): New + functions, adapted from Andries Brouwer's man. + (main): Outside catman mode, find out and store the line length. + (make_roff_command): Outside catman mode, retrieve the stored line + length and feed a .ll request into the pipeline if it's + non-standard. We let recent groff handle the page length. + (display): Don't even consider saving the cat page if save_cat is + already false. + (get_preprocessors): If the database says no preprocessors are to + be used, it's OK to save the cat page. + +Thu Jun 28 01:44:02 BST 2001 Colin Watson <cjwatson@debian.org> + + * src/man_db.conf.in (SECTION): Remove guarantee that ties will be + broken in lexical order within sections. It's rather complicated + to be sure of that right now, and it should rarely matter. + + * docs/ToDo: lexgrog learnt how to detect preprocessors ages ago. + +Thu Jun 28 01:02:32 BST 2001 Colin Watson <cjwatson@debian.org> + + * src/manp.c (gripe_stat_file): Downgrade the warning if a manpath + element doesn't exist to a debugging message (affects people + without a /usr/local/share/man, for example). + (read_config_file): Additional debugging message. Free home if it + gets allocated. + +Thu Jun 28 00:35:09 BST 2001 Colin Watson <cjwatson@debian.org> + + The caching cleanup I've been promising for weeks. Here be dragons. + + * src/man.c (man): Only update database caches if --update is given. + (main): --all no longer implies a database update (you can always + use --all --update if you need that). + + * man/man1/man.man1 (OVERVIEW): It's no longer necessarily man's job + to keep the caches up to date; use --update to get that. + (DEFAULTS): Likewise. Some rationale. Mention globbing fallback. + (OPTIONS/--local-file): Fix typo. + (OPTIONS/--update): New description. Only useful with setuid man. + * manual/misc.me (Modes of operation): man will only update database + entries if the --update flag is used. + +Tue Jun 26 22:10:07 BST 2001 Colin Watson <cjwatson@debian.org> + + * src/lexgrog.l: More cleanup. No substantive changes. + * include/manconfig.h.in: Likewise. Also bring xrealloc() prototype + into sync. + + * src/mandb.c (main): Allow root as well as MAN_OWNER to work on + system manpaths. + +Tue Jun 26 03:45:01 BST 2001 Colin Watson <cjwatson@debian.org> + + * src/man_db.conf.in (SECTION): Add a little more advice about where + to list sections with extensions. + + * src/manp.c (add_to_dirlist): Add SECTIONS as an alias for SECTION, + since I keep getting it wrong and I came up with it in the first + place. Both make sense in different situations. + + * src/check_mandirs.c (splitline): Trim trailing spaces off names + and descriptions. If the given base_name contains a comma, only + use the part of the name before it as the target for pointers. + + * src/whatis.c (get_whatis): Unroll recursion into a finite loop to + avoid infinite recursion if the database contains a pointer loop. + Add the page name as an argument so that a warning can be printed. + (display): Pass the new argument to get_whatis(). + (apropos): Recommend 'mandb --create' rather than plain 'mandb' if + the database gets corrupted. + + * src/lexgrog.l: Ignore no-op groff requests (e.g. '.'). + New variable, fill_mode. Reset it when .nf is encountered, set it + when .fi is encountered. + (newline_found): If fill_mode is set, add 0x11 instead of a space. + +Mon Jun 25 02:55:36 BST 2001 Colin Watson <cjwatson@debian.org> + + * docs/NEWS: Describe recent changes. Add dates of old releases. + + * include/manconfig.h.in: Move check_mandirs.c prototypes to ... + * src/check_mandirs.h: ... here (new file). + * src/man.c: Include check_mandirs.h. + * src/mandb.c: Likewise. + * src/man.h (make_filename): Move prototype to check_mandirs.h. + + * src/check_mandirs.c (test_manfile): Split parsing of file names + into mandata structures into a new function ... + (filename_info): ... this. + (test_manfile): Calculate length of file name minus compression + extension separately from the parsing, and do so whether COMP_SRC + is defined or not. + + * src/man.c (try_section): Use filename_info() to find out if the + section of a glob-located file is different from the current + section and is mentioned elsewhere in the configuration file. If + so, ignore that file in the current section. + +Mon Jun 25 01:30:24 BST 2001 Colin Watson <cjwatson@debian.org> + + * src/man.c (man_getopt): Conditionalize gxditview initialization on + TROFF_IS_GROFF. As a bonus, this squashes a compiler warning. + (man): Remove some unreferenced cruft, while I'm in the process of + fixing up multi-character sections. + + * src/Makefile.in: Build intermediate man.o and mandb.o objects, so + that changing other objects just requires a relink. + + * src/globbing.c (look_for_file): Print the layout in debugging mode + only when it's first parsed. + +Sun Jun 24 18:47:20 BST 2001 Colin Watson <cjwatson@debian.org> + + * configure.in (--with-db): Improve help output formatting. + + * manual/intro.me (Arguments to configure): Document + --enable-mandirs. + * README: Update. + + * manual/Makefile ($(manual).html): Improve grohtml invocation. + (realclean): Remove generated .png files. + +Sun Jun 24 17:22:53 BST 2001 Colin Watson <cjwatson@debian.org> + + * src/man.c (try_section): Break if a page has been found and --all + wasn't given. + (try_db): Print extension in debug mode. Compare against requested + section if the extension is a section in its own right, to avoid + duplication. + * src/man_db.conf.in: It's SECTION, not SECTIONS. + + * configure.in: --enable-mandirs=OS defines how the manual page + hierarchy is laid out (GNU, HPUX, Solaris, IRIX). If unset, + globbing behaves as before. + * acconfig.h: Add MANDIR_LAYOUT. + * src/globbing.c (parse_layout): New function. + (look_for_file): Associate each glob with a layout. + + * configure.in: Don't check for off_t (only used by gettext). + +Sat Jun 23 15:23:14 BST 2001 Colin Phipps <cph@cph.demon.co.uk> + + * zsoelim/zsoelim.l (open_file): Supply a format string to error(). + +Sat Jun 23 15:15:41 BST 2001 Colin Watson <cjwatson@debian.org> + + * ult_src.c (ult_src): Restore the original mantree to the start of + basename before calling test_for_include(), in case ult_softlink() + went outside the mantree. + (ult_softlink): Make debugging message print the absolute path. + +Tue Jun 19 02:33:40 BST 2001 Colin Watson <cjwatson@debian.org> + + * src/man.c (man): Allow sections to be more than one character, and + trim them for use in directory names. + * src/manp.c (read_config_file): Read ~/.manpath first, as entries + are added the other way around now. + +Mon Jun 18 18:55:39 BST 2001 Colin Watson <cjwatson@debian.org> + + * src/manp.c (add_sections, get_sections): New functions. + (add_to_dirlist): Recognize new SECTIONS directive. + * src/manp.h (iterate_catlist, start_iterator): Remove (not used). + (get_sections): New prototype. + * src/man.c (get_section_list): Use get_sections() instead of + std_sections if it returns a non-empty list. + * src/man_db.conf.in: Add documentation of SECTIONS, and a default + line. The documentation is still inaccurate (extensions don't work + well yet). + * include/manconfig.h.in (STD_SECTIONS): Reduce to only + single-character sections; the rest will be set in the + configuration file. + + * src/manp.c (add_to_list): Add to the tail rather than the head + (needed for SECTIONS, probably makes other things more intuitive). + (read_config_file): Restore print_list() in debug mode. + + * src/check_mandirs.c: Add copyright notice and change information. + * src/lexgrog.l: Likewise. + * src/man.c: Likewise. + * src/mandb.c: Likewise. + + * src/compression.c (get_ztemp): Remove redundant test. + + * src/man.c (get_preprocessors_from_file): Change an = to ==. + + * src/wrapper.c (main): Cosmetic improvements. + +Sat Jun 16 19:22:51 BST 2001 Colin Watson <cjwatson@debian.org> + + * src/straycats.c (check_for_stray): Check that + canonicalize_file_name() succeeded, not that it failed. (I'm + pretty sure that this is the last instance of this now.) + +Sat Jun 16 18:30:09 BST 2001 Colin Watson <cjwatson@debian.org> + + * libdb/db_store.c: Move id-favouring logic to a macro. If + FAVOUR_STRAYCATS is set, make sure a WHATIS_MAN entry won't + inadvertently replace a STRAY_CAT. + + * configure.in: Don't strip binaries in LDFLAGS (GNU standards). + + * src/check_mandirs.c (testmandirs): Check that opendir() succeeded, + not that it failed! + (testmandirs): Instead of initializing info.pointer here, + initialize it ... + (splitline): ... here. + (testmandirs): Shuffle whatis logic some more, to make sure pages + that really are in the filesystem don't end up as WHATIS_MAN. This + reverts part of the change of 26 May 2001. + + * man/man8/mandb.man8: Document the expected format of NAME sections + for whatis parsing, and some common reasons why parsing fails. + +Tue Jun 12 22:20:17 BST 2001 Colin Watson <cjwatson@debian.org> + + * docs/NEWS: More 2.3.19 stuff. + +Sun Jun 10 14:05:10 BST 2001 Gordon Sadler <gbsadler1@lcisp.com> + + * man/man1/manpath.man1 (ENVIRONMENT): Replace 'semicolon' with + 'colon' throughout. + +Sun Jun 10 13:59:04 BST 2001 Colin Watson <cjwatson@debian.org> + + * src/manp.c (pathappend): Fix infinite loop when adding a manpath + entry which is a substring of an existing entry. + +Sun Jun 10 13:49:02 BST 2001 Colin Watson <cjwatson@debian.org> + + * src/check_mandirs.c (testmandirs): Treat EROFS like EACCES while + opening a database read-write (i.e. only print debug messages). + (create_db): Likewise. + src/man.c (open_cat_stream): Likewise. + (try_db_section): Likewise. + + * src/straycats.c (check_for_stray): Carry on gracefully rather than + exiting if a straycat filter fails. + + * src/manp.c (pathappend): Remove duplicate entries. + + * src/lexgrog.l: Allow .LP, .PP, and .P as well as .br between + whatis definitions. + +Sat Jun 2 14:34:59 BST 2001 Colin Watson <cjwatson@debian.org> + + * configure.in: Give our English man pages the same date format as + the other locales. + + * src/straycats.c: Use 'col -bx' rather than 'col-bx'. + +Mon May 28 14:56:35 BST 2001 Colin Watson <cjwatson@debian.org> + + * include/manconfig.h.in: Since it isn't sensible to define debug + (-d options at run-time do just as well), remove the commented + definition. + * include/manconfig.h.in, src/catman.c, src/check_mandirs.c, + src/compression.c, src/man.c, src/mandb.c, src/manpath.c, + src/whatis.c: Remove instances of '#ifndef debug'. + * src/util.c: debug is already declared extern in manconfig.h. + +Mon May 28 14:30:38 BST 2001 Colin Watson <cjwatson@debian.org> + + * tools/README: Describe chconfig and install-manpage. + * man/man5/manpath.man5, docs/ToDo: Document the DEFINE directive. + + * libdb/db_delete.c, libdb/db_lookup.c, libdb/db_store.c, + src/whatis.c: Remove redundant strtok() declaration. + * src/check_mandirs.c: Declare strpbrk(). + + * src/*: Global style cleanup. Sorry about the large diff, but it + had to happen sometime: I can't stick with the prevailing coding + style when there are several to choose from! No meaningful code + change, although I disentangled a few assignments from if + conditions and rearranged a few other sections. + * po/*: Update accordingly. + +Sun May 27 18:32:41 BST 2001 Colin Watson <cjwatson@debian.org> + + * acinclude.m4 (MAN_CHECK_BDB): New macro to check for Berkeley DB. + * configure.in: Use it. + + * src/check_mandirs.c (test_manfile): Be more accurate about finding + the " - " at the end of a series of whatis names, and make sure to + skip commas between them. Add more commentary. + + * src/man.c (open_cat_stream): Return NULL if the cat page is + unwriteable, rather than wasting time compressing to /dev/null. + (format_display_and_save): Give up if both outing and saving + become false. + +Sun May 27 18:00:00 BST 2001 Colin Watson <cjwatson@debian.org> + + * docs/NEWS: Preliminary entries for 2.3.19. Add current version + number throughout as well as just "Major changes since ...". + * manual/misc.me (Modes of operation): mandb doesn't necessarily + have to be rerun any more, as the filesystem will be checked if + the database doesn't return anything. man and mandb can be built + for setuid operation but installed non-setuid now. + +Sat May 26 15:33:37 BST 2001 Colin Watson <cjwatson@debian.org> + + * manual/README: Note that HTML output is disabled by default. I + don't currently provide a pre-built PostScript manual anywhere. + * manual/misc.me (Credits): Add Fabrizio. + * manual/*: FHS updates. Various boring typo/syntax/whitespace + fixes. + +Sat May 26 15:14:29 BST 2001 Colin Watson <cjwatson@debian.org> + + * GNUmakefile.in, autogen.sh: Put 'timestamp' in stamp-h and + stamp-h.in rather than the date. + + * src/man.c (open_cat_stream): Open the cat file before forking in + order to deal with errors better. Open to /dev/null without + complaining if the cat file is unwriteable. + (close_cat_stream): Only commit the temporary cat if it was + created. + (locate_page): Fall back to the filesystem if nothing was found in + the database (since it might be out of date). + + * src/man.c (try_db_section): If the database can't be opened + read-write due to EACCES, only print a message in debug mode. + * src/check_mandirs.c (testmandirs): Likewise. + (create_db): Likewise. + + * src/check_mandirs.c (test_manfile): Make sure separate whatis keys + each get their own whatis entry. + +Wed May 23 17:06:31 BST 2001 Colin Watson <cjwatson@debian.org> + + * configure.in: Fix PACKAGE and VERSION substitutions. + +Wed May 23 15:51:06 BST 2001 Colin Watson <cjwatson@debian.org> + + * configure.in: Updates for autoconf 2.50. + (AC_PREREQ): Require version 2.1.2. + (AC_INIT): Avoid deprecated use with one argument. + (man_ac_version): Don't work out the autoconf version any more; + inline syntax is all that needed it, and any autoconf since 2.1.2 + will do. + (AC_STDC_HEADERS): Now AC_HEADER_STDC. + (AC_LINK_FILES): No longer needed with newer gettext. + (AC_OUTPUT): Avoid deprecated use with arguments. + Fix instances of underquoting throughout, as the new autoconf is + less tolerant of this. + * include/manconfig.h.in: Remove compatibility code for pre-1995 + autoconf versions. + +Thu May 17 19:11:37 BST 2001 Colin Watson <cjwatson@debian.org> + + * src/man_db.conf.in: Improve documentation of MANDB_MAP. + +Wed May 16 00:09:13 BST 2001 Colin Watson <cjwatson@debian.org> + + * tools/config.sub: Update to today's CVS. + +Wed May 16 00:07:04 BST 2001 Colin Watson <cjwatson@debian.org> + + * A number of minor fixes from SuSE's diff: + + * GNUmakefile.in: Don't prepend ../ to prefix before passing it to + subdirs. + * lib/cleanup.c: HUP and TERM signal handling was mistakenly acting + on INT instead. + * src/lexgrog.l: Replace a few instances of " \t\n" with + "blank_eol". + * src/man.c: Drop privileges before changing back to the original + directory just before exiting (only matters for profiling). + * src/util.c: Undefine MAX before redefining it. + * po/POTFILES.in: Read src/lexgrog.c rather than src/lexgrog.l + (gettext understands C better than lex). + * po/de.po, po/es.po, po/fr.po: Remove a few stray '\r's. + + * I'll look at the zlib bits of the patch soon. From a preliminary + look I'll probably end up rewriting it - I'd prefer more of the + compression stuff actually to go in src/compression.c. + +Tue May 15 22:01:59 BST 2001 Colin Watson <cjwatson@debian.org> + + * src/man.c (get_section_list): Return std_sections if argument to + -S was an empty string or if that or $MANSECT contained only + colons. Previously, man would behave wrongly in the former case + and segfault in the latter. Also remove a redundant xstrdup(). + +Mon May 14 23:46:25 BST 2001 Colin Watson <cjwatson@debian.org> + + * Version: 2.3.18. + + * README: Add contact details. + + * libdb/stamp-h: Removed. + * GNUmakefile.in, libdb/Makefile.in: Updated accordingly. + + * src/man_db.conf.in: FHS 2.1 has /usr/local/share/man as the + location of locally installed man pages rather than + /usr/local/man. Accordingly, the MANDB_MAP for /usr/local/man is + now /var/cache/man/oldlocal, and /usr/local/share/man takes over + /var/cache/man/local. + + * po/cs.po, po/de.po, po/es.po, po/fr.po, po/it.po, po/ja.po: Update + with msgmerge. + +Mon May 14 22:18:32 BST 2001 Colin Watson <cjwatson@debian.org> + + * src/security.c: Count how many times drop_effective_privs() has + been called, and don't actually regain privileges until + regain_effective_privs() has been called an equal number of times. + This should flush out several subtle bugs. + + * src/mandb.c: Call manpath() rather than read_config_file() (this + was changed while merging 2.3b12). Otherwise 'mandb --user-db' + segfaults as manp never gets set. + +Sun May 13 18:34:33 BST 2001 Colin Watson <cjwatson@debian.org> + + * GNUmakefile.in (dist): Don't install po/Makefile.in. + + * src/stamp-h: Removed. + * GNUmakefile.in, src/Makefile.in: Updated accordingly. + + * GNUmakefile.in (distclean): Don't clean configure, src/lexgrog.c, + zsoelim/zsoelim.c. + (realclean): Clean configure here instead. realclean targets in + subdirs already remove the other two. + * zsoelim/Makefile.in (clean): Let realclean remove zsoelim.c. + +Sun May 13 17:17:32 BST 2001 Colin Watson <cjwatson@debian.org> + + * man/Makefile.in: Another try to get NLS installation working + properly. The last change was wrong when LINGUAS was unset. + + * GNUmakefile.in (dist): Install docs/manpage.example. + +Sun May 13 16:54:01 BST 2001 Colin Watson <cjwatson@debian.org> + + * man/Makefile.in: Exclude NLS directories without man pages, as CVS + can't delete directories quite as fully as I'd like. + + * configure.in: No subdirectory Makefiles need ALL_LINGUAS any more. + + * manual/Makefile: Make the location of soelim variable so that + distributions can e.g. use the version in the build directory. + + * manual/Makefile, manual/README: Add an HTML target. Disabled by + default as groff's HTML driver doesn't produce very good output + yet (as of 1.16). + + * include/Defines.in: Only remove /usr from the default sysconfdir + if the prefix is exactly /usr, not something that happens to + contain /usr (like the default /usr/local). + +Sun May 13 13:39:17 BST 2001 Colin Watson <cjwatson@debian.org> + + * man-db.gnu, man-db.lsm: Mention move to SourceForge and the new + URLs for the Debian package pool. + + * man-db.gnu: New architectures (successful Debian ports as of + today). New mailing list for announcements. + +Sun May 13 13:18:56 BST 2001 Colin Watson <cjwatson@debian.org> + + * README: Document FHS changes; correct pointer to + docs/INSTALL.autoconf. + + * docs/INSTALL.autoconf: Update to instructions from automake 1.4. + + * docs/COPYING: Minor fixes from GNU (FSF address, Y2K). + +Sun May 13 13:00:17 BST 2001 Colin Watson <cjwatson@debian.org> + + * GNUmakefile.in (dist): Add include/sections.list. + + * GNUmakefile.in, man/Makefile.in: Cause USE_NLS to be substituted + properly from configure. + + * include/Defines.in: Remove some old gencat definitions. + + * docs/NEWS: Update in preparation for 2.3.18 release. Correct a few + it's -> its typos in earlier entries. + +Sun May 13 02:18:00 BST 2001 Colin Watson <cjwatson@debian.org> + + * autogen.sh: Create stamp-h.in. + + * po/cs.po, po/de.po, po/es.po, po/fr.po, po/it.po, po/ja.po: Update + with msgmerge. + +Sun May 13 02:03:05 BST 2001 Colin Watson <cjwatson@debian.org> + + * docs/ToDo: Most of Wilf's beta code is in now; mention SuSE. + +Sun May 13 01:22:29 BST 2001 Colin Watson <cjwatson@debian.org> + + * docs/manpage.example: New file. + +Sun May 13 01:19:47 BST 2001 Colin Watson <cjwatson@debian.org> + + * include/manconfig.h.in: Bump database version from 2.3.1 to 2.3.2. + * libdb/db_ver.c (dbver_wr): Reformat. + (dbver_rd): Downgrade warnings about wrong version numbers to + debugging messages. + * libdb/db_lookup.c (split_data): Fix fencepost error that would + overlook a missing whatis field. + + * src/man.c (try_db_section): Display warning if whatis refs are + relied upon to find a page. + * libdb/db_storage.h: Note that WHATIS_MAN and WHATIS_CAT are + deprecated. + + * src/accessdb.c (main): Give FHS_CAT_ROOT priority over CAT_ROOT. + * man/man8/accessdb.man8 (DESCRIPTION): Document this. + * man/de_DE.85591/man8/accessdb.man8 (DESCRIPTION): Likewise. + * man/de_DE.ascii/man8/accessdb.man8 (DESCRIPTION): Likewise. + * man/es_ES.88591/man8/accessdb.man8 (DESCRIPTION): Likewise. + * man/it_IT.88591/man8/accessdb.man8 (DESCRIZIONE): Likewise. + + * src/check_mandirs.c (testmandirs): Tidy up database opening code. + + * src/mandb.c (mandb): Don't create a new database if opt_test is + set. + (main): If opt_test is set, just delete the temporary database + rather than moving it into place. + * man/man8/mandb.man8 (OPTIONS): Document --test. + (FILES): Document FHS compliant database locations. + (AUTHOR): Add myself. + + * src/ult_src.c (ult_softlink): Remove overly-cautious check for + non-local symlinks in mantrees. + + * src/whatis.c (apropos): Remove a now redundant test that cont.dptr + is non-NULL. + +Sun May 13 01:00:47 BST 2001 Colin Watson <cjwatson@debian.org> + + * src/whatis.c (apropos): Complain and exit if a data pointer is + NULL. For this, locally undefine BTREE to avoid using optimized + functions, as they don't appear to provide enough error checking + yet. + +Fri May 4 03:59:08 BST 2001 Colin Watson <cjwatson@debian.org> + + * configure.in: Change PACKAGE from man-db to man_db. + + * po/*.po: Update with msgmerge. + + * release.sh: New file (quick release script). + +Fri May 4 03:44:49 BST 2001 Colin Watson <cjwatson@debian.org> + + * acconfig.h: Remove Debian-specific entries. + + * aclocal.m4: Remove, as it's another autogenerated file. + + * autogen.sh: New file (very simple for now). + +Fri May 4 03:34:54 BST 2001 Colin Watson <cjwatson@debian.org> + + * GNUmakefile.in (dist): Update set of installed files somewhat. No + need to build man_db-nls.h any more. + + * man/Makefile.in: Declare ALL_LINGUAS and LINGUAS. + + * src/man.sh: Remove (obsoleted by src/wrapper.c). + +Fri May 4 02:56:30 BST 2001 Colin Watson <cjwatson@debian.org> + + * README: Update for new NLS configuration methods. Reflect renaming + of configuration file from man_db.config to man_db.conf. + +Fri May 4 00:18:23 BST 2001 Colin Watson <cjwatson@debian.org> + + * stamp-h.in: Remove (generated by GNUmakefile). + +Fri May 4 00:17:50 BST 2001 Colin Watson <cjwatson@debian.org> + + * GNUmakefile.in, configure.in, include/Defines.in, + libdb/Makefile.in, libdb/db_delete.c, libdb/db_lookup.c, + libdb/db_store.c, libdb/db_ver.c, man/Makefile.in, + src/Makefile.in, src/lexgrog.l-2.3.8, src/lexgrog.l-2.4a, + src/wrapper.c: Dispose of all the old catgets stuff. Replace with + gettext idioms where appropriate. + + * libdb/man_db-nls.h, src/man_db-nls.h: Remove (obsolete with + gettext). + + * include/config.h.in: Remove (generated by autoheader). + +Thu May 3 01:17:08 BST 2001 Colin Watson <cjwatson@debian.org> + + * GNUmakefile.in: Strip .po from language names; fix it's -> its + typo. + + * configure.in: Stop trying to guess the package name and version + number from the current directory name. + +Wed May 2 18:38:49 BST 2001 Colin Watson <cjwatson@debian.org> + + * src/manp.c: Remove #include of security.h (now merged elsewhere). + (pathappend): Constify second argument. + (mkcatdirs): Eliminate DIRLIST; now takes mandir and catdir as + arguments. + (add_2_dirlist): Rename to add_to_dirlist(); return void, and + otherwise eliminate use of DIRLIST. As mentioned below, we now use + a linked list instead. + (read_config_file): Update accordingly. + + * src/security.c: *uid no longer static for now, as other objects + use them. + * src/man.c: Declare ruid and euid extern here now that security.h + is gone. + + * src/check_mandirs.c (update_db): Close dbf rather than database. + +Wed May 2 17:27:22 BST 2001 Colin Watson <cjwatson@debian.org> + + * acinclude.m4: New file. Restore definitions inadvertently removed + from aclocal.m4 a few changes ago. + * aclocal.m4: Update accordingly with 'aclocal'. + + * config.guess, config.sub: Move to tools directory. + + * configure.in: Move gettext macros below AC_PROG_CC etc. + + * configure.in: Remove Debian-specific code; build dependencies + handle this now. + +Wed May 2 16:41:28 BST 2001 Colin Watson <cjwatson@debian.org> + + * acconfig.h: Removed some definitions gettext used to need. + + * Makefile.in (_root): Added ABOUT-NLS to the distribution. + +Wed May 2 16:31:21 BST 2001 Colin Watson <cjwatson@debian.org> + + * config.guess, config.sub: New files, synced from today's CVS. + +Wed May 2 16:28:02 BST 2001 Colin Watson <cjwatson@debian.org> + + * configure.in, include/Defines.in, man/Makefile.in: Remove use of + curdate. + + * man/it_IT.88591/man1/man.man1, man/ja_JP.eucJP/man1/man.man1, + man/man1/man.man1: s/curdate/date/g. + +Wed May 2 16:15:00 BST 2001 Colin Watson <cjwatson@debian.org> + + * po/POTFILES.in: Added src/accessdb.c and src/wrapper.c. + +Wed May 2 15:53:45 BST 2001 Colin Watson <cjwatson@debian.org> + + * ABOUT-NLS, aclocal.m4, intl/*, po/ChangeLog, po/Makefile.in.in: + Update to gettext 0.10.37 (from 0.10.32). Various additions and + removals. + + * GNUmakefile.in, libdb/Makefile.in, src/Makefile.in: Remove old + gencat/xcat targets. + +Wed May 2 01:33:04 BST 2001 Colin Watson <cjwatson@debian.org> + + * src/mandb.c (main): Initialize security properly, since we may be + setuid, and drop privileges when creating temporary databases in + user-supplied hierarchies. Thanks to Ethan Benson for reporting + this vulnerability. + + * man-db.gnu, man-db.lsm: Add myself as a developer; change + maintainer. + + * libdb/db_lookup.c, src/man.c: Cosmetic fixes. + * src/accessdb.c (usage): Remove spurious space in output. + +Wed May 2 01:02:19 BST 2001 Colin Watson <cjwatson@debian.org> + + * Merging in changes from Wilf's 2.3b12 beta release. + * docs/ChangeLog: Folded in changelog comments. + + * GNUmakefile.in, configure.in: Build configuration file. + * */Makefile.in: Rearrange code for CPPFLAGS and similar. + + * configure.in: Look for grep, seteuid(), setresuid(). + * include/config.h.in: Add HAVE_SETEUID and HAVE_SETRESUID. + * include/manconfig.h.in: Add GREP and various grep flags. + * src/whatis.c: Use GREP rather than "grep". + + * src/man_db.config: Renamed to src/man_db.conf.in. + * src/man_db.conf.in: Add commented out DEFINE directives. + * docs/ToDo: Need to document DEFINE directive. (Also, I (cjwatson) + checked in two other todo items by mistake earlier: inline + pipelines and merging work done by Wilf and Andries.) + * include/Defines.in: CPPFLAGS tweaks; rename config file; %.i rule. + * include/comp_src.h.in: paths.h -> ./manconfig.h. + + * src/security.c, src/man.c: Rewrite seteuid() handling; remove + special "running as root" case. + * src/security.h: Remove; combine previous contents with security.c. + * src/man_db-nls.h: No longer need man_CHOWN. + * include/manconfig.h.in: Add init_security() prototype. + + * src/manp.c: Major rewrite. Replace static storage with linked + list. Improve configuration file handling, replacing get_dirlist() + with read_config_file(). Move some of the more deeply nested bits + of read_config_file() into separate functions like + add_mandb_map(). (cjwatson: This won't compile yet. Fabrizio also + hacked on this heavily, including splitting part of get_dirlist() + out into add_2_dirlist() and adding mkcatdirs(). I've merged these + as best I can for now, but it's still unfinished.) + * src/manp.h: Remove get_dirlist() prototype, add prototypes for + read_config_file() and get_def(). + * src/man.c, src/mandb.c, src/straycats.c, src/whatis.c: Use new + get_defs() functions to pull paths from config file rather than + hard-coding them. + +Fri Apr 27 22:39:34 BST 2001 Colin Watson <cjwatson@debian.org> + + * Merging in changes from Wilf's 2.3.11 release. + * docs/ChangeLog, docs/NEWS: Folded in changelog comments. + + * GNUmakefile.in: Added deroff and manual targets. + * README: Added comment about manual; added notes on configure + flags. + * configure.in: Minor improvement for non-GNU makes. + + * src/lexgrog.l, src/lexgrog.l-2.4a: Allow comments other than at + the beginning of a line. + + * src/manp.c: Replace has_subdirs() with has_mandir(): for $PATH + components not in config, check for ../man as well as man subdirs. + + * zsoelim/zsoelim.l: Use #defines for exit codes. + + * GNUmakefile.in, README, docs/INSTALL.quick, src/man.c: Cosmetic + rearrangements (whitespace, typos, etc.). + +Fri Apr 27 21:36:11 BST 2001 Colin Watson <cjwatson@debian.org> + + * manual/*: Add the source code for the man_db manual from Wilf's + FTP site. + +Fri Apr 27 18:33:17 BST 2001 Colin Watson <cjwatson@debian.org> + + * src/accessdb.c (main): Close the database and set dbf to NULL if + dbver_rd() fails. + * src/check_mandirs.c (update_db): Likewise. + * src/man.c (try_db): Likewise. + * src/straycats.c (straycats): Likewise. + * src/whatis.c (search): Likewise. + +Fri Apr 27 18:10:47 BST 2001 Colin Watson <cjwatson@debian.org> + + * src/lexgrog.l: Detect grap (.G1) and vgrind (.vS). + * include/manconfig.h.in: Add GRAP_FILTER and VGRIND_FILTER to + filter enum. + +Fri Apr 27 18:00:04 BST 2001 Colin Watson <cjwatson@debian.org> + + * New maintainer. + + * man/man1/man.man1 (HISTORY): Update some dates, add myself. + * man/it_IT.88591/man1/man.man1 (HISTORY): Likewise. + * man/ja_JP.eucJP/man1/man.man1 (HISTORY): Likewise. + + * man/de_DE.88591/man1/man.man1 (HISTORY): Update some dates. + * man/de_DE.ascii/man1/man.man1 (HISTORY): Likewise. + * man/es_ES.88591/man1/man.man1 (HISTORY): Likewise. + + * ja_JP.ujis/man1/apropos.man1: Remove (superseded by ja_JP.eucJP). + * ja_JP.ujis/man1/man.man1: Likewise. + * ja_JP.ujis/man1/manpath.man1: Likewise. + * ja_JP.ujis/man1/whatis.man1: Likewise. + * ja_JP.ujis/man1/zsoelim.man1: Likewise. + * ja_JP.ujis/man5/manpath.man5: Likewise. + * ja_JP.ujis/man8/accessdb.man8: Likewise. + * ja_JP.ujis/man8/catman.man8: Likewise. + * ja_JP.ujis/man8/mandb.man8: Likewise. + +Tue Apr 17 15:23:30 BST 2001 Colin Watson <cjwatson@debian.org> + + * End of the Great CVS Sync. + * Debian release 2.3.17.1-3. + + * src/ult_src.c (ult_src): Return an error when ult_softlink() + fails. + + * src/man.c: Use latin1 character set for C and POSIX locales. + + * po/ja.po: Update Japanese translation. + * man/ja_JP.eucJP/man1/apropos.man1: New file, updating Japanese + translation in new character set. + * man/ja_JP.eucJP/man1/man.man1: Likewise. + * man/ja_JP.eucJP/man1/manpath.man1: Likewise. + * man/ja_JP.eucJP/man1/whatis.man1: Likewise. + * man/ja_JP.eucJP/man1/zsoelim.man1: Likewise. + * man/ja_JP.eucJP/man5/manpath.man5: Likewise. + * man/ja_JP.eucJP/man8/accessdb.man8: Likewise. + * man/ja_JP.eucJP/man8/catman.man8: Likewise. + * man/ja_JP.eucJP/man8/mandb.man8: Likewise. + + * man/THANKS: Updated (new Japanese eucJP translation). + + * src/man.c (main): Support LC_MESSAGES being set differently from + other locale categories (internal_locale). + + * src/man.c (main): Multiple locale preferences can be set with + $LANGUAGE. + + * src/version.c (ver): Remove previous maintainer address. + + * configure.in: Find version number correctly. + +Sun Apr 1 14:37:28 BST 2001 Colin Watson <cjwatson@debian.org> + + * Debian release 2.3.17.1-2. + + * src/whatis.c (main): Disable regex searches if -w (wildcard) + option is given. + + * docs/ToDo: Using zlib rather than gzip would be good. + +Sat Mar 31 18:07:46 BST 2001 Colin Watson <cjwatson@debian.org> + + * Debian release 2.3.17.1-1. + + * src/check_mandirs.c (test_manfile): Check if the result of symlink + and hard link resolution is in the cache before looking for .so + links. This provides a substantial speedup when many symlinks + exist in the mantree. + + * src/catman.c (main): Initialize full locale by calling setlocale() + with LC_ALL rather than LC_MESSAGES (GOTO Masanori). Remove manual + getenv() calls accordingly. + * src/man.c (main): Likewise. + * src/mandb.c (main): Likewise. + * src/manpath.c (main): Likewise. + * src/whatis.c (main): Likewise. + + * include/manconfig.h.in: Add 3perl to section names, following 3pm; + Debian is using this to allow other packages to shadow pages from + core Perl packages. + +Wed Feb 28 21:02:41 GMT 2001 Colin Watson <cjwatson@debian.org> + + * Debian release 2.3.17-3.2. + + * configure.in: More fixes for Debian troff and /dev/null input + files. This restores detection of -mandoc macros. + + * man/man1/man.man1 (OPTIONS): Typo: "It's" -> "Its". + * man/man1/zsoelim.man1 (OPTIONS): Likewise. + + * man/man1/man.man1 (OPTIONS): Mention that argument to -M must be + the root of a mantree. + (SEE ALSO): Add reference to man-db manual to explain the above. + +Wed Feb 21 00:54:47 GMT 2001 Colin Watson <cjwatson@debian.org> + + * Debian release 2.3.17-3.1. + + * src/man.c (local_man_loop): Fix format string vulnerability in + printing of error message. + + * src/whatis.c (get_whatis): Fix segfault if whatis reference is + NULL. + + * src/man.c (local_man_loop): chdir() to original working directory + so that 'man -l' works again on relative paths to compressed + pages. + + * src/compression.c (decompress): free() file if the decompressor + failed so that atexit() doesn't try to remove it again. + + * src/mandb.c (main): Reverse sense of -s option to agree with the + documented intent. + + * configure.in: Work around change in the behaviour of Debian nroff, + which no longer accepts /dev/null as an input file. + + * GNUmakefile.in: Restore full clean rules. + +Fri Apr 7 10:50:45 EET 2000 fab (fpolacco@debian.org) + + * Checked in by Colin Watson during SourceForge CVS sync. + + * Upstream changes from Debian changelog (2.3.17-2): + - Commented away call to distclean_root in GNUmakefile: need to + leave the Makefile and configure in the tarball. + - Found and fixed subtle bug which made wrapper uselessly linked + with -ldb2. When invoked by root on a system which enables + group.db, then the call to initgroups() segfaults due to the + libc link to libdb! + + * Other changes not mentioned in Debian changelog: + - man-db.gnu: Update date and prerequisites (libdb2 becomes weak + prerequisite). + - man-db.lsm: New file. + - src/lexgrog.l: Cosmetic changes. + - src/wrapper.c: Add debugging code. + +Fri Apr 7 10:50:45 EET 2000 fab (fpolacco@debian.org) + + * Checked in by Colin Watson during SourceForge CVS sync. + * Version: 2.3.17. + * Upstream changes from Debian changelog: + - Corrected apparent disappearing of option -e in apropos. + - Corrected wrong usage of undocumented option -X which produced + error when passed to filters. This is now parametrized as + optional argument, defaulting to use devX75. Documented in + usage : -X = -TX75, -X100 = -TX100, -X100-12 = -TX100-12. + - Applyed patch submitted by Tomohiro KUBOTA: + - roff_device and LESSCHARSET are determined by user environment + rather than language of manpage for English manpage. + - roff_device "ascii8" is used for non-English/non-ISO-8859-1 + languages. + - Added new check for libdb in configure.in + - Added /usr/local/{share/}man to config file, due to bug in FHS, + thanx to Gregor Hoffleit. + - Added new message catalog po file for cs (czech) (4 new + messages), thanx to Vladimir Michl. + - tired of people continously complaining that man behaves + differently than in RedHat (which is "The Reference Linux", you + all know that), I'll add tbl as default filter for man. This + will fix those three or four manpages that do not take the + burden to declare their dependency on the tbl formatter (usually + because upstream uses RedHat and so ...). Now what would I do if + someone fill a bug against this because of wasting of CPU cicles + for un-necessary filtering on the hundreds of pages that do not + need tbl? I would certainly agree with them. Therefore I will + fix this introducing scanning of manpages a la grog in mandb, + and storing the result in the database. ...[noise of hacking + and debugging]... Well, I did it (use accessdb to see it!). It + took 4 weekend (stolen to the implementation of man 2.4) to + complete and debug. Now you can announce the world that man-db + 2.3.17 knows in advance which filters to run when processing a + manpage which is in the database. + +Wed Mar 22 16:00:16 EET 2000 fab (fpolacco@debian.org) + + * Checked in by Colin Watson during SourceForge CVS sync. + * Version: 2.3.16. + * Upstream changes from Debian changelog: + - Applyed patch submitted by Javier Fernandez-Sanguino Pena to + permit search of trnlated manpages before giving the first + english one found. + +Mon Feb 28 22:09:09 EET 2000 fab (fpolacco@debian.org) + + * Checked in by Colin Watson during SourceForge CVS sync. + * Version: 2.3.13. + * Upstream changes from Debian changelog: + - Applied patch to avoid disappearing of index file during + regeneration. Thanx to Colin Phipps. + - Applied patch to generate secure temporary file in straycat. + Thanx to Colin Phipps. + +Wed Feb 23 22:34:54 EET 2000 fab (fpolacco@debian.org) + + * Version: 2.3.12 + + * New maintainer. + + * find the huge list of changes (in three years) in file + debian/changelog. + +Wed Sep 27 23:59:05 BST 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * Version: 2.3b12 + + * src/manp.c: replace static storage with linked list + + * src/security.h: removed/combined with security.c + + * src/security.c, src/man.c: re-write seteuid() handling: + remove special "running as root" case + + * src/whatis.c: use GREP rather than "grep" + + * include/manconfig.h: many #DEFINE additions + + * configure.in: look for grep, seteuid(), setresuid() + + * GNUmakefile.in, */Makefile.in: minor modifications + + * include/Defines.in: modifications + + * src/man_db.config: renamed as src/man_db.conf.in + + * src/man_db.conf.in: add commented out DEFINE directives. + +Thu Sep 21 19:33:58 BST 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * Version: 2.3.11 + + * manual/*: bundle the source code of the man_db manual + +Wed Sep 20 16:17:19 BST 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * src/manp.c: replace has_subdirs() with has_mandir(): for $PATH + components not in config, check for ../man as well as man subdirs. + + * various: small bug-fixes from Markus, + Joey (joey@infodrom.north.de), Lionel (cons@dxcern.cern.ch) + + * src/util.c: when checking man/cat timestamps, compare mod time of + cat with latest of mod or create time of man: If untar new man + page with old timestamp, still reformat. + +Thu Jul 13 11:29:32 BST 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * Version: 2.3.10 + + * src/apropos.c: fix for #undef REGEX regarding int regex + + * src/lexgrog.l: default to new version. + + * src/README.lexgrog: new. + + * configure.in: all echo's through MAN_ECHO() for --quiet. + + * various: apply patch from Carl Edman (cedman@princeton.edu), + port to NeXTstep and misc small fixes. + +Fri Jun 16 11:12:08 BST 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * Version: 2.3.9 + +Wed Jun 14 17:08:41 BST 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * src/man.c (make_display_command): fix command when ascii==1 + + * src/man.c (display): don't return 1 on skip if local_man_file==1 + + * man/Makefile.in: force make to resolve the program name strings + (which are sed commands) once only. + + * configure.in: don't exec pager (too many side effects) + +Sun Jun 4 13:51:22 BST 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * Version: 2.3.8 + + * various: apply patch from CERN to allow globbed support for + HPUX, OSF and SOLARIS system manual page hierarchies. + + * GNUmakefile.in: add hook for `make check' + +Mon May 29 18:57:24 BST 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * src/whatis.c (main): if $POSIXLY_CORRECT is in effect, + default to case-less extended regex searches for apropos + as specified by POSIX 1 + + * man/man1/apropos.man1: document above change. + + * src/whatis.c (apropos, parse_name): ensure case-less + matching on manual page name aswell as it's whatis for apropos. + + * all manual pages: replace instances of program with %program% + and arrange to do a sed replacement with the actual name of the + program, chosen by the installer. + + * zsoelim/zsoelim.l: fix recursion detector. + + * src/lexgrog.l (newline_found): new. + +Mon May 22 20:07:17 BST 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * nls/de_DE.88591/*.m: from Lars Fenneberg (li@gimli.comlink.de) + + * src/Makefile, libdb/Makefile: fix -DNLS + + * src/man.c (LESS_PROMPT): Make " Manual page" a translatable + message. + + * man/de_DE.ISO_8859-1: rename as man/de_DE.88591 + + * nls/THANKS, man/THANKS: new. + + * src/whatis.c: If $POSIXLY_CORRECT, force apropos to do extended + regex matching. + +Sat May 20 12:27:47 BST 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * src/man.c: if -f or -k, simply execv() the program, passing + the entire argv[] to it. + + * man/man1/man.man1: document change. + + * src/whatis.c: ignore -f, --whatis, -k and --apropos + +Sat May 13 18:10:50 BST 1995 Markus Armbruster + + * Version: 2.3.7 + + * lib/cleanup.c (pop_all_cleanups): new + * src/man.c, src/security.c: use pop_all_cleanups() in children. + + * general: use fork() instead of vfork() in situations where + vfork() could cause problems. + +Tue May 9 23:30:58 BST 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * manual pages: aesthetic/grammer changes. + + * flex files: process with flex-2.5.2 + +Mon May 8 11:15:07 BST 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * include/manconfig.h.in: #define some exit codes. + * all sources: use the codes. + * English manual pages: add EXIT STATUS section where + appropriate + + * src/man.c (make_display_command): back out execing the pager + as PAGER does not have to be a simple program name. + + * configure.in: prepend "exec " to the default pager. + + * src/mandb.c: fix stupid bug where global databases remain + owned by the creator in all circumstances. Clean up. + + * src/straycats.c, src/check_mandirs.c: homogenized and + re-worded messages emitted by mandb. + +Mon May 8 11:15:07 BST 1995 Markus Armbruster + + * lib/cleanup.c, lib/cleanup.h: new functions. Install + sighandler, initialise and operate a stack of cleanup funcs + callable on exit(). + + * src/mandb.c, src/man.c: modify to use cleanup functions. + +Tue Apr 25 20:21:51 BST 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * Version: 2.3.6 + + * src/whatis.c: new, replaced with edited version from 2.4 alpha + source tree. Apropos now does _real_ word matches. + + * man/man1/apropos.man1: remove description of option -e. + +Mon Apr 24 17:26:54 BST 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * src/man.c (get_section_list): Ignore empty $MANSECT. + * src/man.c (main): if (!*pager) pager = CAT; + + * libdb/db_storage.h, include/manconfig.h.in, src/check_mandirs.c, + src/straycats.c: small modifications to fix broken + FAVOUR_STRAYCATS behaviour and properly handle situation when + STRAYCAT and WHATIS_CAT share namespace. Move definition of + FAVOUR_STRAYCATS to include/manconfig.h.in. From Zoltan. + + * zsoelim/zsoelim.c: exit 1 on command line file open failure. + + * src/man.c (man_getopt): consolidate incompatible option parsing. + * src/man.c (usage): update wrt. option parsing. + + * src/man.c (display): only prompt/attempt display if found==1. + + * src/man.c (make_display_command): exec the pager. + +Fri Apr 21 15:16:59 BST 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * Version: 2.3.5 (public release) + + * src/whatis.c: fix a couple of problems caused by whatis/apropos + split. + + * configure.in: remove determination of viable gencat program, + always use our own. + +Wed Apr 19 09:53:27 BST 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * GNUmakefile.in: renamed Makefile to differentiate between + GNU make and others. + + * configure.in: create bogus ./makefile to catch non GNU make + programs. + +Mon Apr 17 11:06:32 BST 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * Version: 2.3.4 + + * src/man.c (format_display_and_save): don't save cat if + formatting process fails and/or produces nothing. + +Sat Apr 8 18:02:52 BST 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * src/mandb.c: change #ifdef SECURE_MAN_UID to + #if defined(SECURE_MAN_UID) && defined(MAN_DB_UPDATES) as the + databases should be owned by their creators if man is not + responsible for updating them. + + * src/man.c: minor changes regarding MAN_DB_UPDATES + + * include/manconfig.h.in: update CATMODE and DBMODE w.r.t. + recent MAN_DB_UPDATES/MAN_CATS definitions. + + * src/mandb.c: changes to operation. Work on a temporary copy of + the database, then rename() to actual database. Catch SIGINT, + SIGTERM and remove the temp copy if necessary. + + * src/compression.c (decompress): kill(getpid(), SIGINT) instead of + exit(0) if child (decompressing man page) fails. + + * src/straycats.c (check_for_stray): kill(getpid(), SIGINT) instead of + exit(0) if child (decompressing cat page) fails. + + * libdb/db_lookup.c (make_content): ndbm limit is 4k not 1k. + +Mon Apr 3 20:52:06 BST 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * docs/NEWS: new + + * README: more Linux-system information. + + * configure.in, acconfig.h: #define NDEBUG if !--enable-debug + + * include/Defines.in: comment out @LEXLIB@, not required in link + stage. + +Sun Apr 2 17:42:02 BST 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * Version: 2.3.3 + + * README: add sections referring to default preprocessors and + system specific notes. + + * xcat/xcat.l, zsoelim,zsoelim.l, src/lexgrog.l: process with + flex-2.5.1 + +Fri Mar 31 17:12:44 BST 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * src/whatis.c (display): add free(string) + + * src/whatis.c, src/Makefile.in: produce separate object files for + apropos and whatis so that the programs know which one they are + regardless of actual program-filename. + + * All Makefile.in, include/Defines.in: append CPPFLAGS supplied to + ./configure or make to the standard $(CPPFLAGS) variable. + Allows configuring with unusual #include directories, eg. + CPPFLAGS=-I/usr/src/gdbm LDFLAGS=-L/usr/src/gdbm ./configure + + * configure.in (--with-db=LIBRARY): override the default database + interface library on systems having a choice. Options={db,gdbm,ndbm} + + * configure.in: Re: sec 5.6 of the autoconf manual, replace + (if test a=b -o a=c) with + (if test a=b || test a=c) + +Tue Mar 28 16:44:46 BST 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * Version: 2.3b2 + + * lib/flock.c, lib/flock.h: New. flock() wrapper to fcntl() for + systems that lack flock(). + + * xcat/xcat.l: #include "manconfig.h". For systems not supporting + __inline__ + + * include/Defines.in (%.d : %.c): modify rule to account for C + compilers other than gcc + + * All Makefiles.in (cd $dir && $(MAKE)): change to $(MAKE) -C $dir + * nls/Makefile.sub.in: merge into nls/Makefile.in + +Mon Mar 27 22:42:53 BST 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * src/globbing.c (look_for_file): don't rely on GLOB_NOMATCH as + AIX doesn't have it. + + * configure.in, include/manconfig.h.in (man_ac_version): new, + replaces ac_version and is more robust + * configure.in, aclocal.m4: rename non-autoconf macros so that + future versions of autoconf won't clash + + * gencat/gencat.c, gencat/genlib.c: tidy up header includes and + remove unused variable definitions + + * configure.in: check for gencat + +Mon Mar 27 12:51:47 BST 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * Version 2.3b1 + + * src/man.c: small HAS_TROFF/NROFF_MISSING changes from Markus. + +Thu Mar 23 18:09:46 GMT 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * src/man.c: man will only _create_ user db's if + MAN_DB_CREATES is #defined (It is not defined by default) + + * add ability to install programs/man pages with transformed names. + ie --program-prefix=PREFIX, + --program-suffix=SUFFIX and + --program-transform-name=EXP + arguments to configure are now observed. + + * src/man.c (try_db): store an info->addr==NULL entry in the + hashtable if we fail to access this db. Only try to open the + db once. If the db access succeeds, but the lookup fails to find + anything, store info==NULL in the hashtable. + + * libdb/db_ver.c (dbver_rd): don't die if wrong version. Issue a + message, return 1 and let the caller decide what to do. + +Mon Mar 20 16:13:23 GMT 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * src/whatis.c (get_whatis): new. Use the pointer member of mandata + structure to access the whatis string. + (display): modify to use get_whatis(). + + * src/checkmandirs.c (splitline): don't store whatis referenced + `whatis' lines in the db. + + * libdb/db_lookup.c (make_content): store a NULL whatis as "" rather + than "-". + +Sun Mar 19 16:37:58 GMT 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * src/lexgrog.l: wipe out roff comment lines (again). + + * src/whatis.c: use BSD style regex if POSIX unavailable. Ignore + --regex if neither available. Fix failed-regex-compilation error + message. + + * lib/regex.c, lib/regex.h: remove + + * configure.in: account for regex changes. + + * libdb/db_delete.c (dbdelete): don't barf on delete request of a + multi-key that is not listed in the main key, return NO_ENTRY. + + * src/man.c (try_section): don't try to delete db entry for missing + straycat. Return 0 and leave that to the caller. + +Sat Mar 18 12:31:48 GMT 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * Replaced strncasecmp() calls with strncmp(). Removed partial + support for man dirs named .../MAN. + + * lib/{alloca.c,putenv.c,memcmp.c}: new + lib/{getopt.c,getopt1.c,getopt.h,error.c,xstrdup.c,xmalloc.c}: + newer replacements + + * All Makefile.in, include/Defines.in, include/manconfig.h.in: + use standard (GNU coding) installation variables: + bindir, sysconfdir, man?ext, man?dir, localedir, manroot. + These variables, along with prefix and exec_prefix may be specified + on the `make' command line. + + * configure.in: move definition of BINDIR and config_prefix to + include/Defines.in to allow dynamic evaluation. Rename config_prefix + to sysconfdir. + + * libdb/db_lookup.c (list_extensions): fix return count. + + * libdb/db_delete.c (dbdelete): take account of situation + where there were multiple name entries and they are subsequently + deleted. When deleting the last one (which still has a multi-key + entry), delete the standard key too, rather than recomputing it's + content (which would be nothing and cause a "corrupt db" message). + +Fri Mar 17 23:36:44 GMT 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * src/man.c (glob_for_file, make_names): remove + src/globbing.c: new file + lib/glob.c, lib/glob.h, lib/fnmatch.c, lib/fnmatch.h: replacements + from GNU glob.tar.gz + configure.in: glob changes. + Use POSIX glob replacement. + Allow --extension to be used in globbing environment. Don't search + for cats in alternate cat directory if no index. + + * All Makefile.in: add standard (GNU coding) targets: all, clean, + mostlyclean, distclean, realclean, install, uninstall, TAGS, dist + Other configuration/goal modifications + + * Makefile.in: force config.status to do selective re-creation + + * src/zsoelim.l: cater for ".SH \f?NAME\f?" + + * acconfig.m4 (AC_FUNC_PCLOSE), src/man.c (display): small changes + from Markus + + * Makefile.in, README: change `make all' to equal `make nls=off' + rather than `make nls=all' + + * include/Defines.in: move -DDEFAULT_MANROFFSEQ to + include/manconfig.h + + * include/manconfig.h: change inline parsing. Use autoconf-2.2 + +Thu Mar 16 12:38:15 GMT 1995 Markus Armbruster (armbru@pond.sub.org) + + * Version: 2.2a20 + + * zsoelim/zsoelim.l: general fixes + + * configure.in: don't add -lc as library containing db routines. + + * lib/glob.c: ultrix fixes + + * lib/rename.c: replacement + + * lib/strappend.c: small fix and copyright notice + +Wed Mar 15 11:17:58 GMT 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * src/lexgrog.l: modifications to whatis parser, mainly for + stray cats. + + * src/man.c (main): add drop_effective_privs() and + regain_effective_privs() around manpath configuration so that + users' `hidden' manpaths are found and used. + + * substantial configuration changes regarding all Makefiles to + allow `alternate build directory' support. man_db may be built + in *any* directory. Aids multi-architecture builds and testing + of various configuration options. + + * rationalised source files to #include "local_header" and + #include <system_header>. CPPFLAGS uses -I- to limit -I paths + to "" resolving only. Other alternate build directory mods. + + * src/comp_src.h.in: moved to ./comp_src.h.in + src/manconfig.h, src/path.h.in: combined into ./manconfig.h.in + + * *ensure* that lib/{regex,fnmatch,getopt}.h are only #included + if the replacement c source is used. Otherwise use system routines + and system headers. + + * ./configure.in, acconfig.h, aclocal.m4 (AC_FUNC_PCLOSE, + BROKEN_PCLOSE): new autoconf macro + + * gencat is not installed by default. (cd gencat && make install) + + * tools/mkcatdirs: re-written + tools/checkman: new utility to check for duplicate manual pages + across manual page hierarchies. + + * docs/INSTALL, README: new + + * src/man.c (display): attempt to open tmp_cat_filename(), if + unable, don't try to save cat. + +Sun Mar 12 18:12:13 GMT 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * Version 2.2a19 + + * all source (main): replace mkprogname(%s) with + xstrdup(basename(%s)) + + * src/util.c (strappend): remove + * lib/strappend.c: new + +Mon Mar 6 20:05:27 GMT 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * src/man.c (--local): re-enable support for compressed local + files. eg `man -l foo.1.gz' + + * src/man.c (make_roff_command): Check in alternate catdir then + mandir for external format script if ALT_EXT_FORMAT #defined. + + * zsoelim/zsoelim.l: partial rewrite to mimick GNU soelim + `bad roff request' error behaviour. + +Mon Mar 6 13:51:32 GMT 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * src/man.c: fix SEGV if arg --local used + + * src/man.c (gripe_system): exit with errorcode of failed command + +Sun Mar 5 20:54:13 GMT 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * Version 2.2a18 + + * src/catman.c (main): check individual cat directories for + existence and perms. + + * src/man.c (commit_tmp_cat): fix SEGV + + * src/man.c: NO_MAN_UPDATES & NO_MAN_CATS #defined code + regions for experimental CERN use, untested and incomplete. + + * configure.in, src/Makefile, src/paths.h.in: undo bogus dependance + on NLS for output device=latin1. + + * configure.in (--with-device=<device>): new option to select + default nroff output device. Test that nroff can handle selected + output device (if any). + +Thu Mar 2 19:30:45 GMT 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * src/lexgrog.l (too_big), (add_str_to_whatis), + (add_char_to_whatis): new functions + (find_name): add extra argument. + add string bounds checking, add new condition to terminate NAME + section: <man_name>\n{W}*\n+.+ + + * src/check_mandirs.c, src/straycats.c, src/manconfig.h: change + callers of find_name(). + + * src/man.c (try_db_section): warn of re-cache failure, but don't + exit. + lots of changes/simplifications w.r.t. global/user hierarchies. + global_manpath == 1 for global hierarchy, global_manpath == 0 for + user. global_manpath is set once we know which hierarchy we are + displaying from. + +Tue Feb 28 13:34:15 GMT 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * src/man.c (display): fix SEGV. + + * src/util.c (strappend): allow realloc of NULL string. + + * src/man.c: replace strappend(xstrdup("string"), ...) with + strappend(NULL, string, ...) + + * src/straycats.c (check_for_stray): allow any supported + straycat compression extension if COMP_SRC is #defined. + Replace static buffers with dynamic. + + * src/check_mandirs.c, src/whatis.c: replace static buffers + with dynamic. + + * src/util.c: (mkdbname): new function. + src/*.c: replace static database[PATH_MAX] with mkdbname() calls. + +Sun Feb 26 20:58:59 GMT 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * Version 2.2a17 + + * src/whatis.c: warn if no index or whatis db's available. + + * src/man.c: Fixes to setuid/privs code regarding user manual + trees and ruid==0 from Markus. + + * configure.in: add checks for AIX, USG, stdlib.h, MINIX, ISC_POSIX + + * lib/glob.c: ensure that _POSIX_VERSION can be defined + +Sun Feb 19 12:38:10 GMT 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * Version 2.2a16 + + * Various portability fixes provided by Philippe Defert + (defert@cern.ch) + + * FSSTND changes regarding /usr, /var/catman searching + + * Some header file re-arrangement to aid user configuration. + +Sun Feb 12 15:00:44 GMT 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * Version 2.2a15 + +Sat Feb 4 10:54:21 GMT 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * man(1), manpath(5): revisions. + +Thu Feb 2 23:36:20 GMT 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * src/catman.c (do_access): new + + * src/man.c (do_chown): new + catman changes, don't do_prompt() if print_where==1 + + * src/manp.c: changed an !is_directory() to is_directory() != 1 + +Sat Jan 28 09:39:07 1995 Markus Armbruster (armbru@pond.sub.org) + + * man.c: **changes** ?? + +Sun Jan 22 16:15:04 GMT 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * Version 2.2a14+ + + * configure.in, libdb/mydbm.h libdb/db_gdbm.c: if using gdbm, + explicitly test for gdbm_exists() rather than use header #defines. + + * man/man1/mandb.man1, man/man1/catman.man1: moved to man/man8 and + renamed. + + * apropos(1), whatis(1), manpath(1), zsoelim(1), catman(8), + mandb(8) manual pages: significant revisions. + +Sat Jan 21 14:33:28 GMT 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * incorporate Markus' changes with my post 2.2a13 changes. + + * src/version.c (ver): fix, use fprintf() instead of error(). + +Thu 22 Dec 1994 15:12:38 +0100 1994 Markus Armbruster (armbru@pond.sub.org) + + * src/man.c (make_roff_command, make_display_command, + open_cat_stream, close_cat_stream, display, + find_cat_file, checked_system, + get_preprocessors): new functions + + * src/man.c (format_and_display, format_and_display_file, + display_cat_file, parse_roff_directive, + add_directive): removed functions + + * src/man.c (glob_for_file, make_name): made consistent. + + * src/util.c (strappend): new function. + (do_system_command): changed/renamed to do_system(). + + * src/manp.c (global_catpath): replaced/fixed + + * src/security, src/fake_security (do_system_command_drop_privs): + renamed to do_system_dropped_privs(). + + * lib/rename.c: new file + +Mon Jan 9 20:42:38 GMT 1995 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * nls/Makefile, man/Makefile: allow for bogus or non existent + native languages passed in $nls. + + * src/man.c (do_prompt): replaced with less friendly but more + portable version. + + * inline directives replaced with __inline__ to be more ansi. + +Mon Dec 19 12:59:28 GMT 1994 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * Version: 2.2a14 + + * aclocal.m4, configure.in: don't define variable nroff_device + + * src/Makefile, src/paths.h.in: define GNU_NROFF_DEVICE. + If nls != off, GNU_NROFF_DEVICE=" -Tlatin1" + else, GNU_NROFF_DEVICE=" -Tascii" + + * src/man.c, src/catman.c, src/security.c: #include <vfork.h> if + available. _exit() from child rather than exit(). + +Sun Dec 18 17:54:22 GMT 1994 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * src/util.c (basename): removed + lib/basename.c: extracted from src/util.c + configure.in: check for/replace basename function if necessary. + + * src/catman.c (add_arg): replace strdup() with xstrdup(). + + * soelim/soelim.*: renamed zsoelim/zsoelim.* + + * manual pages: reflect soelim - zsoelim name change. + +Fri Dec 16 12:17:48 GMT 1994 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * configure.in: correctly determine db header and required library + + * src/man.c (main, do_extern): pass manpath to whatis / apropos in + case man was called with -M or -m. + + * src/catman.c (main): interrogate $MANSECT for manual sections. + + * man/man1/catman.man1, man/man1/man.man1 ($MANSEC): replace with + the correct variable - $MANSECT. + + * src/man.c: new option (-7 or --ascii) passes page through minimal + latin1 to ascii translator. Only useful for nroff written in ascii + and formatted with -Tlatin1. + + * man/man1/man.man1: document it. + + * src/man.c (make_command): new routine to piece together man's + system() call. + +Thu Dec 15 13:52:42 GMT 1994 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * Version: 2.2a13 + + * src/catman.c (parse_for_sec): only supply man with -L locale + arguments if locale!=0x0 + + * src/Makefile: fix libmandb.a rule + +Wed Dec 14 22:49:59 GMT 1994 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * Version 2.2a12 + + * major package restructure with creation of new subdirectories + for xcat and the db routines. Allowed split up of single db source + file into some constituent function parts. + + * some Makefile restructuring to allow arbitrary ordering of + subdirectory builds. + + * ./dblib/*, ./xcat/*: new or moved from src/. + + * src/db_storage.c: moved and split up into ./dblib/*.c + src/mydbm.h, db_storage.h: moved into ./dblib + src/nls.h: moved to ./nls.h + src/xcat.c, src/xcat.l, src/Register: moved into ./xcat + +Wed Dec 14 00:17:11 GMT 1994 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * src/manconfig.h: #include <stddef.h> for size_t declaration. + + * src/checkmandirs.c (reset_db_time): remove use of strerror() in + debug line for systems without it. + + * src/manp.c: ensure no warnings given if quiet==1 + +Tue Dec 12 22:10:07 GMT 1994 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * src/xcat.l: allow duplicate message id's to exist in single C + source file, do not duplicate in the relative message file or + src/man_db-nls.h. Warn of such duplications as they may be in error. + +Tue Dec 12 19:05:21 GMT 1994 Markus Armbruster (armbru@pond.sub.org) + + * configure.in: fix definition of BINDIR when --prefix not used + + * src/man.c: replace "export foo=bar" with "foo=bar; export foo" in + system() command + + * soelim/Makefile: do not backup old soelim before install + + * lib/error.h: new + + * convert all error message to the form + error(int exitcode, int errno, char *message) + where exitcode!=0 causes exit(exitcode) after message and errno!=0 + causes the error text to be appended to the message. All messages + have "<program_name>: " prepended. + + * all C source: #include "../lib/error.h" and replace prognam with + program_name. + + * src/db_storage.c (ndbm_flopen, btree_flopen): generalised + (ndbm_trun_open, btree_trunc_open): removed + (ndbm_flclose): new + + * src/gripes.c: functions copied to relevant caller. + src/gripes.c, src/gripes.h: removed + +Sun Dec 11 15:16:42 GMT 1994 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * Version: 2.2a11 (not released) + + * src/man.c (main): putenv("LESSCHARSET=latin1"), remove from + less_options[] + + * src/lexgrog.l: translate \\[ ] (escaped space) to space, + accept '\" as *roff comment, + add a space at *roff end-of-line if necessary. + +Sat Dec 10 21:37:41 GMT 1994 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * man/man1/catman.man1: new + + * soelim/soelim.man1: new + + * src/man.c (display_cat_file): if (COMP_SRC), support straycats + with any supported compression extension or none at all. + src/man.c (make_cat_file): replace execle() with execve(). + + * src/catman.c: added ARG_MAX support and use execve() instead of + system(). This should now behave on systems with small execve() + argument capacity by batching more, but smaller, man jobs. + + * Makefile: `make all' now equates to `make nls=all' + +Thu Dec 8 00:03:12 GMT 1994 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * Version: 2.2a10 + + * src/catman.c: new utility. + src/man.c (main): minor changes wrt --catman flag. + + * src/paths.h.in (MAN_BIN): add definition for catman. + + * dvi/: provide dvi files of the packages' manual pages. + +Tue Dec 6 20:58:19 GMT 1994 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * man/man.man1: addition of EXAMPLES section. + + * src/man.c (do_prompt): change message. + src/man.c (need_to_rerun): make -u really force an update. + src/checkmandirs.c (reset_db_time): new function. + + * src/mydbm.h, src/db_storage.c (ndbm_flopen, ndbm_trunc_flopen): + provide file locking mechanism for ndbm. + src/db_storage.c (btree_trunc_flopen): renamed (btree_trunc_open), + add mode argument to open() call. + + * src/db_storage.c (make_content): add `static' to declaration of + (dash). + + * src/man.c (try_db_section): ensure db found file entry is + consistent with the physical file, if not, update the db entry + before proceeding. Cache consistency should be getting much better + in a wide variety of circumstances now. This check is not performed + for straycats. + +Tue Dec 6 12:05:57 GMT 1994 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * man/man.man1, man/mandb.man1: large changes. + + * aclocal.m4, configure.in (AC_PROG_GNU_ROFF): test for GNU nroff + src/man.c: Do not use col with GNU nroff -Tlatin1 as (a) it is not + needed: see grotty(1) and (b) it is not 8 bit clean. continuation + dashes should now reappear. + +Wed Nov 23 16:49:48 GMT 1994 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * src/check_mandirs.c (test_manfile): Provide better checking for + the existence of both foo.1 and foo.1.gz type problems. This should + catch any problems earlier and relieve the db interface code of the + job of identifying such problems. + + * src/man.c (manopt_to_env): cater for $MANOPT option arguments + that contain spaces (for -r). + src/man.c (man_getopt): revise, change duplicate option behaviour, + modify -[tTZ] handling and add option -D. + src/man/man1/man.man1: document. + + * src/man.c: create LESS_OPTS and LESS_PROMPT and move their + definitions to src/paths.h[.in]. + + * configure.in: append -s by default to whatever pager is found. + favour db.h and -ldb above gdbm.h and -lgdbm. + N.B. + db creates index.bt + gdbm creates index.db + ndbm creates index.dir and index.pag + +Wed Nov 23 16:46:59 GMT 1994 Zoltan Hidvegi (hzoli@cs.elte.hu) + + * src/man.c: changes relating to (less_options) and (prompt). Add + command line support for less' prompt: option -r. + + * man/man1/man.man1: document it. + +Sat Nov 19 20:19:39 GMT 1994 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * Version: 2.2a9 + + * src/mydbm.h, src/db_storage.c: incorporate completely new + database type: a binary tree method using the Berkeley db-1.85.1 + library. Currently experimental and is not used by default, it has + the potential of enhanced speed and easy maintenance as it allows + storage of identical keys, thus reducing the amount of work necessary + to store and lookup multi sectional manual pages such as manpath.1 + and manpath.5. During initial tests, the `walk through' algorithm, + used in apropos searches was 65% faster and the general database + open function is 100% faster when compared with gdbm-1.7.3. + + * src/whatis.c (apropos): #define-optimised for btree database type. + + * src/convert_name.c (convert_name): reorder actions to stop certain + catfiles ending up with a double compression extension, for + instance: foo.1.gz.gz. + + * src/Makefile, src/man.c: enable -DNO_DEFAULT_TBL_OR_COL as an + experiment. + +Fri Nov 18 21:00:47 GMT 1994 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * Version: 2.2a8 (not released) + + * configure.in (config_file, config_prefix): Fix behaviour. + + * src/*.[cl], soelim/soelim.l: + s,malloc,xmalloc,g + s,realloc,xrealloc,g + s,strdup,xstrdup,g + src/manconfig.h: remove redefinitions of malloc, realloc and strdup. + +Thu Nov 17 22:01:11 GMT 1994 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * src/lexgrog.l: changed catfile whatis extraction rules to be a + little more forgiving. Increased char array size from 1024 to 2048. + + * mkcatdirs: shell script to create relative cat dirs. + + * src/$PROGS: replaced all occurances of `optional_argument' with + `required_argument' in (long_options). + + * src/man.c, src/compression.c, src/straycats.c: ensure that a + failed child process is recognised and dealt with (normally exit(0)). + + * src/man.c (make_cat_file): removed need to filter-then-copy if not + setuid. [untested] + + * src/man.c, src/mandb.c (main): optional profiling support if + __profile__ defined. + + * configure.in (config_file, config_prefix): don't work unless + --prefix=<something> is a command line option, temporarily setting + them to /etc/man_db.config and /etc respectively. + +Wed Nov 16 20:34:54 GMT 1994 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * Version: 2.2a7 + + * src/man.c (format_and_display_file): Fix bug which caused + `man -l -' to fail. Produce sensible error message when -l file + is inaccessable. Allow compressed manual pages to be specified when + using -l (must have correct extension) + + * soelim/soelim.l (main): ensure (progname) is the basename of + argv[0] . + + * src/manpath.c (main): remove local declaration of (quiet). + add `--global' option. + +Wed Nov 16 20:29:20 GMT 1994 Markus Armbruster (armbru@pond.sub.org) + + * configure.in: if $prefix=/usr, put config file in /etc else + put it in $prefix/etc + src/manconfig.h (CONFIG_FILE): move to paths.h.in + + * src/nls.h (LC_MESSAGES): define as (LC_ALL) in all cases where + (LC_MESSAGES) is not defined in <locale.h> + + * src/lexgrog.l: #include "manconfig.h" to redefine strdup() to + xstrdup() + +Tue Nov 15 21:38:19 GMT 1994 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * src/manp.c (is_global_mandir): new + src/man.c (locate_page): use it instead of (global_catpath) + + * src/*.h: add suitable predicates to function prototype + declarations + moved all function declarations to header files + src/compression.h.in: renamed to comp_src.h.in + +Mon Nov 14 18:17:48 GMT 1994 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * Version: 2.2a6 + + * src/hashtable.c, src/hashtable.h (struct nlist): replaced + (union) member with (void *) and simplified. Modified users. + + * src/man.c (make_cat_file): fixed NULL ptr reference in call to + (execle) + src/man.c: determined and fixed memory leaks using Checker. + +Mon Nov 14 03:33:37 GMT 1994 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * src/db_storage.c (replace_if_necessary, split_data, + list_extensions): new + src/db_storage.c (free_content): replaced with (free_mandata_struct) + all callers changed + src/db_storage.c (split_content_keep, split_content_temp): replaced + with (split_content) + +Sun Nov 13 13:50:46 GMT 1994 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * src/nls.h: change of macros, add (NLS_INIT, EXIT_FUNC) + src/*.c: removed (NLS_CLOSE) macros, adjustments due to above + src/version.c (close_catalogue): new + configure.in (AC_HAVE_FUNCS): (atexit, on_exit) + + * getmandbver.c: removed + +Sat Nov 12 14:18:02 GMT 1994 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * src/security.h: new, contains security macros from src/manconfig.h + src/manconfig.h: removed security macros + src/security.c, src/security.h: replaced (SYSV_SAVED_IDS) with + (BROKEN_LINUX_SAVED_IDS) + + * src/paths.h.in, src/compression.h.in, configure.in: changed + compression defines + src/paths.h.in: defined (STD_SECTIONS), got rid of (MANPATH_MAIN) + src/*.c: removed all (MANPATH_MAIN) defines + configure.in: added (COMP_CAT) and (COMP_SRC) definitions + src/manconfig.h: removed (COMP_SRC) definition + + * All manual pages: Fixed to be compatible with native *roff + implementations having a request argument limit of 6 + + * src/db_storage.c (gripe_extract_data, gripe_corrupt_data): + new routines + + * All Makefiles: add (exec_prefix, mandir, bindir) where necessary + +Sat Nov 12 13:38:59 GMT 1994 Markus Armbruster (armbru@pond.sub.org) + + * soelim/Makefile (install): made more portable + + * src/manconfig.h: changes to (POSIX_SAVED_IDS) definition + + * src/man.c (main): removed unnecessary #ifdef conditions regading + (SECURE_MANUID) + +Sat Nov 12 13:24:17 GMT 1994 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * src/ult_src.c (ult_src): no longer follow an absolute .so include + src/ult_src.c (test_for_include): new + +Fri Nov 11 10:16:32 GMT 1994 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * src/man.c (manopt_to_env): generalised + + * src/man.c (do_extern): removed (gripe_alloc) call, + modified callers + src/manp.c: removed (gripe_alloc) calls, general tidy + src/gripes.c (gripe_alloc): removed + + * src/ult_src.c (ult_src): fixed loop when (buf) != NULL + changed absolute .so include actions + configure.in (AC_HAVE_FUNCS): removed (memmove) + + * src/mydbm.h (copy_datum): added references + src/db_storage.c (copy_datum): added function + Fixes for `native ndbm' data corruption by Markus Armbruster + + * src/Makefile: removed dbver.o as dependency of manpath + + * aclocal.m4 (AC_FUNC_SPRINTF_COUNT): new file and macro + configure.in: use it + acconfig.h: add (SPRINTF_CHARCOUNT) + src/check_mandirs (add_dir_entries): use it + src/whatis.c (display): use it + + * src/check_mandirs.c (test_mandirs): added a (free(exists)) + + * src/straycats.c (check_for_stray): Fixes regarding straycats + with no compression extension + +Fri Nov 11 00:29:15 GMT 1994 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * lib/xmalloc.c, lib/xstrdup.c, lib/error.c: replaced + lib/strdup.c: removed + lib/strstr.c: replaced + lib/strsep.c, lib/strspn.c, lib/strcspn.c, lib/ansidecl.h: new + configure.in (AC_REPLACE_FUNCS): with respect to above + + * src/check_mandirs.c (testmandirs): (free_hashtab) only if + necessary + +Thu Nov 10 11:07:52 GMT 1994 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * Version: 2.2a5 + + * src/man.c (usage, man_getopt, parse_roff_directive, ditroff): + add `-Z' option + man/man1/man.man1: document it + +Wed Nov 9 20:16:35 GMT 1994 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * configure.in (prefix, nroff, neqn, groff, soelim, CFLAGS, + LDFLAGS): portability changes. + Suggestions from Markus Armbruster <armbru@pond.sub.org> + gencat/Makefile (CFLAGS, LDFLAGS): definitions removed + + * soelim/Makefile (install): procedural changes + + * src/ult_src.c (ult_softlink): changes regarding S_ISLNK + + * src/manconfig.h: #define __inline + + * src/man.c, src/whatis.c, src/nls.c (LC_MESSAGES): define + as LC_ALL if necessary + +Tue Nov 8 23:17:22 GMT 1994 Wilf. (G.Wilford@ee.surrey.ac.uk) + + * src/version.c (ver): aesthetic changes + * src/man.c, src/whatis.c, src/manpath.c, src/mandb.c (usage, ver): + calling changes + + * src/version.h, src/update_db: removed + + * src/convert_name.c (conver_name): argument changes + src/man.c (format_and_display): caller of above changed + (need_to_rerun, locate_page): new functions to split (man) + (format_and_display_nosave): renamed to format_and_display_file + + * soelim/soelim.l (usage, ver): new functions + removal of NLS dependence + + * Version: 2.2a4 |