1866 lines
78 KiB
Markdown
1866 lines
78 KiB
Markdown
man-db 2.13.1 (2 May 2025)
|
|
==========================
|
|
|
|
Fixes:
|
|
|
|
* Fix various minor formatting issues in manual pages.
|
|
* Tolerate additional spaces in preprocessor strings.
|
|
* Fix check for generated source files in out-of-tree builds.
|
|
* Fix building with the `musl` C library.
|
|
|
|
Improvements:
|
|
|
|
* Recognize another Ukrainian translation of the `NAME` section.
|
|
* Increase the maximum size of the `NAME` section from 8192 to 16384 bytes.
|
|
|
|
man-db 2.13.0 (29 August 2024)
|
|
==============================
|
|
|
|
Compatibility notes:
|
|
|
|
* Drop support for versions of groff before 1.21 (released on 2010-12-31).
|
|
|
|
Fixes:
|
|
|
|
* Fix `man-suffixed-extension` test failure when not using the GNU
|
|
hierarchy organization.
|
|
* Fix `-Wmissing-variable-declarations` warnings with GCC 14.
|
|
* Fix `-Wflex-array-member-not-at-end` warning with GCC 14.
|
|
|
|
Improvements:
|
|
|
|
* Upgrade to Gnulib `stable-202407`.
|
|
* Support running the test suite against an installed package; this is
|
|
useful for systems such as Debian's autopkgtest framework.
|
|
|
|
man-db 2.12.1 (5 April 2024)
|
|
============================
|
|
|
|
Fixes:
|
|
|
|
* Fix excessive cleanup of `/var/cache/man` by `systemd-tmpfiles`.
|
|
|
|
Improvements:
|
|
|
|
* `man` matches the display width more accurately to the configured width.
|
|
* Upgrade to Gnulib `stable-202401`.
|
|
* Mention `groff`'s `pdf` device in `man(1)`.
|
|
* Speed up `seccomp` filter slightly.
|
|
* Document how to format pages using italic rather than underlined text.
|
|
|
|
Compatibility notes:
|
|
|
|
* Remove the obsolete `chconfig` tool for converting man-db configuration
|
|
files to the FHS. This transition took place almost 25 years ago (at
|
|
least in Debian), so it's not worth keeping it around now.
|
|
|
|
man-db 2.12.0 (23 September 2023)
|
|
=================================
|
|
|
|
Fixes:
|
|
|
|
* Fix some manual page portability issues with groff 1.23.0.
|
|
* Fix test failures when a working `iconv` is not available.
|
|
* Ensure that timestamps read from the database can go past the year 2038,
|
|
even on systems where this is not the default.
|
|
* Fix `manpath` not parsing `PATH` entries with trailing slash correctly
|
|
for guessing `MANPATH` entries.
|
|
* More accurately document the behaviour of passing file names as arguments
|
|
to `man` without the `-l`/`--local-file` option.
|
|
* Avoid duplicate cleanup of old cat pages by both `man-db.service` and
|
|
`systemd-tmpfiles-clean.service`.
|
|
|
|
Improvements:
|
|
|
|
* Update system call lists in `seccomp` sandbox from `systemd`.
|
|
* Upgrade to Gnulib `stable-202307`.
|
|
* Work around the Firebuild accelerator in `seccomp` sandbox: if this is in
|
|
use then we need to allow some socket-related system calls.
|
|
* `man -K` now deduplicates search results that point to the same page.
|
|
* Warn if `mandb` drops to `--user-db` mode due to running as the wrong
|
|
user.
|
|
* Change section title recommendations in `man(1)` to mention `STANDARDS`
|
|
rather than `CONFORMING TO`, in line with `man-pages(7)`.
|
|
* Add a `STANDARDS` section to `man(1)` itself.
|
|
* Document that `man -K` may suffer from false negatives as well as false
|
|
positives.
|
|
* Take advantage of newer `groff` facilities to implement `man
|
|
--no-hyphenation` and `man --no-justification`, if available.
|
|
* `man -f` and `man -k` now pass any `-r`/`--regex` or `-w`/`--wildcard`
|
|
options on to `whatis` and `apropos` respectively.
|
|
* Always pass a line length to `nroff`, even if we believe that it matches
|
|
the default.
|
|
* Allow disabling `groff` warnings via `man --warnings`, by prefixing a
|
|
warning name with `!`.
|
|
|
|
man-db 2.11.2 (8 January 2023)
|
|
==============================
|
|
|
|
Fixes:
|
|
|
|
* Fix compile and test failures when `troff` is not `groff`.
|
|
* Fix segfault in typical uses of `man` when `nroff` is not installed.
|
|
* Fix crash in `mandb` when processing stray cats.
|
|
|
|
Improvements:
|
|
|
|
* Check for stray cats even if no manual pages in a given manpath were
|
|
changed.
|
|
|
|
man-db 2.11.1 (15 November 2022)
|
|
================================
|
|
|
|
Build:
|
|
|
|
* Transfer Git repository to https://gitlab.com/man-db/man-db.
|
|
|
|
Fixes:
|
|
|
|
* SECURITY: Replace `$` characters in page names with `?` when constructing
|
|
`less` prompts.
|
|
* Silence error message when processing an empty manual page hierarchy with
|
|
a nonexistent cache directory.
|
|
* `man(1)` now sorts whatis references below real pages, even if the whatis
|
|
references are from a section with higher priority.
|
|
|
|
Improvements:
|
|
|
|
* Add section `3type` to the default section list just after `2`. This is
|
|
used by the Linux man-pages package.
|
|
* Recognize more Hungarian translations of the `NAME` section.
|
|
|
|
man-db 2.11.0 (15 October 2022)
|
|
===============================
|
|
|
|
Fixes:
|
|
|
|
* `mandb` now correctly records filters in the database if it uses cached
|
|
whatis information.
|
|
* Upgrade Gnulib, fixing syntax error on glibc systems with GCC 11.
|
|
* The `CATWIDTH` configuration file directive now overrides `MINCATWIDTH`
|
|
and `MAXCATWIDTH`.
|
|
* Database entries for links were often incorrectly stored as if they were
|
|
entries for the ultimate source of the page. They are now stored with
|
|
the correct type.
|
|
* Store links in the database using the section and extension of the link
|
|
rather than of the ultimate source file.
|
|
* Consider pages for adding to the database even if they seem to already
|
|
exist; this performance optimization is no longer needed due to caching,
|
|
and it produced inconsistent results in some unusual cases.
|
|
* `man` now runs any required preprocessors in the same order that `groff`
|
|
does, rather than trusting the order of filters in a page's preprocessor
|
|
string.
|
|
* Fix building on MinGW. (I haven't been able to test this; help from
|
|
MinGW experts would be welcome.)
|
|
|
|
Improvements:
|
|
|
|
* Add more recognized case variants for localized versions of the `NAME`
|
|
section.
|
|
* Maintain multi keys in sorted order, improving database reproducibility.
|
|
* Pick a more consistent name for the target of a whatis entry in the
|
|
database.
|
|
* Extend rules for when to replace one database entry with another,
|
|
producing more stable behaviour.
|
|
* Fully reorganize databases after writing them, allowing the reproduction
|
|
of bitwise-identical databases regardless of scan order (at least with
|
|
GDBM).
|
|
|
|
man-db 2.10.2 (17 March 2022)
|
|
=============================
|
|
|
|
Build:
|
|
|
|
* Regenerating man-db's build system now explicitly requires Automake >=
|
|
1.14. (This was already the case since at least man-db 2.10.0, but was
|
|
previously undocumented.)
|
|
|
|
Fixes:
|
|
|
|
* Make `man -H` sleep for a few seconds after starting the browser, since
|
|
it may background itself before loading files (Dr. Werner Fink).
|
|
* If an override directory is configured using `--with-override-dir`, it is
|
|
now applied more consistently when building the manpath, and whether a
|
|
page was found in an override directory is considered when sorting
|
|
candidates for display (Mihail Konev).
|
|
|
|
Improvements:
|
|
|
|
* Make the man-db manual build reproducible.
|
|
* Add some hardening options to the `systemd` service.
|
|
* `configure` now has a `--with-snapdir` option, for use on systems where
|
|
`snapd` is configured to use a directory other than `/snap`.
|
|
|
|
man-db 2.10.1 (10 February 2022)
|
|
================================
|
|
|
|
Fixes:
|
|
|
|
* Fix occasional `mandb-symlink-target-timestamp` test failure.
|
|
* Fix inadvertent reliance on a GCC extension that caused build failures
|
|
with Clang.
|
|
* Fix building without `iconv`.
|
|
* Fix building on Cygwin.
|
|
|
|
man-db 2.10.0 (4 February 2022)
|
|
===============================
|
|
|
|
Build:
|
|
|
|
* Move Git repository to GitLab (https://gitlab.com/cjwatson/man-db).
|
|
* Building man-db now requires a C99 compiler.
|
|
* Building man-db now requires Autoconf >= 2.64.
|
|
|
|
Fixes:
|
|
|
|
* Manpath deduplication no longer mishandles the case where another entry
|
|
in the manpath is a suffix of a candidate path to append.
|
|
* Fix potential crash in path searching if `getcwd` fails for reasons other
|
|
than running out of memory.
|
|
* Fix crash in `globbing` test tool if run with no non-option arguments.
|
|
* `lexgrog` now produces output in the user's locale.
|
|
* Downgrade "malformed .lf request" warning to a debug message and rephrase
|
|
it somewhat, since `.lf` requests can use `*roff` arithmetic expressions
|
|
and we can't reasonably parse those.
|
|
* Avoid modifying the database without changing its mtime, which had been
|
|
possible since 2.7.0 if `mandb`'s purge phase found work to do but the
|
|
main phase didn't, and which confused some backup systems into reporting
|
|
possible filesystem corruption.
|
|
* `man` no longer inadvertently modifies the `MANSECT` environment variable
|
|
before passing it on to its subprocesses.
|
|
* `mandb` now stores the mtime of link targets as the mtime of their
|
|
corresponding database entries, rather than sometimes storing the mtime
|
|
of the link instead.
|
|
* 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.
|
|
|
|
Improvements:
|
|
|
|
* Reduce overhead of `MAN_DISABLE_SECCOMP=1` compared to building without
|
|
`libseccomp`.
|
|
* Document `MAN_DISABLE_SECCOMP` and `PIPELINE_DEBUG` environment variables
|
|
in `man(1)`.
|
|
* Add `man-pages(7)` reference to `man(1)`.
|
|
* Recognize Arabic and Persian translations of the `NAME` section.
|
|
* Delay the `systemd` timer using `RandomizedDelaySec`, so that multiple
|
|
containers/VMs on the same host are less prone to running `mandb` all at
|
|
the same time.
|
|
* Significantly improve `mandb(8)` and `man -K` performance in the common
|
|
case where pages are of moderate size and compressed using `zlib`: `mandb
|
|
-c` goes from 344 seconds to 10 seconds on a test system.
|
|
|
|
man-db 2.9.4 (8 February 2021)
|
|
==============================
|
|
|
|
Improvements:
|
|
|
|
* Recognise Romanian translations of the NAME section.
|
|
* Treat `\[en]` (etc.) as another synonym for `\-` in NAME sections,
|
|
alongside the existing `\(en` (etc.).
|
|
|
|
Fixes:
|
|
|
|
* Make the `seccomp` sandbox work better with libcs such as `musl` (S.
|
|
Gilles).
|
|
* Make the `seccomp` sandbox allow `clock_gettime64` as well as
|
|
`clock_gettime` (S. Gilles).
|
|
|
|
man-db 2.9.3 (22 June 2020)
|
|
===========================
|
|
|
|
Fixes:
|
|
|
|
* Fix manual page translation infrastructure to compare `po4a` versions
|
|
with more than two components correctly.
|
|
* Avoid incorrect markup in `man(1)` with `po4a >= 0.58`.
|
|
|
|
man-db 2.9.2 (1 June 2020)
|
|
==========================
|
|
|
|
Fixes:
|
|
|
|
* Fix `man -X75-12` and `man -X100-12` to set the document font size (using
|
|
`-rS12`) as well as the device (using `-TX75-12` or `-TX100-12`).
|
|
* Fix incompatibility of `man -X` and friends with the `seccomp` sandbox.
|
|
|
|
Improvements:
|
|
|
|
* Add a bug tracker link to man-db's own manual pages.
|
|
* Add support for `zstd`-compressed manual pages, thanks to Bernhard
|
|
Rosenkränzer.
|
|
|
|
man-db 2.9.1 (25 February 2020)
|
|
===============================
|
|
|
|
Improvements:
|
|
|
|
* Drop `fdutimens` patch for GNU/Hurd; the bug it was working around was
|
|
fixed in glibc 2.28.
|
|
* Add `MANDB_MAP` entry mapping `/snap/man` to `/var/cache/man/snap`.
|
|
|
|
man-db 2.9.0 (23 October 2019)
|
|
==============================
|
|
|
|
Fixes:
|
|
|
|
* `man --recode` and `manconv` now adjust encoding declarations on the
|
|
first line of their input to refer to the new encoding.
|
|
* Fix comparison of candidate manual pages to correctly handle the case
|
|
where the language elements are the same and match the locale, but the
|
|
territory elements differ.
|
|
|
|
Improvements:
|
|
|
|
* Many typographical improvements to man-db's own manual pages, largely
|
|
thanks to Bjarni Ingi Gislason.
|
|
* Rewrite parts of `man(1)` to make it a more accessible introduction.
|
|
* If run with no arguments or only a section, `man` now suggests running
|
|
`man man`.
|
|
* `man` now understands the `<page>(<section>)` form on its command line,
|
|
so for example `man 'chmod(2)'` is now the same as `man 2 chmod`. While
|
|
this requires more quoting, it may also be more convenient when copying
|
|
and pasting cross-references to manual pages.
|
|
* `manconv` now guesses the input encoding based on the file name if it is
|
|
not explicitly specified.
|
|
* There is a new `man-recode` program. It fulfils a purpose similar to
|
|
`man --recode`, but has an interface designed for bulk conversion and so
|
|
can be much faster when used on a large number of pages.
|
|
|
|
Compatibility notes:
|
|
|
|
* Remove the ability to undefine `COMP_SRC` at build-time to disable
|
|
reading compressed manual pages. This was always only a
|
|
micro-optimisation, and it wasn't worth the extra code complexity. You
|
|
can still configure without any compressors (either by not having them
|
|
available at build time, or by configuring with `--with-gzip=` etc.) to
|
|
achieve much the same practical effect, although the test suite still
|
|
requires at least `gunzip`.
|
|
|
|
man-db 2.8.7 (26 August 2019)
|
|
=============================
|
|
|
|
Fixes:
|
|
|
|
* Further workarounds for ESET File Security: allow `sendmsg` when it is in
|
|
use.
|
|
* The `seccomp` sandbox now causes disallowed system calls to return
|
|
`EPERM` rather than raising `SIGSYS`, in the hope of being less
|
|
disruptive to preload hacks.
|
|
* Make `seccomp` sandbox allow `getrandom`, used by Hardened Malloc.
|
|
* `man` no longer saves cat pages if `--no-hyphenation` or
|
|
`--no-justification` is used.
|
|
* Move decompression code out of `libman`. This should really fix a link
|
|
failure using the Darwin linker (unsuccessfully attempted in 2.8.6), and
|
|
possibly on other platforms too.
|
|
* Pass the database file name around in function parameters, rather than
|
|
storing it in a global variable with an unresolved symbol from
|
|
`libmandb`. Like the previous item, this fixes a link failure using the
|
|
Darwin linker, and possibly on other platforms too.
|
|
* Return database entries in sorted order when using NDBM. (This is based
|
|
on a similar fix to the GDBM backend in man-db 2.4.2.)
|
|
|
|
Improvements:
|
|
|
|
* Recognise Esperanto, Tamil, and Ukrainian translations of the `NAME`
|
|
section.
|
|
|
|
man-db 2.8.6.1 (5 August 2019)
|
|
==============================
|
|
|
|
Fixes:
|
|
|
|
* Fix missing memory copies in `ult_src` that caused segfaults in `mandb`.
|
|
|
|
man-db 2.8.6 (3 August 2019)
|
|
============================
|
|
|
|
Fixes:
|
|
|
|
* If more than one of `../man`, `man`, `../share/man`, and `share/man`
|
|
exist relative to a directory on `$PATH`, then all of them are now added
|
|
to the automatically-determined manpath; previously, only the first was
|
|
considered.
|
|
* Remove arbitrary limit on manpath size.
|
|
* The `systemd` database maintenance service now runs `mandb` with the
|
|
`--quiet` option, avoiding excess log messages.
|
|
* Default to `--without-systemdsystemunitdir` and
|
|
`--without-systemdtmpfilesdir` on non-Linux systems.
|
|
* Fix failure to link `libman` using the Darwin linker.
|
|
* `apropos -w` now works when given a non-lower-case pattern.
|
|
|
|
Improvements:
|
|
|
|
* Convert most list and hash table code to Gnulib's container types: these
|
|
are more flexible and normally more concise than home-grown equivalents.
|
|
* There is a new configure option `--disable-manual`, which causes the
|
|
man-db manual not to be built or installed.
|
|
|
|
man-db 2.8.5 (5 January 2019)
|
|
=============================
|
|
|
|
Build:
|
|
|
|
* Building man-db now requires Autoconf >= 2.63 and Automake >= 1.11.2.
|
|
|
|
Fixes:
|
|
|
|
* Fix build with Berkeley DB.
|
|
* Fail to configure if `flex` is needed but missing.
|
|
* Fix the comment in the first line of the configuration file in the case
|
|
where `configure` was not given a `--with-config-file` option.
|
|
* Fix several resource and memory leaks.
|
|
* Fix handling of `\-` in the right-hand side of a `NAME` section.
|
|
* Work around Microsoft's proprietary "System Center Endpoint Protection"
|
|
antivirus program in the seccomp sandbox.
|
|
|
|
Improvements:
|
|
|
|
* Ship a `systemd` timer to perform daily database maintenance.
|
|
* Allow disabling the installation of the `systemd` `tmpfiles` snippet and
|
|
the `systemd` timer by configuring with `--with-systemdtmpfilesdir=no`
|
|
and `--with-systemdsystemunitdir=no` respectively.
|
|
|
|
man-db 2.8.4 (27 July 2018)
|
|
===========================
|
|
|
|
Fixes:
|
|
|
|
* Rely on decompressors reading from their standard input rather than
|
|
redundantly passing them the input file on their command line. This
|
|
works better with downstream AppArmor confinement of decompressors.
|
|
* Fix invalid syntax in `tmpfiles.d/man-db.conf` when configured with
|
|
`--disable-cache-owner`.
|
|
* Make `seccomp` sandbox allow `sched_getaffinity`, sometimes used by `xz`.
|
|
* 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. Note that this change means
|
|
that `man -l` will never use an external formatter (which was never
|
|
documented behaviour and was surely a bad idea).
|
|
* Make `seccomp` sandbox allow some shared memory operations across the
|
|
board rather than just when ESET File Security is in use; the Astrill VPN
|
|
seems to require something similar, and there are doubtless other such
|
|
preload hacks.
|
|
* Some versions of ESET File Security call `msgget` and `msgsnd`; if this
|
|
program is in use, then allow those.
|
|
|
|
man-db 2.8.3 (5 April 2018)
|
|
===========================
|
|
|
|
Fixes:
|
|
|
|
* Make `seccomp` sandbox allow `madvise`, since that's used by `lbzip2`.
|
|
* Make `seccomp` sandbox allow `kill` and `tgkill` outright, since `groff`
|
|
uses `kill` to pass on signals to its child processes.
|
|
* Make `seccomp` sandbox allow sibling architectures on
|
|
`x86`/`x86_64`/`x32`, since people sometimes mix and match architectures
|
|
there for performance reasons.
|
|
* Fix version check in locale macro loading to tolerate `groff` release
|
|
candidates.
|
|
* `man` now only changes working directory in child processes, so never
|
|
fails due to being unable to change back to its original working
|
|
directory.
|
|
* `accessdb`, `apropos`, and `lexgrog` no longer emit spurious `gettext`
|
|
headers in their `--help` output when localised.
|
|
|
|
man-db 2.8.2 (28 February 2018)
|
|
===============================
|
|
|
|
Fixes:
|
|
|
|
* Make `seccomp` sandbox allow `kill` and `tgkill` when the signal is
|
|
directed at the current process or one of its threads; this is needed by
|
|
`xz`.
|
|
* Make `seccomp` sandbox allow `ioctl(fd, TIOCGWINSZ)`, since that's used
|
|
by `musl`.
|
|
* Work around the proprietary "ESET File Security" antivirus program in
|
|
`seccomp` sandbox: if this is in use then we need to allow some
|
|
socket-related system calls.
|
|
* Work around the `snoopy` `execve()` wrapper and logger in `seccomp`
|
|
sandbox: if this is in use then we need to allow some socket-related
|
|
system calls.
|
|
* Interpret `EFAULT` from `seccomp_load` as meaning that `seccomp` is
|
|
unavailable, since this can be returned by some versions of `qemu-user`.
|
|
|
|
man-db 2.8.1 (9 February 2018)
|
|
==============================
|
|
|
|
Fixes:
|
|
|
|
* Fix `seccomp` sandbox build on Linux/POWER.
|
|
* Fix `manconv` execution under `seccomp` when `man` is installed setuid.
|
|
* Make `seccomp` sandbox allow `mremap` (used by `iconv`, for example).
|
|
|
|
Improvements:
|
|
|
|
* `configure` now has a `--without-libseccomp` option to disable the use of
|
|
`seccomp` even if the library is available.
|
|
|
|
man-db 2.8.0 (4 February 2018)
|
|
==============================
|
|
|
|
Fixes:
|
|
|
|
* Fix locale macro loading for Chinese to load the macro file corresponding
|
|
to just the language part of the user's locale.
|
|
* Honour `--enable-cache-owner` in generated `systemd` `tmpfiles` snippet
|
|
rather than hardcoding `man`.
|
|
* If `man` adds prefixes to a page to handle such things as disabling
|
|
hyphenation, then take account of those when looking for a preprocessor
|
|
line at the start of the page.
|
|
* Fix a segfault in `man -D --help`.
|
|
|
|
Improvements:
|
|
|
|
* Treat `\(en` as another synonym for `\-` in NAME sections.
|
|
* Confine most subprocesses that handle untrusted data using `seccomp`.
|
|
This mainly deals with subprocesses that perform encoding conversions,
|
|
(de)compressors, `groff` programs, and a few other odds and ends.
|
|
`groff` programs use a slightly more permissive filter since they need to
|
|
create temporary files, so additional path-based confinement (e.g. using
|
|
AppArmor) is still useful.
|
|
|
|
If this goes wrong, then `MAN_DISABLE_SECCOMP=1` can be set in the
|
|
environment to disable it, but please report any such problem as a bug.
|
|
|
|
* `man` now falls back to `cat` if the compile-time default pager is not
|
|
executable.
|
|
|
|
man-db 2.7.6.1 (12 December 2016)
|
|
=================================
|
|
|
|
Fixes:
|
|
|
|
* Don't `chmod` `CACHEDIR.TAG` if it doesn't exist.
|
|
* Correct installation of Swedish manual pages.
|
|
|
|
man-db 2.7.6 (11 December 2016)
|
|
===============================
|
|
|
|
Fixes:
|
|
|
|
* Fix build warnings with Perl 5.22.
|
|
* Document that `man -K` searches page source, not rendered text.
|
|
* Fix a long-standing bug in man-db's internal cleanup stack mechanism: if
|
|
a cleanup function was pushed unexpectedly between a push/pop pair, then
|
|
popping the stack would remove the wrong cleanup function and chaos could
|
|
ensue. Avoid this by being more precise about which cleanup function
|
|
should be popped.
|
|
* SECURITY: Eliminate dangerous setgid-root directories. In the default
|
|
configuration, cache files and directories are now owned by `man:man`
|
|
rather than `man:root`; `man` and `mandb` are now 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 that caused my
|
|
predecessor to make directories setgid `root`, 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.
|
|
|
|
Maintainers of distribution packages should take care to review their
|
|
installation rules in light of this change.
|
|
|
|
As far as I know this has no CVE ID, but it is described
|
|
[here](https://www.halfdog.net/Security/2015/SetgidDirectoryPrivilegeEscalation/).
|
|
|
|
* Fix manual page translation infrastructure to render tables correctly
|
|
with `po4a` 0.47.
|
|
|
|
Improvements:
|
|
|
|
* `man` now understands the `<page>.<section>` form on its command line, so
|
|
for example `man chmod.2` is now the same as `man 2 chmod`. (Contributed
|
|
by Mihail Konev.)
|
|
* The owner of cache files is now configured separately from whether `man`
|
|
and `mandb` are installed setuid, using the `--enable-cache-owner[=USER]`
|
|
option.
|
|
|
|
man-db 2.7.5 (6 November 2015)
|
|
==============================
|
|
|
|
Fixes:
|
|
|
|
* Adjust line number when inserting extra roff input.
|
|
* Disable roff input insertion with `--recode`.
|
|
* Build text manual with `LC_ALL=C`, to help reproducible builds.
|
|
|
|
man-db 2.7.4 (8 October 2015)
|
|
=============================
|
|
|
|
Fixes:
|
|
|
|
* Fix crash when eliminating manpath duplicates if canonicalising a manpath
|
|
entry fails.
|
|
* Fix a build system bug that sometimes caused substitutions in manual
|
|
pages to be left unexpanded.
|
|
* `man` exits with status 3 rather than 0 if its formatting command exits
|
|
non-zero, even if its display command exits zero.
|
|
* `man` honours `MANWIDTH` in conjunction with the `-Z` option, to make it
|
|
easier to diagnose warnings in manual pages.
|
|
|
|
man-db 2.7.3 (9 September 2015)
|
|
===============================
|
|
|
|
Fixes:
|
|
|
|
* Tools that consider the terminal line length now try the `TIOCGWINSZ`
|
|
ioctl on `/dev/tty` as well as standard input/output.
|
|
* `mandb` does a better job of coping with index files having incorrect
|
|
ownership.
|
|
* Squeeze blank lines internally rather than relying on the pager
|
|
supporting the `-s` option.
|
|
* Fix use-after-free in `ult_src`.
|
|
* Fix crash when running from a missing and unreadable current directory,
|
|
such as an orphaned subdirectory of `/proc`.
|
|
* Restore the ability to use `man -a` noninteractively.
|
|
|
|
man-db 2.7.2 (16 August 2015)
|
|
=============================
|
|
|
|
Fixes:
|
|
|
|
* `man -k` and `man -f` now pass any provided `-l` option through to the
|
|
underlying `apropos`/`whatis` programs.
|
|
* `apropos` and `whatis` no longer truncate names if long output was
|
|
requested.
|
|
* The database handle is no longer stored in a global variable, fixing a
|
|
class of possible double-close bugs.
|
|
|
|
man-db 2.7.1 (7 November 2014)
|
|
==============================
|
|
|
|
Fixes:
|
|
|
|
* Various portability fixes for Solaris, contributed by Peter Bray.
|
|
* `man` now runs correctly when its current working directory has been
|
|
deleted. (As a result of this fix, man-db now requires `libpipeline >=
|
|
1.4.0`.)
|
|
* `man -a` sends its prompts to `/dev/tty` rather than to `stderr`, and
|
|
likewise reads replies from `/dev/tty` rather than from `stdin`.
|
|
|
|
man-db 2.7.0.2 (28 September 2014)
|
|
==================================
|
|
|
|
Fixes:
|
|
|
|
* Be more careful to avoid using or double-closing closed database handles.
|
|
Fixes test suite failures on some systems.
|
|
* Patch the `fdutimens` function imported from Gnulib to work around a
|
|
libc bug in GNU/Hurd.
|
|
|
|
man-db 2.7.0.1 (24 September 2014)
|
|
==================================
|
|
|
|
Fixes:
|
|
|
|
* Fix test suite in the case where the system supports high-precision
|
|
timestamps but the file system containing the build directory does not.
|
|
|
|
man-db 2.7.0 (22 September 2014)
|
|
================================
|
|
|
|
Upgrading from previous versions:
|
|
|
|
* For the first time since version 2.4.0, the database format has changed
|
|
slightly, so you will need to run `mandb --create` after installing the
|
|
new version to rebuild your databases from scratch. (Distribution
|
|
packages should do this automatically for system databases.)
|
|
|
|
Fixes:
|
|
|
|
* `lexgrog` now filters terminal escape sequences out of cat pages before
|
|
trying to parse them.
|
|
* Tools that consider the terminal line length now prioritise the `COLUMNS`
|
|
environment variable above the `TIOCGWINSZ` ioctl.
|
|
* Manpath elements are no longer canonicalised before being inserted into
|
|
the search path; this caused the use of incorrect catpaths in some cases.
|
|
This was broken by the `LANGUAGE`-handling fixes in 2.5.4.
|
|
|
|
Improvements:
|
|
|
|
* Ship a `systemd` `tmpfiles` snippet to clean up old cat files after a
|
|
week.
|
|
* The modification time of manual databases is now simply stored in the
|
|
mtime of the database files themselves, rather than using a special row.
|
|
This makes databases reproducible between otherwise-identical
|
|
installations, as long as the underlying database has predictable
|
|
behaviour. As a bonus, man-db now uses high-precision timestamps to
|
|
determine whether it needs to update databases.
|
|
* Timestamps of manual pages are also now stored in the database with high
|
|
precision and compared accordingly.
|
|
* Files are now ordered by first physical extent before reading them, for
|
|
substantial performance improvements in operations such as `mandb` and
|
|
`man -K`.
|
|
* `man -H` shows a better error message if no browser is configured.
|
|
* `zsoelim` is now installed in `$pkglibexecdir`, to avoid clashes with
|
|
other packages.
|
|
|
|
man-db 2.6.7.1 (10 April 2014)
|
|
==============================
|
|
|
|
Fixes:
|
|
|
|
* Remove test suite dependency on `realpath(1)`.
|
|
|
|
man-db 2.6.7 (10 April 2014)
|
|
============================
|
|
|
|
Fixes:
|
|
|
|
* Fix a test failure when configured with `--enable-undoc`.
|
|
* Run the pager in `man`'s original working directory rather than in the
|
|
manual hierarchy. (As a result of this fix, man-db now requires
|
|
libpipeline >= 1.3.0.)
|
|
* `mandb` only creates a cache directory tag if the catpath is different
|
|
from the manpath, since it should only be created in directories that
|
|
consist entirely of cached information.
|
|
|
|
man-db 2.6.6 (23 January 2014)
|
|
==============================
|
|
|
|
man-db is now revision-controlled using git (https://git-scm.com/). See
|
|
`docs/HACKING` for the location of the repository.
|
|
|
|
Fixes:
|
|
|
|
* `apropos`'s `--and` option now works again; it was broken by the
|
|
optimisations in 2.6.2.
|
|
* Restore compatibility with Automake 1.10.
|
|
* Improve support for translation of common elements of help messages.
|
|
* Don't issue error messages when the database refers to a page that no
|
|
longer exists.
|
|
* Pass macro and hyphenation language tags to `groff` again (broken in
|
|
2.6.5).
|
|
|
|
Improvements:
|
|
|
|
* `./configure --with-override-dir=OVERRIDE` arranges to look for manual
|
|
pages in `DIR/OVERRIDE` before each path element `DIR`.
|
|
|
|
man-db 2.6.5 (27 June 2013)
|
|
===========================
|
|
|
|
Fixes:
|
|
|
|
* `man`'s `--warnings` option works again on systems with versions of
|
|
`groff` that support it (broken in 2.6.4).
|
|
* `man` automatically falls back to `C.UTF-8` and then `en_US.UTF-8` if
|
|
trying to find a UTF-8 locale on a system without
|
|
`/usr/share/i18n/SUPPORTED`.
|
|
|
|
man-db 2.6.4 (23 June 2013)
|
|
===========================
|
|
|
|
Fixes:
|
|
|
|
* `man(1)` and `catman(8)` now document the default section list set at
|
|
configure time.
|
|
* Build fixes for Automake 1.13.
|
|
* man-db 2.6.0 arranged to search the full manpath when expanding `.so`
|
|
directives in manual pages (so that `.so name.1` works as well as `.so
|
|
man1/name.1`), but this incorrectly did not take effect for manual pages
|
|
that consist only of a `.so` directive. This is now fixed.
|
|
|
|
Improvements:
|
|
|
|
* The `MANLESS` environment variable is now treated as if it were a default
|
|
value for the `-r` option to `man`: occurrences of the text `$MAN_PN` are
|
|
expanded, and explicitly using the `-r` option overrides the default.
|
|
* The (unfortunately still hardcoded) maximum length for paths to manual
|
|
page hierarchies in the configuration file is now 511 characters rather
|
|
than 49.
|
|
* `MANPATH` entries now undergo `glob(7)`-style wildcard expansion,
|
|
allowing entries such as `/opt/*/man`.
|
|
|
|
man-db 2.6.3 (17 September 2012)
|
|
================================
|
|
|
|
Fixes:
|
|
|
|
* Build fixes for glibc 2.16 and Automake 1.12.
|
|
|
|
man-db 2.6.2 (18 June 2012)
|
|
===========================
|
|
|
|
Fixes:
|
|
|
|
* `apropos` prints an error message and returns non-zero when it finds no
|
|
matches. (Regression introduced in 2.5.1.)
|
|
* The presence of a 64-bit GDBM database on the manpath no longer causes a
|
|
32-bit `man` process to exit with a fatal error.
|
|
|
|
Improvements:
|
|
|
|
* `apropos` is much faster when run with many arguments.
|
|
* `whatis` may be given the full path to an executable as an argument, in
|
|
which case it will look up the base name of that executable in the
|
|
appropriate parts of the manpath.
|
|
|
|
man-db 2.6.1 (14 February 2012)
|
|
===============================
|
|
|
|
Fixes:
|
|
|
|
* `--with-db=db*` and `--with-db=ndbm` compile again.
|
|
* Translated manual pages are no longer displayed starting with a spurious
|
|
blank line.
|
|
* `straycats` tries to ensure that `col` is invoked with `LC_CTYPE` set to
|
|
a UTF-8 locale.
|
|
* Fix double-free in `mandb` when encountering a symlink outside the manual
|
|
hierarchy, thanks to Peter Schiffer.
|
|
|
|
Improvements:
|
|
|
|
* `mandb` creates a cache directory tag, per the [Cache Directory Tagging
|
|
Standard](http://www.brynosaurus.com/cachedir/).
|
|
* Add support for Lzip-compressed manual pages, thanks to Matias A. Fonzo.
|
|
* Running `man -w` (with a new `--path` alias) without a name now prints
|
|
the manpath, for compatibility with other `man` implementations. The
|
|
`vim` viewdoc plugin makes use of this.
|
|
|
|
man-db 2.6.0.2 (13 April 2011)
|
|
==============================
|
|
|
|
Fixes:
|
|
|
|
* Fix a segfault when scanning links to empty pages.
|
|
* Once we've seen at least one record in a page's `NAME` section, ignore
|
|
any further records that don't include a `whatis` description, as they
|
|
tend to be noise.
|
|
|
|
man-db 2.6.0.1 (10 April 2011)
|
|
==============================
|
|
|
|
Fixes:
|
|
|
|
* Ensure that the target of a symlink or `.so` chain is always recorded as
|
|
a real page.
|
|
* Read a user-specified configuration file even if `HOME` is unset.
|
|
|
|
man-db 2.6.0 (9 April 2011)
|
|
===========================
|
|
|
|
Fixes:
|
|
|
|
* Fix build with versions of GNU `ld` that default to
|
|
`--no-copy-dt-needed-entries`.
|
|
* Fix failure to display manual pages in some encodings when installed
|
|
setuid.
|
|
* Wrap long table cells in `man(1)`, fixing test failures with `groff`
|
|
1.21.
|
|
* If an explicit section is passed to `man`, then pages that match that
|
|
section exactly will be preferred over pages that only have that section
|
|
as a prefix.
|
|
* Fix a segfault when `man -K` tries to display certain pages.
|
|
* Fix a segfault in some situations when processes are killed by `SIGHUP`,
|
|
`SIGINT`, or `SIGTERM`.
|
|
|
|
Improvements:
|
|
|
|
* As promised in the release notes for man-db 2.5.8, man-db no longer ships
|
|
its own copy of
|
|
[libpipeline](https://libpipeline.gitlab.io/libpipeline/). You must
|
|
build and install that library separately.
|
|
* Search the full manpath when expanding `.so` directives in manual pages.
|
|
As part of this, `.so name.1` should now work as well as `.so
|
|
man1/name.1`.
|
|
* `lexgrog` handles roff named glyphs and `perldoc` strings in `NAME`
|
|
sections.
|
|
* `man` no longer starts a pager if standard output is not a tty.
|
|
* The `-s` option to `whatis` and `apropos` now takes a colon- or
|
|
comma-separated list of sections, similar to `man -S`.
|
|
* `mandb` error output is neater when `stderr` is not a terminal.
|
|
* Add basic support for the implementation of `nroff`/`troff` in the
|
|
Heirloom Documentation Tools. Title lengths are not properly set as yet,
|
|
and many features are untested.
|
|
* `mandb` removes `cat*` and NLS subdirectories of `cat` directories whose
|
|
corresponding `man` directories no longer exist.
|
|
* `mandb` forces `SIGPIPE` back to its default disposition on startup, to
|
|
avoid noisy output in case it was started in a context where `SIGPIPE`
|
|
was ignored.
|
|
* `SECTION` entries in a user configuration file now override those in the
|
|
system configuration file, rather than appending to them.
|
|
* The default `less` prompt now includes "(press h for help or q to quit)"
|
|
to help novices find their way around.
|
|
* man-db may now be built to use Berkeley DB version 5 (`--with-db=db5`).
|
|
|
|
man-db 2.5.9 (17 November 2010)
|
|
===============================
|
|
|
|
Fixes:
|
|
|
|
* Fix test failures on some systems. A change made in 2.5.8 was overly
|
|
sensitive to directory ordering.
|
|
* Configuring with `--disable-nls` works again.
|
|
|
|
man-db 2.5.8 (15 November 2010)
|
|
===============================
|
|
|
|
Fixes:
|
|
|
|
* Fix assertion failure on `man -l` with an uncompressed page and any of
|
|
`--no-hyphenation`, `--no-justification`, or a non-English page.
|
|
* 2.5.7 introduced a regression when running `catman` in some locales, most
|
|
notably in the C locale: while converting the output to UTF-8, `iconv`
|
|
was run after the compressor rather than before it. This release fixes
|
|
that.
|
|
|
|
Improvements:
|
|
|
|
* Add support for XZ-compressed manual pages, thanks to Darren Salt.
|
|
* Try underscore-separated subpages as well as hyphen-separated ones,
|
|
thanks to Tanguy Ortolo.
|
|
* Build `libman` and `libmandb` as shared libraries, reducing installed
|
|
footprint by about 200K (at least on GNU/Linux).
|
|
* `libintl` is no longer shipped with man-db. If your system does not
|
|
already have GNU `libintl` installed and you want man-db's messages to be
|
|
translated, then please install [GNU
|
|
libintl](https://www.gnu.org/software/gettext/) separately.
|
|
* Warnings about unrecognised locales are now suppressed if the
|
|
`DPKG_RUNNING_VERSION` environment variable is set (i.e. man-db is
|
|
running within a Debian package's maintainer script), since the system
|
|
locales are often out of sync with the C library in that context. Thanks
|
|
to the Debian Perl maintainers for the idea.
|
|
* Allow building with an external
|
|
[libpipeline](https://libpipeline.gitlab.io/libpipeline/), which has been
|
|
split out from man-db. This is a transitional measure: a future version
|
|
of man-db will stop shipping its own copy of `libpipeline`.
|
|
* `mandb` should no longer repeatedly rescan manual page hierarchies when a
|
|
`whatis` entry turns into a broken link.
|
|
|
|
man-db 2.5.7 (16 February 2010)
|
|
===============================
|
|
|
|
Fixes:
|
|
|
|
* If a subprocess exits before `man` manages to read all the output from
|
|
it, it now drains the output file descriptor rather than immediately
|
|
discarding it.
|
|
* If `/usr/share/i18n/SUPPORTED` is available, `man` attempts to use it to
|
|
ensure that `LC_CTYPE` is set to an appropriate locale for the selected
|
|
character set when invoking `col`. This fixes `LANG=C man -E UTF-8`, as
|
|
used by lintian.
|
|
* Don't run tests if cross-compiling.
|
|
* Fix possible `mandb` crash when `MAN_MUST_CREATE` is unset.
|
|
|
|
Improvements:
|
|
|
|
* `man` can now tell `nroff` to disable justification if the
|
|
`--no-justification` option is used.
|
|
* If the full path to an executable is given as an argument, `man` will 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.
|
|
* In the GNU manual hierarchy layout, search `man<sec><ext>` directories as
|
|
well as just `man<sec>` (e.g. `/usr/share/man/man3p` as well as
|
|
`/usr/share/man/man3`).
|
|
* By request, `man` now prefers getting a page from the best manual section
|
|
over getting a page in the correct language.
|
|
* All programs now support a `MAN_DEBUG` environment variable which can be
|
|
used in place of the `-d`/`--debug` option. This is useful in some
|
|
situations where a program is being called deep in a process tree.
|
|
* man-db now builds with heirloom-doctools, thanks to Diego Pettenò of
|
|
Gentoo.
|
|
* Add support for emulating `pipe()` with `socketpair()`, which is faster
|
|
on some systems; thanks to Werner Fink of SUSE.
|
|
* Cat pages are now always saved in UTF-8, and converted to the proper
|
|
encoding at display time, which means that cat pages can now be saved
|
|
regardless of locale. Note that a consequence of this is that cat pages
|
|
now include formatting information (e.g. overstriking) and need to be
|
|
run through `col(1)` before display.
|
|
|
|
man-db 2.5.6 (26 August 2009)
|
|
=============================
|
|
|
|
Fixes:
|
|
|
|
* Exact-section database lookups were incorrectly returning all database
|
|
entries whose section names were prefixes of the requested section name.
|
|
In some cases this could confuse `mandb` into never believing that the
|
|
database was up to date.
|
|
* Fix handling of pages with comma-separated names ("foo, bar, baz") in
|
|
their `NAME` sections, broken by a change in 2.5.0 (!) to ignore manual
|
|
page names containing spaces.
|
|
* Fixed a buffer overflow in the pipeline library's line-reading functions.
|
|
I don't believe this to be exploitable: at worst we might believe that
|
|
there's some garbage at the end of manual pages (whose contents are
|
|
untrusted anyway) and this bug typically resulted in a failed assertion
|
|
the next time anything tried to read a line.
|
|
* Plugged two substantial memory leaks in the pipeline library.
|
|
* `whatis` and `apropos` only display any given manual page, or pointers to
|
|
it, once.
|
|
* `man` now sets `less(1)`'s environment up correctly for manual pages
|
|
encoded in CP1251.
|
|
* `manconv` no longer confuses situations such as "this UTF-8 character is
|
|
not representable in the target encoding" with "this text is not in
|
|
UTF-8".
|
|
|
|
Improvements:
|
|
|
|
* The default configuration file now includes section 0, used on some
|
|
systems to document C library header files.
|
|
* `make check` now passes in the presence of a UTF-8-aware `col`, such as
|
|
that in util-linux-ng.
|
|
* The `man -K` option is now supported to search the full text of all
|
|
manual pages. This was inspired by a similar option in the other `man`
|
|
package (currently at version 1.6f) currently maintained by Federico
|
|
Lucifredi and formerly by Andries Brouwer, but I took advantage of
|
|
man-db's pipeline library to implement it entirely in-process, without
|
|
having to start a separate `grep` process for every manual page. In my
|
|
tests with fairly typical searches across variously all manual pages or
|
|
just one section, man-db's implementation ran between 3 and 10 times
|
|
faster.
|
|
* Database directories are now only created when there are corresponding
|
|
manual page directories, not just because they're mentioned in the
|
|
configuration file.
|
|
* By default, `man` will now try to interpret pairs of manual page names
|
|
given on the command line as equivalent to a single manual page name
|
|
containing a hyphen (e.g. `man foo bar` => `foo-bar(1)`). This supports
|
|
the common pattern of programs that implement a number of subcommands,
|
|
allowing them to provide manual pages for each that can be accessed using
|
|
similar syntax as would be used to invoke the subcommands themselves.
|
|
Suggested by H. Peter Anvin, Federico Lucifredi, and others on the git
|
|
mailing list.
|
|
* The build process is now quieter by default. Use `./configure
|
|
--disable-silent-rules` or `make V=0` if you don't like this or your
|
|
`make(1)` doesn't support the non-standard extension required.
|
|
* `make install` now installs the manual.
|
|
* `manconv` understands a wider range of Emacs-style coding tags.
|
|
* Recommendations to change `MAN_DB_CREATES`, `MAN_DB_UPDATES`, and
|
|
`MAN_CATS` `#define` options in `manconfig.h` have been replaced by new
|
|
`configure` options `--enable-automatic-create`,
|
|
`--disable-automatic-update`, and `--disable-cats` respectively. Note
|
|
that automatic user database creation is now off by default, as it is
|
|
often too slow for the usefulness it adds; use
|
|
`--enable-automatic-create` to enable it.
|
|
|
|
man-db 2.5.5 (14 March 2009)
|
|
============================
|
|
|
|
Fixes:
|
|
|
|
* Pages that declare a non-default encoding in their preprocessor lines are
|
|
now handled correctly.
|
|
* Fix an uninitialised variable when sorting manual page candidates that
|
|
could lead to excessive memory allocation and possible crashes.
|
|
|
|
Improvements:
|
|
|
|
* man-db's `make check` now tests that all its own manual pages format
|
|
without errors or warnings from `groff`, to ensure a better-quality
|
|
release.
|
|
|
|
man-db 2.5.4 (24 February 2009)
|
|
===============================
|
|
|
|
Fixes:
|
|
|
|
* Build fixes for systems without GNU Make, and for systems without
|
|
`gettext`; this successfully covers at least FreeBSD.
|
|
* The `distclean` target now works if `po4a` isn't installed.
|
|
* Exit as soon as possible if database writes return `ENOSPC`.
|
|
* `lexgrog` now stops on any unrecognised roff request, rather than
|
|
continuing and often littering the database with garbage.
|
|
* `man` no longer requires both standard input and standard output to be
|
|
terminals in order to use the terminal line length. The line length from
|
|
standard output is preferred if available.
|
|
* The manpath was built completely wrongly when multiple entries were
|
|
present in `LANGUAGE`: duplicates were handled strangely, and languages
|
|
were effectively iterated in reverse order. It should be rather more
|
|
sensible now.
|
|
|
|
Improvements:
|
|
|
|
* The `MAN_KEEP_STDERR` environment variable can now be used to override
|
|
`man`'s default of discarding `stderr` when `stdout` is a terminal.
|
|
* Handling of terminal widths for cat pages is now configurable, using the
|
|
`MINCATWIDTH`, `MAXCATWIDTH`, and `CATWIDTH` configuration file
|
|
directives.
|
|
* `man -a` now detects duplicate manual page candidates more reliably, and
|
|
sorts them better.
|
|
* Belarusian, Estonian, Greek, Latvian, Lithuanian, Macedonian, Romanian,
|
|
Slovenian, and Ukrainian pages are now supported.
|
|
* `man` can now search for pages using regular expressions (with `--regex`)
|
|
or shell wildcards (with `--wildcard`). By default this searches both
|
|
page names and descriptions, like `apropos`, but if the `--names-only`
|
|
option is used then it searches page names only, like `whatis`.
|
|
* `man` can now tell `nroff` to disable hyphenation if the
|
|
`--no-hyphenation` option is used.
|
|
* man-db already searched for manual pages in `../man` and `man`
|
|
directories relative to each `$PATH` component; it now searches in
|
|
`../share/man` and `share/man` directories too.
|
|
* Groff 1.20 was recently released, including the `preconv` preprocessor.
|
|
Although man-db has supported `preconv` to some extent since 2.4.4,
|
|
man-db's `configure` now detects its presence and infers that `groff`
|
|
supports Unicode input using it; `man` also now takes slightly better
|
|
advantage of `preconv` than before.
|
|
* Per-locale `groff` macros are now loaded if possible, allowing us to take
|
|
advantage of such things as localised versions of predefined strings and
|
|
language-aware hyphenation. This only works with Groff 1.20.2 or better
|
|
(not yet released), since earlier versions did not allow us to suppress
|
|
warnings in the event that the appropriate macro file is not available.
|
|
|
|
man-db 2.5.3 (17 November 2008)
|
|
===============================
|
|
|
|
Fixes:
|
|
|
|
* Cleaned up a number of possible crashes, memory leaks, and missing error
|
|
checks found by the Coverity Scan project.
|
|
* Fix build if `MAN_CATS` is undefined.
|
|
* If the `LINGUAS` environment variable is set while running `configure`,
|
|
it now controls building and installation of localised manual pages as
|
|
well as program translations.
|
|
* The `LANGUAGE` environment variable is now tokenised properly, rather
|
|
than only taking the first two characters of each element.
|
|
* Fix build if `--disable-nls` is used or `iconv` is not available.
|
|
* `man` now correctly propagates the exit code of `whatis` or `apropos`
|
|
when called with the `-f` or `-k` option respectively.
|
|
|
|
Improvements:
|
|
|
|
* A number of inconsistencies and readability problems with man-db's own
|
|
manual pages have been cleaned up, thanks mainly to Yuri Kozlov.
|
|
* Reduce the number of warnings emitted when using an unrecognised locale.
|
|
* `manconv` and `zsoelim` are now called internally rather than by
|
|
executing external programs, to improve performance.
|
|
* man-db now uses GDBM (`--with-db=gdbm`) in preference to Berkeley DB
|
|
(`--with-db=db` or `--with-db=dbN` where `N` is 1, 2, 3, or 4) by
|
|
default, since hardware improvements have rendered Berkeley DB's speed
|
|
advantages negligible for our purposes and the relatively frequent
|
|
`SONAME` and on-disk format changes are not worth the hassle.
|
|
Distributors should note that if they follow this change then they will
|
|
need to arrange for databases to be rebuilt on upgrade to this version.
|
|
* Manual pages may now be compressed with LZMA (although this is probably
|
|
only worth it for very large pages).
|
|
* Duplicate manual page hierarchies due to symlinks (e.g. `/usr/man` ->
|
|
`/usr/share/man`) are detected and removed from the search order.
|
|
* A locale modifier (e.g. `@latin`) in a directory name must now match the
|
|
locale if the former is set, in addition to the language and territory.
|
|
* Bare `.so` includes (e.g. `.so foo.1` rather than `.so man1/foo.1`) now
|
|
work, although only within the same manual page hierarchy for now.
|
|
|
|
man-db 2.5.2 (5 May 2008)
|
|
=========================
|
|
|
|
Fixes:
|
|
|
|
* `man -H` (without a browser argument) was completely broken in 2.5.1 and
|
|
is now fixed.
|
|
* `man` no longer breaks in Japanese locales when using `less` as a pager.
|
|
|
|
Improvements:
|
|
|
|
* The `--encoding` option to `man` can now take a true character encoding
|
|
rather than a `*roff` device; the latter was an unreliable, inflexible,
|
|
and awkward way to select an output encoding. The old semantics are
|
|
still supported for backward compatibility.
|
|
* Whatis parsing stops at `.ie` or `.if` conditionals.
|
|
* CJK locale specifications where the codeset component is equivalent to
|
|
but not stringwise-identical to UTF-8 (e.g. `zh_CN.utf8`) are handled
|
|
better.
|
|
* `man(1)`'s `OPTIONS` section is ordered more comprehensibly.
|
|
* `apropos`, `lexgrog`, `man`, `mandb`, and `whatis` ignore encoding
|
|
conversion errors for the last possible encoding of the source page.
|
|
This helps, for example, with pages including misencoded non-ASCII names
|
|
of authors; it usually seems better to allow these pages to pass with
|
|
small errors than to break them entirely.
|
|
|
|
man-db 2.5.1 (28 January 2008)
|
|
==============================
|
|
|
|
Fixes:
|
|
|
|
* The manual is now built automatically, avoiding some ordering problems on
|
|
`make distclean`.
|
|
* Manual pages are converted to the proper input encoding for `troff`
|
|
output as well as `nroff` output.
|
|
* The `-t`, `-T`, `-X`, and `-Z` options to `man` work again; in 2.5.0,
|
|
they read input from `stdin` rather than from the manual page.
|
|
* `apropos` and `whatis` no longer segfault when given an explicit locale
|
|
using `-L`.
|
|
* `man` now understands that `groff`'s `ascii` device takes ASCII input,
|
|
not ISO-8859-1.
|
|
* `man` no longer discards `stderr` when writing to a file or a pipe; this
|
|
was broken by an overenthusiastic change in 2.5.0.
|
|
* `manconv` now falls back to the next encoding in its list if any
|
|
characters in an entire 64KB block fail to decode using the current
|
|
encoding, as was originally intended.
|
|
* `manconv` is more careful about extracting `coding:` directives from
|
|
manual pages.
|
|
* Ctrl-C and Ctrl-\ now work again at the prompt issued by `man -a`.
|
|
|
|
Improvements:
|
|
|
|
* There is a new `--with-sections` `configure` option to change the default
|
|
value of `SECTION` in the configuration file.
|
|
* Automake is now used to generate Makefiles. Among other things, this
|
|
fixes `VPATH` builds and some bugs in dependency generation, and should
|
|
allow building with non-GNU versions of make.
|
|
* man-db now uses the Gnulib portability library, allowing the removal of
|
|
earlier haphazard portability code. While this results in a somewhat
|
|
larger source distribution, it makes man-db easier to maintain and should
|
|
make it easier to build on systems to which the maintainer does not have
|
|
access.
|
|
* In the process of switching to Gnulib, the last vestiges of pre-C89
|
|
support have been removed; they were documented to be broken anyway.
|
|
* If the `MANROFFOPT` environment variable is set, `man` now appends its
|
|
value to the `*roff` command line.
|
|
* `man` now accepts a `--recode` option to output a source manual page
|
|
converted to a specified encoding.
|
|
* For compatibility with System V, `man` accepts `-s` as an alias for `-S`,
|
|
and permits sections to be comma-separated as well as colon-separated.
|
|
* All programs, except the obsolete `wrapper`, now accept a `--debug`
|
|
option. (`accessdb`, `lexgrog`, and `zsoelim` were lacking it.)
|
|
* `man` now accepts a `--warnings` option to enable `groff` warnings.
|
|
|
|
man-db 2.5.0 (7 October 2007)
|
|
=============================
|
|
|
|
Fixes:
|
|
|
|
* `mandb --quiet` now suppresses several more warnings.
|
|
* The output of `apropos` no longer includes duplicates when multiple
|
|
search terms are used.
|
|
|
|
Improvements:
|
|
|
|
* Databases are now created for non-English manual hierarchies. All
|
|
database entries should be encoded in UTF-8; man-db converts from the
|
|
character set of the manual hierarchy and to the character set specified
|
|
in the user's locale as necessary.
|
|
* Per-locale directory handling has been improved. Directories such as
|
|
`fr.UTF-8` may be used for occasions when it is appropriate to specify
|
|
the character set but not the country, and so a full locale name is
|
|
inconvenient.
|
|
* There is a new `manconv` program which can try multiple possible
|
|
encodings for a file, thus allowing UTF-8 manual pages to be installed in
|
|
any directory even without an explicit encoding declaration.
|
|
* A decompression library is now in place. This allows man-db to use
|
|
`zlib` to decompress gzipped files, and allows most of its uses of
|
|
temporary files to be removed. The only remaining exceptions are cat
|
|
file creation (which uses a temporary file in the cat tree rather than in
|
|
`/tmp`) and viewing HTML manual pages (which uses a temporary directory).
|
|
Otherwise, man-db should now work fine even with a read-only `/tmp`
|
|
during system recovery.
|
|
* Cat pages are now saved in the background while the pager is active, so
|
|
`man` will only need to block afterwards if the pager is exited very
|
|
quickly.
|
|
* `--with-*` options are now available at `configure` time for most of the
|
|
auxiliary program locations that you might want to override.
|
|
* `man` now supports the `MANPAGER` environment variable, overriding
|
|
`PAGER`.
|
|
* `apropos`/`whatis` output is now truncated to the terminal width by
|
|
default. As with `man`, this may be overridden using the `MANWIDTH`
|
|
environment variable.
|
|
* `lexgrog` now ignores alleged manual page names containing spaces, as
|
|
these usually indicate parsing errors or ill-formed `NAME` sections and
|
|
they clutter up `apropos` output badly. I'm only aware of one legitimate
|
|
counterexample, the Intercal compiler "oo, ick", which no longer appears
|
|
to be known by that name anyway; let me know if there are any others.
|
|
* `man` now discards `stderr` from formatting subprocesses when outputting
|
|
to a pager, to avoid visual corruption from any error messages.
|
|
* If the `MAN_KEEP_FORMATTING` environment variable is set to any non-empty
|
|
value, then `man` will preserve formatting characters in its output even
|
|
when standard output is not a terminal. This may be useful for programs
|
|
such as `pinfo` that call `man` and can interpret its formatted output.
|
|
* Setting `NOCACHE` in the configuration file now prevents `man` from ever
|
|
creating cat pages automatically.
|
|
* `apropos` now accepts the `--and` option to display only items that match
|
|
all the supplied keywords.
|
|
|
|
man-db 2.4.4 (12 February 2007)
|
|
===============================
|
|
|
|
man-db is now revision-controlled using
|
|
[bzr](https://bazaar.canonical.com/). See `docs/HACKING` for the location
|
|
of the archive (including all CVS history, imported by Canonical).
|
|
|
|
Fixes:
|
|
|
|
* SECURITY: Fix a buffer overrun if using `-H` and the designated web
|
|
browser (argument to `-H` or `$BROWSER`) contains multiple `%s`
|
|
expansions. This is CVE-2006-4250.
|
|
* Ignore `SIGINT` and `SIGQUIT` while running subprocesses, so that typing
|
|
Ctrl-C doesn't kill `less` (broken in 2.4.3).
|
|
* Similarly, ignore `SIGPIPE` in subprocesses.
|
|
* Various fixes to `SIGCHLD` handling in pipeline library, preventing
|
|
"waitpid failed: No child processes" errors.
|
|
* Skip `exec` in configuration file commands (perhaps left over from old
|
|
installations), which the pipeline execution library cannot handle
|
|
directly.
|
|
|
|
Improvements:
|
|
|
|
* Add support for Chinese in the `--enable-mb-groff` case.
|
|
* `lexgrog` now handles pages with multiple descriptions more usefully, by
|
|
displaying one description per output line.
|
|
|
|
man-db 2.4.3 (3 July 2005)
|
|
==========================
|
|
|
|
Fixes:
|
|
|
|
* Avoid problems creating databases on systems with badly broken clocks set
|
|
before the Unix epoch.
|
|
* Fix detection of decompression programs, so that `man` doesn't attempt to
|
|
execute man pages when it doesn't have a corresponding decompression
|
|
program.
|
|
|
|
Improvements:
|
|
|
|
* `apropos` and `whatis` now accept a `--section` option to restrict their
|
|
search to a particular manual section.
|
|
* The pipeline execution library is now used for most calls to external
|
|
programs, avoiding use of the shell.
|
|
* When `stdout` is not a terminal, man pages will be formatted in plain
|
|
text without the use of backspace or ANSI formatting characters.
|
|
* When invoking `apropos` (`man -k`) or `whatis` (`man -f`) as external
|
|
programs, `man` now only passes through command-line options understood
|
|
by the respective programs.
|
|
* Improve handling of locales with versions and/or modifiers.
|
|
* Add support for Croatian, Galician, Indonesian, Slovak, and Turkish
|
|
pages.
|
|
* man-db may now be built to use Berkeley DB version 4 (`--with-db=db4`).
|
|
|
|
Compatibility notes:
|
|
|
|
* Setting the line length of manual pages now requires `groff` 1.18 or
|
|
later.
|
|
|
|
man-db 2.4.2 (20 September 2003)
|
|
================================
|
|
|
|
Fixes:
|
|
|
|
* SECURITY: Fix a number of buffer overruns in configuration file handling,
|
|
ultimate source location, and `MANPATH` processing. This is CVE
|
|
CAN-2003-0620.
|
|
* SECURITY: Restrict the use of the `DEFINE` directive in `~/.manpath` to
|
|
code running with dropped privilege. Previously, the `compressor`
|
|
variable could be used to run arbitrary code with raised privilege. This
|
|
is CVE CAN-2003-0645.
|
|
* Make sure to initialize `mandata` structures to zero. The uses of
|
|
uninitialized memory resulting from this had been leading to random
|
|
segfaults.
|
|
* Drop privileges in order to be able to read pages in non-world-readable
|
|
user manpaths while setuid.
|
|
* `man` can be built with `--disable-setuid` again.
|
|
* `man`'s locale support has been revamped. The encoding of source manual
|
|
pages is no longer related to the encoding of the input passed to `*roff`
|
|
or to `*roff`'s terminal output device. These frequently differ,
|
|
especially in UTF-8 locales but in other circumstances as well, and a
|
|
"just send 8-bit data" approach is no longer adequate. If you are using
|
|
a version of `groff` with the Debian multibyte patch applied, pass the
|
|
`--enable-mb-groff` option to configure.
|
|
* When using GDBM, `accessdb` and `apropos` did not return database entries
|
|
in sorted order, since GDBM's key traversal interface is not
|
|
lexicographically ordered. The database layer has been corrected to cope
|
|
with this.
|
|
* Directories found in strange places in manual hierarchies don't crash
|
|
`mandb`.
|
|
|
|
Improvements:
|
|
|
|
* `man` now calls `mandb` to update databases rather than doing it itself.
|
|
This leaves cat pages as the sole remaining reason for `man` to be
|
|
setuid.
|
|
* The "undocumented" message is only displayed if a corresponding
|
|
executable is found on the `$PATH`.
|
|
* All programs that read `~/.manpath` now take a `-C` option to cause them
|
|
to read a different user configuration file instead.
|
|
* The `--enable-debug` option to `configure` has been removed. man-db's
|
|
`Makefile`s now always calculate full dependencies for C files.
|
|
* `mandb` caches the contents of directories, significantly speeding up the
|
|
purging of obsolete entries.
|
|
* `mandb` now knows how to purge database entries corresponding to removed
|
|
stray cat pages.
|
|
* In addition, a pipeline execution library has been written, which will
|
|
make it possible to eliminate all or almost all use of the shell in a
|
|
future release. Unfortunately, time pressures due to the security issues
|
|
above meant that the pipeline library was not well enough tested for use
|
|
in this release, so it is present but unused. That will be the first
|
|
item for 2.4.3.
|
|
|
|
man-db 2.4.1 (22 December 2002)
|
|
===============================
|
|
|
|
The man-db CVS repository has moved from sourceforge.net to
|
|
savannah.nongnu.org.
|
|
|
|
Fixes:
|
|
|
|
* Don't enter an infinite loop when the `SYSTEM` environment variable is
|
|
set.
|
|
* `man` doesn't segfault when trying to follow a broken symlink.
|
|
* `mandb` no longer corrupts databases when deleting entries that are part
|
|
of multi keys.
|
|
* Prevent a possible buffer overflow when encountering large multi keys.
|
|
* Man page names are escaped when globbing, so `[(1)` can now be found even
|
|
if the database is not up to date.
|
|
* Correct an `access()` check that led to `man -X -l -` producing no
|
|
output.
|
|
* `lexgrog` can now cope with man pages containing only a `.so` link.
|
|
* Manual hierarchies with a specific encoding are put into the search path
|
|
in the correct order. A bug in `$LANGUAGE` handling had formerly meant
|
|
that `de` would take precedence over `de_DE.UTF-8`.
|
|
|
|
Improvements:
|
|
|
|
* `man`'s behaviour when searching for page names that begin with a digit
|
|
has been made more intuitive, as has its treatment of section names that
|
|
are extensions of ones mentioned in the configuration file but are not
|
|
themselves explicitly named as sections.
|
|
* The default line length for pages formatted for terminal output has been
|
|
increased (reducing margin size) to match the default in `groff` 1.18.
|
|
* Proofread the manual.
|
|
* The `-w` flag to `man` has been changed to display the name of only the
|
|
source `nroff` file. A `-W` flag has been introduced which displays the
|
|
name of the cat file as well. If both flags are given to `man`, it will
|
|
behave as before.
|
|
* If `bzip2` is installed, pages compressed with `bzip2` can now be
|
|
displayed.
|
|
* Add support for displaying an additional message when no man page is
|
|
found, which can be used to direct users to a generic "undocumented"
|
|
page.
|
|
* The manual hierarchy layout will now be guessed where possible if an
|
|
explicit `--enable-mandirs` argument is not passed to `configure`.
|
|
|
|
man-db 2.4.0 (26 June 2002)
|
|
===========================
|
|
|
|
I have changed the package name to man-db, as the underscore was awkward.
|
|
|
|
Upgrading from version 2.3.x:
|
|
|
|
* The database format has changed slightly, so you will need to run `mandb
|
|
--create` after installing the new version to rebuild your databases from
|
|
scratch. (Distribution packages should do this automatically for system
|
|
databases.)
|
|
|
|
Fixes:
|
|
|
|
* The GNU `nroff` test in `configure` now works when `/bin/sh` is `ash`.
|
|
* When scanning pages for `NAME` sections, `lexgrog` and `mandb` no longer
|
|
accidentally eat the line after each occurrence of the no-op request `.`.
|
|
* `man --local` drops privileges throughout to avoid problems with
|
|
non-world-readable home directories.
|
|
* Newly created cat directories are `chown`ed to the `man` user when
|
|
running as root.
|
|
* `man --html` no longer creates its temporary file with raised privileges,
|
|
so that it now works with a setuid `man`.
|
|
* `man` detects preprocessors correctly when setuid.
|
|
* Various segfault fixes: explicitly null-terminate data returned by the
|
|
Berkeley DB library to avoid some rare crashes; don't reuse a freed
|
|
pointer in some cases of pages with multiple names; handle `MANPATH`s
|
|
containing `::` more safely.
|
|
* Correctly parse manual pages using DOS line-ending conventions.
|
|
* Work around a misfeature in Berkeley DB: it pauses for several seconds if
|
|
asked to read a zero-length database, on the assumption that somebody is
|
|
still writing the metadata page. `man` is generally better off just
|
|
ignoring the database in this case.
|
|
* Work around corrupted databases in the case where the `nextkey` pointer
|
|
chain contains a loop.
|
|
|
|
Improvements:
|
|
|
|
* `man` looks in the filesystem followed by the database, rather than the
|
|
other way round. Unix filesystems are quite good databases for this
|
|
purpose, and the `man` database is only superior when looking up names
|
|
that don't have associated links in the filesystem.
|
|
* `apropos --wildcard --exact` makes sure wildcards match an entire
|
|
description or page name, unlike `apropos --wildcard` which may match on
|
|
word boundaries too.
|
|
* `man`'s page-searching code has been substantially rearranged, and now
|
|
only starts displaying pages when it has finished searching for
|
|
candidates. This allows pages to be sorted more sensibly.
|
|
* Manual pages are formatted in UTF-8 if that is the current locale's
|
|
character set. The `-E` option is now available to force a particular
|
|
encoding. Note that some versions of (e.g.) `less` have problems
|
|
displaying UTF-8 in conjunction with backspace characters; `groff` 1.18
|
|
should alleviate this by using ANSI colour escapes instead.
|
|
* The `less` prompt string sets `-PM` as well as `-Pm`.
|
|
* Invoking `man` from within `less` now sets the correct page title in the
|
|
inner `less`.
|
|
* Unless the `--match-case` option is used, `man` will search for pages
|
|
case-insensitively.
|
|
* Update the mechanism for setting the line length so that it also works
|
|
with `groff` 1.18.
|
|
* The `-R` switch is added to the `less` prompt string, which is needed to
|
|
display the ANSI colour escapes generated by `groff` 1.18 correctly.
|
|
* The `$MANLESS` environment variable may be used to override the normal
|
|
creation of the `less` prompt string.
|
|
* Translation updates for French, German, and Spanish, and a new Catalan
|
|
translation. See `man/THANKS`.
|
|
|
|
man\_db-2.3.20 (7 September 2001)
|
|
=================================
|
|
|
|
Fixes:
|
|
|
|
* A typo in 2.3.19 caused character sets for many languages to be detected
|
|
incorrectly. This especially affected multibyte languages.
|
|
* Long options in the environment variable `LESS` are handled correctly.
|
|
* When checking if cat pages need to be updated, check for different
|
|
timestamps rather than whether the cat page is newer, as otherwise we
|
|
were confused by tools like `tar` that preserve timestamps in their
|
|
archives. Each cat page is now set to have the same mtime as its
|
|
corresponding man page.
|
|
* Look up the correct character set each time a page is displayed rather
|
|
than just the first time, in case pages in several different character
|
|
sets are viewed in a single session.
|
|
* `groff` requests are no longer assumed to be case-insensitive when
|
|
scanning for preprocessors, so for example `mdoc`'s `.Eq` request isn't
|
|
mistaken for the `.EQ` which introduces `eqn` commands.
|
|
* Escape arguments passed to the shell that might contain dangerous
|
|
characters.
|
|
* Avoid an infinite loop if the `LANGUAGE` environment variable is set but
|
|
empty.
|
|
* The `--create` option to `mandb` now implies `--no-purge`.
|
|
* Temporary files are handled with more secure permissions.
|
|
|
|
Improvements:
|
|
|
|
* Use a variant of `mkstemp()` rather than `tempnam()`, to avoid classic
|
|
race conditions. (I don't believe the races were usefully exploitable.)
|
|
* Tolerate `whatis` entries in a database that point to themselves.
|
|
* Detect more translations of the `NAME` section.
|
|
* Add examples of man pages written in POD and SGML.
|
|
* `lexgrog` is now installed in `/usr/bin` by default, with proper argument
|
|
parsing, an improved output format, and a man page. It is expected to be
|
|
used by programs that need to validate man pages.
|
|
* The `-H` (`--html`) option to `man` is now compiled in by default, and
|
|
supports the BROWSER specification (as
|
|
[documented](http://www.tuxedo.org/~esr/BROWSER/) and
|
|
[amended](https://www.dwheeler.com/browse/secure_browser.html)).
|
|
|
|
man\_db-2.3.19 (5 July 2001)
|
|
============================
|
|
|
|
Fixes:
|
|
|
|
* The user configuration file `~/.manpath` is no longer trusted when
|
|
deciding whether to drop privileges. In the process, user cat directory
|
|
handling has been improved.
|
|
* Commands of the form `man -S "" foo` formerly emptied the list of
|
|
acceptable sections and then searched the database anyway, and commands
|
|
of the form `man -S ::: foo` segfaulted. Both now use the standard list
|
|
of sections.
|
|
* The `HUP` and `TERM` signals are now handled better.
|
|
* `straycats` processing invokes `col -bx` rather than `col-bx`.
|
|
* The `root` user is now correctly allowed to update databases in system
|
|
manpaths.
|
|
* `apropos` and `whatis` no longer enter infinite recursion if a database
|
|
contains an entry pointing to itself.
|
|
|
|
Improvements:
|
|
|
|
* When compiled with `--enable-setuid`, `man` and `mandb` can be installed
|
|
non-setuid. In this mode, they will be unable to write cat pages in
|
|
system directories or to modify system databases, but will otherwise
|
|
operate correctly. This allows a single binary package to support setuid
|
|
and non-setuid modes of operation.
|
|
* The ordering of manual sections is read from `SECTION` directives in the
|
|
configuration file rather than being hard-coded.
|
|
* The `MANDB_MAP` configuration file directive is documented more clearly.
|
|
* Multiple `whatis` entries separated by commas, break requests, and/or
|
|
paragraph requests are handled more intelligently.
|
|
* Fill control requests (`.nf` and `.fi`) cause `lexgrog` to assume a break
|
|
at each newline.
|
|
* Duplicate manpath entries (often generated in the course of national
|
|
language support) are removed, so that `man -a` works better.
|
|
* man\_db's binaries are installed unstripped by default.
|
|
* Since supporting certain layouts of manual page hierarchies causes
|
|
problems for others, the layout is now selectable via `configure`. The
|
|
default is to try all layouts.
|
|
* `man` only does an on-the-fly update of the database caches when the
|
|
`--update` option is given.
|
|
* Manual pages are displayed with a line length appropriate to the current
|
|
terminal. If a non-standard line length is used (i.e. the terminal is
|
|
not between 66 and 80 characters wide) then cat pages will not be saved.
|
|
* `mandb` tries to purge obsolete entries from its databases. Using the
|
|
`--create` flag should now usually only be necessary in cases of database
|
|
corruption.
|
|
|
|
man\_db-2.3.18 (14 May 2001)
|
|
============================
|
|
|
|
man\_db-2.3.18 is an interim release under new maintenance by Colin Watson,
|
|
merging much of the work done by former maintainers (Graeme Wilford and
|
|
Fabrizio Polacco). It incorporates several years of changes made in the
|
|
Debian GNU/Linux distribution's package of man\_db.
|
|
|
|
Here are a few highlights, with the names of the maintainers responsible for
|
|
them. As I am documenting after the fact of other people's changes of a few
|
|
years ago, I have undoubtedly missed a number of fixes and improvements; I
|
|
promise to keep track of these as I go along in future.
|
|
|
|
Fixes:
|
|
|
|
* Multiple security fixes, including better handling of temporary files, a
|
|
format string vulnerability fix, and more careful dropping of privileges
|
|
when running setuid. [Fabrizio, Colin]
|
|
* Databases no longer disappear temporarily while they are being
|
|
regenerated. [Fabrizio]
|
|
* Corrected handling of locale environment variables. Setting several
|
|
colon-separated locales in `$LANGUAGE` also works now. [Colin]
|
|
* `whatis` and `apropos` are more careful about the possibility of a
|
|
corrupted database. [Fabrizio, Colin]
|
|
|
|
Improvements:
|
|
|
|
* If `root` has private manual hierarchies, cat pages generated from them
|
|
are no longer chowned to a less-privileged user. [Wilf]
|
|
* Rewrote configuration file handling, adding `DEFINE` directives to set
|
|
paths to external programs. The configuration file is now called
|
|
`man_db.conf`. [Wilf]
|
|
* Support FHS paths (`/usr/share/man` and `/var/cache/man`) in preference
|
|
to FSSTND paths (`/usr/man` and `/var/catman`). [Fabrizio]
|
|
* Converted from `catgets` to GNU `gettext` for national language support.
|
|
[Fabrizio, Colin]
|
|
* Several new and improved localized message catalogues and translated man
|
|
pages. [Fabrizio, Colin, other contributors]
|
|
* Added `accessdb` utility, which displays the contents of a manual page
|
|
database. [Fabrizio]
|
|
* Added user configuration file `~/.manpath`, with the same syntax as the
|
|
global configuration file. [Fabrizio]
|
|
* Leading or trailing colons in the `MANPATH` environment variable cause
|
|
the manpath derived from configuration files to be prepended or appended
|
|
respectively. A double colon in the middle of the environment variable
|
|
causes the configuration file manpath to be inserted between the colons.
|
|
[Fabrizio]
|
|
* Added experimental `-H` and `-Thtml` options to take advantage of
|
|
`groff`'s new HTML driver. [Fabrizio]
|
|
* `lexgrog` now scans manual pages to guess which preprocessors are needed.
|
|
[Fabrizio]
|
|
* Create cat directories on the fly if necessary. [Fabrizio]
|
|
* Supply a wrapper which explicitly drops privileges to uid `man` if `man`
|
|
or `mandb` is run as root. In the future, splitting out setuid functions
|
|
into a separate helper process may remove the need for this paranoia.
|
|
[Fabrizio]
|
|
* Add `--test` option to `mandb`, which merely reports errors in manual
|
|
page hierarchies rather than actually creating or updating a database.
|
|
[Fabrizio, Colin]
|
|
* Manual pages may now be symlinks outside the mantree. This should pose
|
|
no significant security concerns, and utilities such as GNU stow create
|
|
such symlinks. [Colin]
|
|
* Deprecate `whatis` references for `man`, and display a warning if
|
|
displaying a page relies on going through a `whatis` reference. They
|
|
often lead to confusingly non-obviously-deterministic behaviour, and
|
|
guaranteeing that `man` will honour them even when the database is out of
|
|
date causes performance problems. [Colin]
|
|
|
|
man\_db-2.3.11 (21 September 1995)
|
|
==================================
|
|
|
|
* The man\_db manual is bundled in source form.
|
|
* Components of `$PATH` not in the config file were checked for `man`
|
|
subdirectories. Now they are also checked for `../man`.
|
|
* Untarring a new manual page (with a timestamp older than the relative cat
|
|
file) over the original did *not* cause `man`/`catman` to reformat the
|
|
replacement. This is changed. As a side effect, untarring an unchanged
|
|
man file over the original will also cause a reformat.
|
|
|
|
man\_db-2.3.10 (13 July 1995)
|
|
=============================
|
|
|
|
Fixes:
|
|
|
|
* Global databases were not owned by setuid owner (if applicable). As a
|
|
consequence only `mandb` could update the databases unless `man` was run
|
|
by superuser. Stupid bug.
|
|
* The keyword passed to `apropos` _never_ matched the first word of any
|
|
whatis line.
|
|
* `FAVOUR_STRAYCATS` code (if enabled), did not work properly.
|
|
* `zsoelim` did not work as advertised.
|
|
|
|
Improvements:
|
|
|
|
* `man` removes its temporary files upon abnormal termination.
|
|
* `apropos` does proper word matching rather than the fuzzy matching of
|
|
2.3.5. E.g. supplying any of the keywords: `ld.so`, `a.out`, `dynamic`,
|
|
`linker` or `loader` will match the following entry:
|
|
|
|
ld.so (8) - a.out dynamic linker/loader
|
|
|
|
whereas `a.out` and `loader` used to fail.
|
|
|
|
* `man`/`whatis`/`apropos` return with exit code 16 if manual page/file or
|
|
keyword is not matched. Previously exit code 0 was used making it
|
|
difficult for callers to know if the lookup was successful.
|
|
* Addition of German message catalogue.
|
|
* `apropos` and `man -k` do POSIX specified regex matching rather than
|
|
keyword searches if the environment variable `POSIXLY_CORRECT` is
|
|
defined.
|
|
* Added glob-only support of native system manual hierarchies on HP-UX, OSF
|
|
and Solaris operating systems. Improved the `whatis` parsing code to
|
|
cope with majority of HP-UX manual pages.
|
|
* Ported to NeXTstep.
|
|
|
|
man\_db-2.3.5 (21 April 1995)
|
|
=============================
|
|
|
|
Added support for:
|
|
|
|
* Non-standard section names i.e. multi-character
|
|
|
|
* Compressed manual pages.
|
|
|
|
A new utility `zsoelim` is included to correctly handle `nroff` `.so`
|
|
requests that point to a file which has been compressed.
|
|
|
|
* Compressed stray cats.
|
|
|
|
By definition, stray cats are not re-creatable as they have no relative
|
|
source manual page. As they may have non-default compression extensions
|
|
and may reside on read-only media, stray cats have the same compression
|
|
support as manual pages.
|
|
|
|
* FSSTND proposed "extension" support.
|
|
|
|
Specific package manual pages may be installed in the standard sections
|
|
but with a package-unique extension appended as in `exit(3tcl)` -
|
|
`../man/man3/exit.3tcl`. Using the command `man -e tcl exit` would then
|
|
display an `exit` manual page with a `tcl` extension, if available. Of
|
|
course, `man 3tcl exit` works as always.
|
|
|
|
* FSSTND proposed NLS man subdirectories of the form
|
|
`.../man/<locale>/man<sec>/`.
|
|
|
|
* NLS message catalogue hooks.
|
|
|
|
Provision has been made for the programs to emit their messages in a
|
|
language dependent form.
|
|
|
|
* `whatis` referred manual pages.
|
|
|
|
Some manual pages contain relevant information for commands or programs
|
|
that would not otherwise reference the page. The `whatis` part of the
|
|
manual page is used to create virtual links to these pages by all of the
|
|
names mentioned within it. Examples include names such as `.` and `:`
|
|
referencing the local shell manual page.
|
|
|
|
* `catman` utility, used to pre-format the manual pages into cat pages.
|
|
|
|
* Operating systems other than Linux.
|
|
|
|
man\_db has been reported to compile on the following platforms: Linux,
|
|
SunOS, Solaris, Ultrix, OSF, HP-UX, AIX, IRIX (although portability does
|
|
not extend to support of native manual tree structures on some of these
|
|
systems, e.g. HP-UX).
|
|
|
|
* Berkeley DB library routines.
|
|
|
|
This complements the support of both `gdbm` and `ndbm` which already
|
|
existed. DB databases may be shared across platforms.
|
|
|
|
* `$MANOPTS` environment variable.
|
|
|
|
The environment variable `MANOPTS` may be set to any string in command
|
|
line option/argument format. It is parsed by `man(1)` prior to its
|
|
actual command line.
|
|
|
|
* Per manual hierarchy cat directory locations.
|
|
|
|
It is possible to redirect your cat pages to other directories or even
|
|
other file systems.
|
|
|
|
* Per manual hierarchy `nroff`/`[tg]roff` format scripts.
|
|
|
|
Ability to create custom formatter scripts that are called by `man(1)` to
|
|
enable format/display of non-standard manual pages or manual pages
|
|
requiring a special macro package.
|
|
|
|
* Extension of `man -l`.
|
|
|
|
Arguments following `-l` are interpreted as local files requiring format
|
|
and display. Extensions are:
|
|
|
|
- `man -l -` formats and displays `stdin`.
|
|
- `man -l foo.1.gz` decompresses, formats and displays `foo.1.gz`.
|
|
|
|
* Latin1 manual pages/choice of `nroff` output device.
|
|
|
|
* Viewing of ASCII manual pages formatted for a latin1 output device on a 7
|
|
bit ASCII terminal (`-7`).
|
|
|
|
* `whatis` and `apropos` utilities support regex and wildcard matching.
|
|
|
|
* `checkman`.
|
|
|
|
Shell script utility that will find and display duplicated manual pages
|
|
found across manual page hierarchies.
|
|
|
|
* `mkcatdirs`.
|
|
|
|
Shell script utility to create appropriate cat directories after
|
|
installation and setup.
|
|
|
|
Conceptual improvements:
|
|
|
|
* Replacement of single database with multiple modular databases. Easier
|
|
integration of additional information into the databases in the future.
|
|
|
|
* Both user and global databases share the same name `index.<db-type>`,
|
|
where `<db-type>` could be `bt`, `db`, or `pag` and `dir`.
|
|
|
|
* Databases contain `whatis` text.
|
|
|
|
`makewhatis` and text `whatis` databases are redundant, although `whatis`
|
|
and `apropos` will use the text `whatis` database for information if they
|
|
cannot read from a relevant index database.
|
|
|
|
* Straycats handled without need for 'placeholders'.
|
|
|
|
* Friendly `less(1)` prompt.
|
|
|
|
If `man(1)` uses `less(1)` as its pager (dependent on both static and
|
|
dynamic factors), the prompt is modified to suit the manual page being
|
|
displayed. The modification performed is also changeable by the user.
|
|
|
|
* man\_db manual.
|
|
|
|
man\_db has a manual that covers the setup, maintenance and use of a
|
|
generic online manual page system.
|
|
|
|
* Modes of operation.
|
|
|
|
The man\_db utilities can be compiled with various modes of operation in
|
|
mind. E.g. `man` can be stopped from updating databases and/or creating
|
|
cat files in situations where security is extremely important. See the
|
|
man\_db manual for details.
|
|
|
|
Speed improvements:
|
|
|
|
* Background compression/saving of cat files.
|
|
|
|
Cat files are compressed and saved in the background, whilst the user is
|
|
able to browse the formatted page directly.
|
|
|
|
* Merge of `straycats` and `makewhatis` into `mandb`.
|
|
|
|
While `mandb` has slowed, it now incorporates `makewhatis` and
|
|
`straycats` functionality and is much faster as a whole. 2.0a2 used
|
|
`grep`/`awk`, 2.2 used C regex and 2.3 now uses `lex` sourced C to strip
|
|
out the `whatis` information from the raw man or cat files.
|
|
|
|
* Berkeley DB support.
|
|
|
|
Provides lower database initialisation overhead as compared with `gdbm`.
|
|
|
|
* Extremely fast `whatis(1)` searches.
|
|
|
|
`whatis(1)` uses keyed database lookups to retrieve whatis strings for
|
|
standard (non regex/wildcard) searches.
|
|
|
|
Fixes:
|
|
|
|
* Correct handling of `$MANSECT`.
|
|
|
|
The environment variable `MANSECT` is no longer ignored.
|
|
|
|
* Acknowledgement of `$MANPATH` order.
|
|
|
|
manpath elements are searched in the order specified.
|