1 man-db 2.8.4 (27 July 2018)
2 ===========================
4 Major changes since man-db 2.8.3:
9 * Rely on decompressors reading from their standard input rather
10 than redundantly passing them the input file on their command
11 line. This works better with downstream AppArmor confinement of
14 * Fix invalid syntax in tmpfiles.d/man-db.conf when configured with
15 --disable-cache-owner.
17 * Make seccomp sandbox allow sched_getaffinity, sometimes used by
20 * Check for mandb_nfmt and mandb_tfmt in the manual page hierarchy
21 as documented, not in the current directory. This was broken by
22 the working-directory-handling changes in 2.8.3. Note that this
23 change means that "man -l" will never use an external formatter
24 (which was never documented behaviour and was surely a bad idea).
26 * Make seccomp sandbox allow some shared memory operations across
27 the board rather than just when ESET File Security is in use; the
28 Astrill VPN seems to require something similar, and there are
29 doubtless other such preload hacks.
31 * Some versions of ESET File Security call msgget and msgsnd; if
32 this program is in use, then allow those.
34 man-db 2.8.3 (5 April 2018)
35 ===========================
37 Major changes since man-db 2.8.2:
42 * Make seccomp sandbox allow madvise, since that's used by lbzip2.
44 * Make seccomp sandbox allow kill and tgkill outright, since groff
45 uses kill to pass on signals to its child processes.
47 * Make seccomp sandbox allow sibling architectures on
48 x86/x86_64/x32, since people sometimes mix and match architectures
49 there for performance reasons.
51 * Fix version check in locale macro loading to tolerate groff
54 * man now only changes working directory in child processes, so
55 never fails due to being unable to change back to its original
58 * accessdb, apropos, and lexgrog no longer emit spurious gettext
59 headers in their --help output when localised.
61 man-db 2.8.2 (28 February 2018)
62 ===============================
64 Major changes since man-db 2.8.1:
69 * Make seccomp sandbox allow kill and tgkill when the signal is
70 directed at the current process or one of its threads; this is
73 * Make seccomp sandbox allow ioctl(fd, TIOCGWINSZ), since that's used
76 * Work around the proprietary "ESET File Security" antivirus program in
77 seccomp sandbox: if this is in use then we need to allow some
78 socket-related system calls.
80 * Work around the "snoopy" execve() wrapper and logger in seccomp
81 sandbox: if this is in use then we need to allow some
82 socket-related system calls.
84 * Interpret EFAULT from seccomp_load as meaning that seccomp is
85 unavailable, since this can be returned by some versions of
88 man-db 2.8.1 (9 February 2018)
89 ==============================
91 Major changes since man-db 2.8.0:
96 * Fix seccomp sandbox build on Linux/POWER.
98 * Fix manconv execution under seccomp when man is installed setuid.
100 * Make seccomp sandbox allow mremap (used by iconv, for example).
105 * configure now has a --without-libseccomp option to disable the use
106 of seccomp even if the library is available.
108 man-db 2.8.0 (4 February 2018)
109 ==============================
111 Major changes since man-db 2.7.6.1:
116 * Fix locale macro loading for Chinese to load the macro file
117 corresponding to just the language part of the user's locale.
119 * Honour --enable-cache-owner in generated systemd tmpfiles snippet
120 rather than hardcoding "man".
122 * If man adds prefixes to a page to handle such things as disabling
123 hyphenation, then take account of those when looking for a
124 preprocessor line at the start of the page.
126 * Fix a segfault in 'man -D --help'.
131 * Treat "\(en" as another synonym for "\-" in NAME sections.
133 * Confine most subprocesses that handle untrusted data using
134 seccomp. This mainly deals with subprocesses that perform
135 encoding conversions, (de)compressors, groff programs, and a few
136 other odds and ends. groff programs use a slightly more
137 permissive filter since they need to create temporary files, so
138 additional path-based confinement (e.g. using AppArmor) is still
141 If this goes wrong, then MAN_DISABLE_SECCOMP=1 can be set in the
142 environment to disable it, but please report any such problem as a
145 * man now falls back to cat if the compile-time default pager is not
148 man-db 2.7.6.1 (12 December 2016)
149 =================================
151 Major changes since man-db 2.7.6:
156 * Don't chmod CACHEDIR.TAG if it doesn't exist.
158 * Correct installation of Swedish manual pages.
160 man-db 2.7.6 (11 December 2016)
161 ===============================
163 Major changes since man-db 2.7.5:
168 * Fix build warnings with Perl 5.22.
170 * Document that 'man -K' searches page source, not rendered text.
172 * Fix a long-standing bug in man-db's internal cleanup stack
173 mechanism: if a cleanup function was pushed unexpectedly between a
174 push/pop pair, then popping the stack would remove the wrong
175 cleanup function and chaos could ensue. Avoid this by being more
176 precise about which cleanup function should be popped.
178 * SECURITY: Eliminate dangerous setgid-root directories. In the
179 default configuration, cache files and directories are now owned
180 by man:man rather than man:root; man and mandb are now setgid man
181 as well as setuid man (except in the --disable-setuid case). This
182 is a much simpler and safer solution to the original problem that
183 caused my predecessor to make directories setgid root, and doesn't
184 introduce any interesting new privilege since the man group's only
185 real purpose is to be the man user's primary group and nothing in
186 cache directories is group-writeable.
188 Maintainers of distribution packagers should take care to review
189 their installation rules in light of this change.
191 As far as I know this has no CVE ID, but it is described here:
193 https://www.halfdog.net/Security/2015/SetgidDirectoryPrivilegeEscalation/
195 * Fix manual page translation infrastructure to render tables
196 correctly with po4a 0.47.
201 * man now understands the <page>.<section> form on its command line,
202 so for example 'man chmod.2' is now the same as 'man 2 chmod'.
203 (Contributed by Mihail Konev.)
205 * The owner of cache files is now configured separately from whether
206 man and mandb are installed setuid, using the
207 --enable-cache-owner[=USER] option.
209 man-db 2.7.5 (6 November 2015)
210 ==============================
212 Major changes since man-db 2.7.4:
217 * Adjust line number when inserting extra roff input.
219 * Disable roff input insertion with --recode.
221 * Build text manual with LC_ALL=C, to help reproducible builds.
223 man-db 2.7.4 (8 October 2015)
224 =============================
226 Major changes since man-db 2.7.3:
231 * Fix crash when eliminating manpath duplicates if canonicalising a
234 * Fix a build system bug that sometimes caused substitutions in
235 manual pages to be left unexpanded.
237 * man exits with status 3 rather than 0 if its formatting command
238 exits non-zero, even if its display command exits zero.
240 * man honours MANWIDTH in conjunction with the -Z option, to make it
241 easier to diagnose warnings in manual pages.
243 man-db 2.7.3 (9 September 2015)
244 ===============================
246 Major changes since man-db 2.7.2:
251 * Tools that consider the terminal line length now try the
252 TIOCGWINSZ ioctl on /dev/tty as well as standard input/output.
254 * mandb does a better job of coping with index files having
257 * Squeeze blank lines internally rather than relying on the pager
258 supporting the -s option.
260 * Fix use-after-free in ult_src.
262 * Fix crash when running from a missing and unreadable current
263 directory, such as an orphaned subdirectory of /proc.
265 * Restore the ability to use 'man -a' noninteractively.
267 man-db 2.7.2 (16 August 2015)
268 =============================
270 Major changes since man-db 2.7.1:
275 * 'man -k' and 'man -f' now pass any provided -l option through to
276 the underlying apropos/whatis programs.
278 * apropos and whatis no longer truncate names if long output was
281 * The database handle is no longer stored in a global variable,
282 fixing a class of possible double-close bugs.
284 man-db 2.7.1 (7 November 2014)
285 ==============================
287 Major changes since man-db 2.7.0.2:
292 * Various portability fixes for Solaris, contributed by Peter Bray.
294 * man now runs correctly when its current working directory has been
295 deleted. (As a result of this fix, man-db now requires
296 libpipeline >= 1.4.0.)
298 * 'man -a' sends its prompts to /dev/tty rather than to stderr, and
299 likewise reads replies from /dev/tty rather than from stdin.
301 man-db 2.7.0.2 (28 September 2014)
302 ==================================
304 Major changes since man-db 2.7.0.1:
309 * Be more careful to avoid using or double-closing closed database
310 handles. Fixes test suite failures on some systems.
312 * Patch the fdutimens function imported from Gnulib to work around a
313 libc bug in GNU/Hurd.
315 man-db 2.7.0.1 (24 September 2014)
316 ==================================
318 Major changes since man-db 2.7.0:
323 * Fix test suite in the case where the system supports
324 high-precision timestamps but the file system containing the build
327 man-db 2.7.0 (22 September 2014)
328 ================================
330 Major changes since man-db 2.6.7.1:
332 Upgrading from previous versions:
333 ---------------------------------
335 For the first time since version 2.4.0, the database format has
336 changed slightly, so you will need to run 'mandb --create' after
337 installing the new version to rebuild your databases from scratch.
338 (Distribution packages should do this automatically for system
344 * lexgrog now filters terminal escape sequences out of cat pages
345 before trying to parse them.
347 * Tools that consider the terminal line length now prioritise the
348 COLUMNS environment variable above the TIOCGWINSZ ioctl.
350 * Manpath elements are no longer canonicalised before being inserted
351 into the search path; this caused the use of incorrect catpaths in
352 some cases. This was broken by the LANGUAGE-handling fixes in
358 * Ship a systemd tmpfiles snippet to clean up old cat files after a
361 * The modification time of manual databases is now simply stored in
362 the mtime of the database files themselves, rather than using a
363 special row. This makes databases reproducible between
364 otherwise-identical installations, as long as the underlying
365 database has predictable behaviour. As a bonus, man-db now uses
366 high-precision timestamps to determine whether it needs to update
369 * Timestamps of manual pages are also now stored in the database
370 with high precision and compared accordingly.
372 * Files are now ordered by first physical extent before reading
373 them, for substantial performance improvements in operations such
374 as mandb and 'man -K'.
376 * 'man -H' shows a better error message if no browser is configured.
378 * zsoelim is now installed in $pkglibexecdir, to avoid clashes with
381 man-db 2.6.7.1 (10 April 2014)
382 ==============================
384 Major changes since man-db 2.6.7:
389 * Remove test suite dependency on realpath(1).
391 man-db 2.6.7 (10 April 2014)
392 ============================
394 Major changes since man-db 2.6.6:
399 * Fix a test failure when configured with --enable-undoc.
401 * Run the pager in man's original working directory rather than in
402 the manual hierarchy. (As a result of this fix, man-db now
403 requires libpipeline >= 1.3.0.)
405 * mandb only creates a cache directory tag if the catpath is
406 different from the manpath, since it should only be created in
407 directories that consist entirely of cached information.
409 man-db 2.6.6 (23 January 2014)
410 ==============================
412 Major changes since man-db 2.6.5:
414 man-db is now revision-controlled using git (https://git-scm.com/).
415 See docs/HACKING for the location of the repository.
420 * apropos's --and option now works again; it was broken by the
421 optimisations in 2.6.2.
423 * Restore compatibility with Automake 1.10.
425 * Improve support for translation of common elements of help
428 * Don't issue error messages when the database refers to a page that
431 * Pass macro and hyphenation language tags to groff again (broken in
437 * ./configure --with-override-dir=OVERRIDE arranges to look for
438 manual pages in DIR/OVERRIDE before each path element DIR.
440 man-db 2.6.5 (27 June 2013)
441 ===========================
443 Major changes since man-db 2.6.4:
448 * man's --warnings option works again on systems with versions of
449 groff that support it (broken in 2.6.4).
451 * man automatically falls back to C.UTF-8 and then en_US.UTF-8 if
452 trying to find a UTF-8 locale on a system without
453 /usr/share/i18n/SUPPORTED.
455 man-db 2.6.4 (23 June 2013)
456 ===========================
458 Major changes since man-db 2.6.3:
463 * man(1) and catman(8) now document the default section list set at
466 * Build fixes for Automake 1.13.
468 * man-db 2.6.0 arranged to search the full manpath when expanding
469 .so directives in manual pages (so that ".so name.1" works as well
470 as ".so man1/name.1"), but this incorrectly did not take effect
471 for manual pages that consist only of a .so directive. This is
477 * The MANLESS environment variable is now treated as if it were a
478 default value for the -r option to man: occurrences of the text
479 "$MAN_PN" are expanded, and explicitly using the -r option
480 overrides the default.
482 * The (unfortunately still hardcoded) maximum length for paths to
483 manual page hierarchies in the configuration file is now 511
484 characters rather than 49.
486 * MANPATH entries now undergo glob(7)-style wildcard expansion,
487 allowing entries such as "/opt/*/man".
489 man-db 2.6.3 (17 September 2012)
490 ================================
492 Major changes since man-db 2.6.2:
497 * Build fixes for glibc 2.16 and Automake 1.12.
499 man-db 2.6.2 (18 June 2012)
500 ===========================
502 Major changes since man-db 2.6.1:
507 * apropos prints an error message and returns non-zero when it finds
508 no matches. (Regression introduced in 2.5.1.)
510 * The presence of a 64-bit GDBM database on the manpath no longer
511 causes a 32-bit man process to exit with a fatal error.
516 * apropos is much faster when run with many arguments.
518 * whatis may be given the full path to an executable as an argument,
519 in which case it will look up the base name of that executable in
520 the appropriate parts of the manpath.
522 man-db 2.6.1 (14 February 2012)
523 ===============================
525 Major changes since man-db 2.6.0.2:
530 * --with-db=db* and --with-db=ndbm compile again.
532 * Translated manual pages are no longer displayed starting with a
535 * straycats tries to ensure that col is invoked with LC_CTYPE set to
538 * Fix double-free in mandb when encountering a symlink outside the
539 manual hierarchy, thanks to Peter Schiffer.
544 * mandb creates a cache directory tag, per
545 http://www.brynosaurus.com/cachedir/ ("Cache Directory Tagging
548 * Add support for Lzip-compressed manual pages, thanks to Matias A.
551 * Running 'man -w' (with a new --path alias) without a name now
552 prints the manpath, for compatibility with other man
553 implementations. The vim viewdoc plugin makes use of this.
555 man-db 2.6.0.2 (13 April 2011)
556 ==============================
558 Major changes since man-db 2.6.0.1:
563 * Fix a segfault when scanning links to empty pages.
565 * Once we've seen at least one record in a page's NAME section,
566 ignore any further records that don't include a whatis
567 description, as they tend to be noise.
569 man-db 2.6.0.1 (10 April 2011)
570 ==============================
572 Major changes since man-db 2.6.0:
577 * Ensure that the target of a symlink or .so chain is always recorded
580 * Read a user-specified configuration file even if HOME is unset.
582 man-db 2.6.0 (9 April 2011)
583 ===========================
585 Major changes since man-db 2.5.9:
590 * Fix build with versions of GNU ld that default to
591 --no-copy-dt-needed-entries.
593 * Fix failure to display manual pages in some encodings when
596 * Wrap long table cells in man(1), fixing test failures with groff
599 * If an explicit section is passed to man, then pages that match
600 that section exactly will be preferred over pages that only have
601 that section as a prefix.
603 * Fix a segfault when 'man -K' tries to display certain pages.
605 * Fix a segfault in some situations when processes are killed by
606 SIGHUP, SIGINT, or SIGTERM.
611 * As promised in the release notes for man-db 2.5.8, man-db no
612 longer ships its own copy of libpipeline
613 (http://libpipeline.nongnu.org/). You must build and install that
616 * Search the full manpath when expanding .so directives in manual
617 pages. As part of this, '.so name.1' should now work as well as
620 * lexgrog handles roff named glyphs and perldoc strings in NAME
623 * man no longer starts a pager if standard output is not a tty.
625 * The -s option to whatis and apropos now takes a colon- or
626 comma-separated list of sections, similar to 'man -S'.
628 * mandb error output is neater when stderr is not a terminal.
630 * Add basic support for the implementation of nroff/troff in the
631 Heirloom Documentation Tools. Title lengths are not properly set
632 as yet, and many features are untested.
634 * mandb removes cat* and NLS subdirectories of cat directories whose
635 corresponding man directories no longer exist.
637 * mandb forces SIGPIPE back to its default disposition on startup,
638 to avoid noisy output in case it was started in a context where
641 * SECTION entries in a user configuration file now override those in
642 the system configuration file, rather than appending to them.
644 * The default less prompt now includes "(press h for help or q to
645 quit)" to help novices find their way around.
647 * man-db may now be built to use Berkeley DB version 5
650 man-db 2.5.9 (17 November 2010)
651 ===============================
653 Major changes since man-db 2.5.8:
658 * Fix test failures on some systems. A change made in 2.5.8 was
659 overly sensitive to directory ordering.
661 * Configuring with --disable-nls works again.
663 man-db 2.5.8 (15 November 2010)
664 ===============================
666 Major changes since man-db 2.5.7:
671 * Fix assertion failure on 'man -l' with an uncompressed page and
672 any of --no-hyphenation, --no-justification, or a non-English
675 * 2.5.7 introduced a regression when running catman in some locales,
676 most notably in the C locale: while converting the output to
677 UTF-8, iconv was run after the compressor rather than before it.
678 This release fixes that.
683 * Add support for XZ-compressed manual pages, thanks to Darren Salt.
685 * Try underscore-separated subpages as well as hyphen-separated
686 ones, thanks to Tanguy Ortolo.
688 * Build libman and libmandb as shared libraries, reducing installed
689 footprint by about 200K (at least on GNU/Linux).
691 * libintl is no longer shipped with man-db. If your system does not
692 already have GNU libintl installed and you want man-db's messages
693 to be translated, then please install GNU libintl separately
694 (https://www.gnu.org/software/gettext/).
696 * Warnings about unrecognised locales are now suppressed if the
697 DPKG_RUNNING_VERSION environment variable is set (i.e. man-db is
698 running within a Debian package's maintainer script), since the
699 system locales are often out of sync with the C library in that
700 context. Thanks to the Debian Perl maintainers for the idea.
702 * Allow building with an external libpipeline
703 (http://libpipeline.nongnu.org/), which has been split out from
704 man-db. This is a transitional measure: a future version of
705 man-db will stop shipping its own copy of libpipeline.
707 * mandb should no longer repeatedly rescan manual page hierarchies
708 when a whatis entry turns into a broken link.
710 man-db 2.5.7 (16 February 2010)
711 ===============================
713 Major changes since man-db 2.5.6:
718 * If a subprocess exits before man manages to read all the output
719 from it, it now drains the output file descriptor rather than
720 immediately discarding it.
722 * If /usr/share/i18n/SUPPORTED is available, man attempts to use it
723 to ensure that LC_CTYPE is set to an appropriate locale for the
724 selected character set when invoking col. This fixes 'LANG=C man
725 -E UTF-8', as used by lintian.
727 * Don't run tests if cross-compiling.
729 * Fix possible mandb crash when MAN_MUST_CREATE is unset.
734 * man can now tell nroff to disable justification if the
735 --no-justification option is used.
737 * If the full path to an executable is given as an argument, man
738 will try looking up the corresponding manual page in the
739 appropriate part of the manpath, rather than just trying to format
740 the text of the executable as a manual page.
742 * In the GNU manual hierarchy layout, search man<sec><ext>
743 directories as well as just man<sec> (e.g. /usr/share/man/man3p as
744 well as /usr/share/man/man3).
746 * By request, man now prefers getting a page from the best manual
747 section over getting a page in the correct language.
749 * All programs now support a MAN_DEBUG environment variable which
750 can be used in place of the -d/--debug option. This is useful in
751 some situations where a program is being called deep in a process
754 * man-db now builds with heirloom-doctools, thanks to Diego Pettenò
757 * Add support for emulating pipe() with socketpair(), which is
758 faster on some systems; thanks to Werner Fink of SUSE.
760 * Cat pages are now always saved in UTF-8, and converted to the
761 proper encoding at display time, which means that cat pages can
762 now be saved regardless of locale. Note that a consequence of this
763 is that cat pages now include formatting information (e.g.
764 overstriking) and need to be run through col(1) before display.
766 man-db 2.5.6 (26 August 2009)
767 =============================
769 Major changes since man-db 2.5.5:
774 * Exact-section database lookups were incorrectly returning all
775 database entries whose section names were prefixes of the
776 requested section name. In some cases this could confuse mandb
777 into never believing that the database was up to date.
779 * Fix handling of pages with comma-separated names ("foo, bar,
780 baz") in their NAME sections, broken by a change in 2.5.0 (!)
781 to ignore manual page names containing spaces.
783 * Fixed a buffer overflow in the pipeline library's line-reading
784 functions. I don't believe this to be exploitable: at worst we
785 might believe that there's some garbage at the end of manual pages
786 (whose contents are untrusted anyway) and this bug typically
787 resulted in a failed assertion the next time anything tried to
790 * Plugged two substantial memory leaks in the pipeline library.
792 * whatis and apropos only display any given manual page, or pointers
795 * man now sets less(1)'s environment up correctly for manual pages
798 * manconv no longer confuses situations such as "this UTF-8
799 character is not representable in the target encoding" with "this
800 text is not in UTF-8".
805 * The default configuration file now includes section 0, used on
806 some systems to document C library header files.
808 * 'make check' now passes in the presence of a UTF-8-aware col, such
809 as that in util-linux-ng.
811 * The 'man -K' option is now supported to search the full text of
812 all manual pages. This was inspired by a similar option in the
813 other man package (currently at version 1.6f) currently maintained
814 by Federico Lucifredi and formerly by Andries Brouwer, but I took
815 advantage of man-db's pipeline library to implement it entirely
816 in-process, without having to start a separate grep process for
817 every manual page. In my tests with fairly typical searches across
818 variously all manual pages or just one section, man-db's
819 implementation ran between 3 and 10 times faster.
821 * Database directories are now only created when there are
822 corresponding manual page directories, not just because they're
823 mentioned in the configuration file.
825 * By default, man will now try to interpret pairs of manual page
826 names given on the command line as equivalent to a single manual
827 page name containing a hyphen (e.g. 'man foo bar' => foo-bar(1)).
828 This supports the common pattern of programs that implement a
829 number of subcommands, allowing them to provide manual pages for
830 each that can be accessed using similar syntax as would be used to
831 invoke the subcommands themselves. Suggested by H. Peter Anvin,
832 Federico Lucifredi, and others on the git mailing list.
834 * The build process is now quieter by default. Use './configure
835 --disable-silent-rules' or 'make V=0' if you don't like this or
836 your make(1) doesn't support the non-standard extension required.
838 * 'make install' now installs the manual.
840 * manconv understands a wider range of Emacs-style coding tags.
842 * Recommendations to change MAN_DB_CREATES, MAN_DB_UPDATES, and
843 MAN_CATS #define options in manconfig.h have been replaced by new
844 configure options --enable-automatic-create,
845 --disable-automatic-update, and --disable-cats respectively. Note
846 that automatic user database creation is now off by default, as it
847 is often too slow for the usefulness it adds; use
848 --enable-automatic-create to enable it.
850 man-db 2.5.5 (14 March 2009)
851 ============================
853 Major changes since man-db 2.5.4:
858 * Pages that declare a non-default encoding in their preprocessor
859 lines are now handled correctly.
861 * Fix an uninitialised variable when sorting manual page candidates
862 that could lead to excessive memory allocation and possible
868 * man-db's 'make check' now tests that all its own manual pages
869 format without errors or warnings from groff, to ensure a
870 better-quality release.
872 man-db 2.5.4 (24 February 2009)
873 ===============================
875 Major changes since man-db 2.5.3:
880 * Build fixes for systems without GNU Make, and for systems without
881 gettext; this successfully covers at least FreeBSD.
883 * The distclean target now works if po4a isn't installed.
885 * Exit as soon as possible if database writes return ENOSPC.
887 * lexgrog now stops on any unrecognised roff request, rather than
888 continuing and often littering the database with garbage.
890 * man no longer requires both standard input and standard output to
891 be terminals in order to use the terminal line length. The line
892 length from standard output is preferred if available.
894 * The manpath was built completely wrongly when multiple entries
895 were present in LANGUAGE: duplicates were handled strangely, and
896 languages were effectively iterated in reverse order. It should be
897 rather more sensible now.
902 * The MAN_KEEP_STDERR environment variable can now be used to
903 override man's default of discarding stderr when stdout is a
906 * Handling of terminal widths for cat pages is now configurable,
907 using the MINCATWIDTH, MAXCATWIDTH, and CATWIDTH configuration
910 * 'man -a' now detects duplicate manual page candidates more
911 reliably, and sorts them better.
913 * Belarusian, Estonian, Greek, Latvian, Lithuanian, Macedonian,
914 Romanian, Slovenian, and Ukrainian pages are now supported.
916 * man can now search for pages using regular expressions (with
917 --regex) or shell wildcards (with --wildcard). By default this
918 searches both page names and descriptions, like apropos, but if
919 the --names-only option is used then it searches page names only,
922 * man can now tell nroff to disable hyphenation if the
923 --no-hyphenation option is used.
925 * man-db already searched for manual pages in ../man and man
926 directories relative to each $PATH component; it now searches in
927 ../share/man and share/man directories too.
929 * Groff 1.20 was recently released, including the 'preconv'
930 preprocessor. Although man-db has supported preconv to some extent
931 since 2.4.4, man-db's configure now detects its presence and
932 infers that groff supports Unicode input using it; man also now
933 takes slightly better advantage of preconv than before.
935 * Per-locale groff macros are now loaded if possible, allowing us to
936 take advantage of such things as localised versions of predefined
937 strings and language-aware hyphenation. This only works with Groff
938 1.20.2 or better (not yet released), since earlier versions did
939 not allow us to suppress warnings in the event that the
940 appropriate macro file is not available.
942 man-db 2.5.3 (17 November 2008)
943 ===============================
945 Major changes since man-db 2.5.2:
950 * Cleaned up a number of possible crashes, memory leaks, and missing
951 error checks found by the Coverity Scan project.
953 * Fix build if MAN_CATS is undefined.
955 * If the LINGUAS environment variable is set while running
956 configure, it now controls building and installation of localised
957 manual pages as well as program translations.
959 * The LANGUAGE environment variable is now tokenised properly,
960 rather than only taking the first two characters of each element.
962 * Fix build if --disable-nls is used or iconv is not available.
964 * man now correctly propagates the exit code of whatis or apropos
965 when called with the -f or -k option respectively.
970 * A number of inconsistencies and readability problems with man-db's
971 own manual pages have been cleaned up, thanks mainly to Yuri
974 * Reduce the number of warnings emitted when using an unrecognised
977 * manconv and zsoelim are now called internally rather than by
978 executing external programs, to improve performance.
980 * man-db now uses GDBM (--with-db=gdbm) in preference to Berkeley DB
981 (--with-db=db or --with-db=dbN where N is 1, 2, 3, or 4) by
982 default, since hardware improvements have rendered Berkeley DB's
983 speed advantages negligible for our purposes and the relatively
984 frequent SONAME and on-disk format changes are not worth the
985 hassle. Distributors should note that if they follow this change
986 then they will need to arrange for databases to be rebuilt on
987 upgrade to this version.
989 * Manual pages may now be compressed with LZMA (although this is
990 probably only worth it for very large pages).
992 * Duplicate manual page hierarchies due to symlinks (e.g. /usr/man
993 -> /usr/share/man) are detected and removed from the search order.
995 * A locale modifier (e.g. @latin) in a directory name must now match
996 the locale if the former is set, in addition to the language and
999 * Bare .so includes (e.g. ".so foo.1" rather than ".so man1/foo.1")
1000 now work, although only within the same manual page hierarchy for
1003 man-db 2.5.2 (5 May 2008)
1004 =========================
1006 Major changes since man-db 2.5.1:
1011 * 'man -H' (without a browser argument) was completely broken in
1012 2.5.1 and is now fixed.
1014 * man no longer breaks in Japanese locales when using less as a
1020 * The --encoding option to man can now take a true character
1021 encoding rather than a *roff device; the latter was an unreliable,
1022 inflexible, and awkward way to select an output encoding. The old
1023 semantics are still supported for backward compatibility.
1025 * Whatis parsing stops at .ie or .if conditionals.
1027 * CJK locale specifications where the codeset component is
1028 equivalent to but not stringwise-identical to UTF-8 (e.g.
1029 zh_CN.utf8) are handled better.
1031 * man(1)'s OPTIONS section is ordered more comprehensibly.
1033 * apropos, lexgrog, man, mandb, and whatis ignore encoding
1034 conversion errors for the last possible encoding of the source
1035 page. This helps, for example, with pages including misencoded
1036 non-ASCII names of authors; it usually seems better to allow these
1037 pages to pass with small errors than to break them entirely.
1039 man-db 2.5.1 (28 January 2008)
1040 ==============================
1042 Major changes since man-db 2.5.0:
1047 * The manual is now built automatically, avoiding some ordering
1048 problems on 'make distclean'.
1050 * Manual pages are converted to the proper input encoding for troff
1051 output as well as nroff output.
1053 * The -t, -T, -X, and -Z options to man work again; in 2.5.0, they
1054 read input from stdin rather than from the manual page.
1056 * apropos and whatis no longer segfault when given an explicit
1059 * man now understands that groff's ascii device takes ASCII input,
1062 * man no longer discards stderr when writing to a file or a pipe;
1063 this was broken by an overenthusiastic change in 2.5.0.
1065 * manconv now falls back to the next encoding in its list if any
1066 characters in an entire 64KB block fail to decode using the
1067 current encoding, as was originally intended.
1069 * manconv is more careful about extracting coding: directives from
1072 * Ctrl-C and Ctrl-\ now work again at the prompt issued by 'man -a'.
1077 * There is a new --with-sections configure option to change the
1078 default value of SECTION in the configuration file.
1080 * Automake is now used to generate Makefiles. Among other things,
1081 this fixes VPATH builds and some bugs in dependency generation,
1082 and should allow building with non-GNU versions of make.
1084 * man-db now uses the Gnulib portability library, allowing the
1085 removal of earlier haphazard portability code. While this results
1086 in a somewhat larger source distribution, it makes man-db easier
1087 to maintain and should make it easier to build on systems to which
1088 the maintainer does not have access.
1090 * In the process of switching to Gnulib, the last vestiges of
1091 pre-C89 support have been removed; they were documented to be
1094 * If the MANROFFOPT environment variable is set, man now appends its
1095 value to the *roff command line.
1097 * man now accepts a --recode option to output a source manual page
1098 converted to a specified encoding.
1100 * For compatibility with System V, man accepts -s as an alias for
1101 -S, and permits sections to be comma-separated as well as
1104 * All programs, except the obsolete 'wrapper', now accept a --debug
1105 option. (accessdb, lexgrog, and zsoelim were lacking it.)
1107 * man now accepts a --warnings option to enable groff warnings.
1109 man-db 2.5.0 (7 October 2007)
1110 =============================
1112 Major changes since man-db 2.4.4:
1117 * mandb --quiet now suppresses several more warnings.
1119 * The output of apropos no longer includes duplicates when multiple
1120 search terms are used.
1125 * Databases are now created for non-English manual hierarchies. All
1126 database entries should be encoded in UTF-8; man-db converts from
1127 the character set of the manual hierarchy and to the character set
1128 specified in the user's locale as necessary.
1130 * Per-locale directory handling has been improved. Directories such
1131 as "fr.UTF-8" may be used for occasions when it is appropriate to
1132 specify the character set but not the country, and so a full
1133 locale name is inconvenient.
1135 * There is a new "manconv" program which can try multiple possible
1136 encodings for a file, thus allowing UTF-8 manual pages to be
1137 installed in any directory even without an explicit encoding
1140 * A decompression library is now in place. This allows man-db to use
1141 zlib to decompress gzipped files, and allows most of its uses of
1142 temporary files to be removed. The only remaining exceptions are
1143 cat file creation (which uses a temporary file in the cat tree
1144 rather than in /tmp) and viewing HTML manual pages (which uses a
1145 temporary directory). Otherwise, man-db should now work fine even
1146 with a read-only /tmp during system recovery.
1148 * Cat pages are now saved in the background while the pager is
1149 active, so man will only need to block afterwards if the pager is
1150 exited very quickly.
1152 * --with-* options are now available at configure time for most of
1153 the auxiliary program locations that you might want to override.
1155 * man now supports the MANPAGER environment variable, overriding
1158 * apropos/whatis output is now truncated to the terminal width by
1159 default. As with man, this may be overridden using the MANWIDTH
1160 environment variable.
1162 * lexgrog now ignores alleged manual page names containing spaces,
1163 as these usually indicate parsing errors or ill-formed NAME
1164 sections and they clutter up apropos output badly. I'm only aware
1165 of one legitimate counterexample, the Intercal compiler "oo, ick",
1166 which no longer appears to be known by that name anyway; let me
1167 know if there are any others.
1169 * man now discards stderr from formatting subprocesses when
1170 outputting to a pager, to avoid visual corruption from any error
1173 * If the MAN_KEEP_FORMATTING environment variable is set to any
1174 non-empty value, then man will preserve formatting characters in
1175 its output even when standard output is not a terminal. This may
1176 be useful for programs such as pinfo that call man and can
1177 interpret its formatted output.
1179 * Setting NOCACHE in the configuration file now prevents man from
1180 ever creating cat pages automatically.
1182 * apropos now accepts the --and option to display only items that
1183 match all the supplied keywords.
1185 man-db 2.4.4 (12 February 2007)
1186 ===============================
1188 Major changes since man-db 2.4.3:
1190 man-db is now revision-controlled using bzr
1191 (https://bazaar.canonical.com/). See docs/HACKING for the location
1192 of the archive (including all CVS history, imported by Canonical).
1197 * SECURITY: Fix a buffer overrun if using -H and the designated web
1198 browser (argument to -H or $BROWSER) contains multiple %s
1199 expansions. This is CVE-2006-4250.
1201 * Ignore SIGINT and SIGQUIT while running subprocesses, so that
1202 typing Ctrl-C doesn't kill less (broken in 2.4.3).
1204 * Similarly, ignore SIGPIPE in subprocesses.
1206 * Various fixes to SIGCHLD handling in pipeline library, preventing
1207 "waitpid failed: No child processes" errors.
1209 * Skip "exec" in configuration file commands (perhaps left over from
1210 old installations), which the pipeline execution library cannot
1216 * Add support for Chinese in the --enable-mb-groff case.
1218 * lexgrog now handles pages with multiple descriptions more
1219 usefully, by displaying one description per output line.
1221 man-db 2.4.3 (3 July 2005)
1222 ==========================
1224 Major changes since man-db 2.4.2:
1229 * Avoid problems creating databases on systems with badly broken
1230 clocks set before the Unix epoch.
1232 * Fix detection of decompression programs, so that man doesn't
1233 attempt to execute man pages when it doesn't have a corresponding
1234 decompression program.
1239 * apropos and whatis now accept a --section option to restrict their
1240 search to a particular manual section.
1242 * The pipeline execution library is now used for most calls to
1243 external programs, avoiding use of the shell.
1245 * When stdout is not a terminal, man pages will be formatted in
1246 plain text without the use of backspace or ANSI formatting
1249 * When invoking apropos (man -k) or whatis (man -f) as external
1250 programs, man now only passes through command-line options
1251 understood by the respective programs.
1253 * Improve handling of locales with versions and/or modifiers.
1255 * Add support for Croatian, Galician, Indonesian, Slovak, and
1258 * man-db may now be built to use Berkeley DB version 4
1261 Compatibility notes:
1262 --------------------
1264 * Setting the line length of manual pages now requires groff 1.18 or
1267 man-db 2.4.2 (20 September 2003)
1268 ================================
1270 Major changes since man-db 2.4.1:
1275 * SECURITY: Fix a number of buffer overruns in configuration file
1276 handling, ultimate source location, and MANPATH processing. This
1277 is CVE CAN-2003-0620.
1279 * SECURITY: Restrict the use of the DEFINE directive in ~/.manpath
1280 to code running with dropped privilege. Previously, the
1281 'compressor' variable could be used to run arbitrary code with
1282 raised privilege. This is CVE CAN-2003-0645.
1284 * Make sure to initialize mandata structures to zero. The uses of
1285 uninitialized memory resulting from this had been leading to
1288 * Drop privileges in order to be able to read pages in
1289 non-world-readable user manpaths while setuid.
1291 * man can be built with --disable-setuid again.
1293 * man's locale support has been revamped. The encoding of source
1294 manual pages is no longer related to the encoding of the input
1295 passed to *roff or to *roff's terminal output device. These
1296 frequently differ, especially in UTF-8 locales but in other
1297 circumstances as well, and a "just send 8-bit data" approach is no
1298 longer adequate. If you are using a version of groff with the
1299 Debian multibyte patch applied, pass the --enable-mb-groff option
1302 * When using GDBM, accessdb and apropos did not return database
1303 entries in sorted order, since GDBM's key traversal interface is
1304 not lexicographically ordered. The database layer has been
1305 corrected to cope with this.
1307 * Directories found in strange places in manual hierarchies don't
1313 * man now calls mandb to update databases rather than doing it
1314 itself. This leaves cat pages as the sole remaining reason for man
1317 * The "undocumented" message is only displayed if a corresponding
1318 executable is found on the $PATH.
1320 * All programs that read ~/.manpath now take a -C option to cause
1321 them to read a different user configuration file instead.
1323 * The --enable-debug option to configure has been removed. man-db's
1324 Makefiles now always calculate full dependencies for C files.
1326 * mandb caches the contents of directories, significantly speeding
1327 up the purging of obsolete entries.
1329 * mandb now knows how to purge database entries corresponding to
1330 removed stray cat pages.
1332 In addition, a pipeline execution library has been written, which
1333 will make it possible to eliminate all or almost all use of the
1334 shell in a future release. Unfortunately, time pressures due to the
1335 security issues above meant that the pipeline library was not well
1336 enough tested for use in this release, so it is present but unused.
1337 That will be the first item for 2.4.3.
1339 man-db 2.4.1 (22 December 2002)
1340 ===============================
1342 Major changes since man-db 2.4.0:
1344 The man-db CVS repository has moved from sourceforge.net to
1345 savannah.nongnu.org.
1350 * Don't enter an infinite loop when the SYSTEM environment variable
1353 * man doesn't segfault when trying to follow a broken symlink.
1355 * mandb no longer corrupts databases when deleting entries that are
1358 * Prevent a possible buffer overflow when encountering large multi
1361 * Man page names are escaped when globbing, so [(1) can now be found
1362 even if the database is not up to date.
1364 * Correct an access() check that led to 'man -X -l -' producing no
1367 * lexgrog can now cope with man pages containing only a .so link.
1369 * Manual hierarchies with a specific encoding are put into the
1370 search path in the correct order. A bug in $LANGUAGE handling had
1371 formerly meant that 'de' would take precedence over 'de_DE.UTF-8'.
1376 * man's behaviour when searching for page names that begin with a
1377 digit has been made more intuitive, as has its treatment of
1378 section names that are extensions of ones mentioned in the
1379 configuration file but are not themselves explicitly named as
1382 * The default line length for pages formatted for terminal output
1383 has been increased (reducing margin size) to match the default in
1386 * Proofread the manual.
1388 * The -w flag to man has been changed to display the name of only
1389 the source nroff file. A -W flag has been introduced which
1390 displays the name of the cat file as well. If both flags are given
1391 to man, it will behave as before.
1393 * If bzip2 is installed, pages compressed with bzip2 can now be
1396 * Add support for displaying an additional message when no man page
1397 is found, which can be used to direct users to a generic
1398 "undocumented" page.
1400 * The manual hierarchy layout will now be guessed where possible if
1401 an explicit --enable-mandirs argument is not passed to configure.
1403 man-db 2.4.0 (26 June 2002)
1404 ===========================
1406 Major changes since man_db-2.3.20:
1408 I have changed the package name to man-db, as the underscore was
1411 Upgrading from version 2.3.x:
1412 -----------------------------
1414 The database format has changed slightly, so you will need to run
1415 'mandb --create' after installing the new version to rebuild your
1416 databases from scratch. (Distribution packages should do this
1417 automatically for system databases.)
1422 * The GNU nroff test in configure now works when /bin/sh is ash.
1424 * When scanning pages for NAME sections, lexgrog and mandb no longer
1425 accidentally eat the line after each occurrence of the no-op
1428 * 'man --local' drops privileges throughout to avoid problems with
1429 non-world-readable home directories.
1431 * Newly created cat directories are chowned to the man user when
1434 * 'man --html' no longer creates its temporary file with raised
1435 privileges, so that it now works with a setuid man.
1437 * man detects preprocessors correctly when setuid.
1439 * Various segfault fixes: explicitly null-terminate data returned by
1440 the Berkeley DB library to avoid some rare crashes; don't reuse a
1441 freed pointer in some cases of pages with multiple names; handle
1442 MANPATHs containing '::' more safely.
1444 * Correctly parse manual pages using DOS line-ending conventions.
1446 * Work around a misfeature in Berkeley DB: it pauses for several
1447 seconds if asked to read a zero-length database, on the assumption
1448 that somebody is still writing the metadata page. man is generally
1449 better off just ignoring the database in this case.
1451 * Work around corrupted databases in the case where the nextkey
1452 pointer chain contains a loop.
1457 * man looks in the filesystem followed by the database, rather than
1458 the other way round. Unix filesystems are quite good databases for
1459 this purpose, and the man database is only superior when looking
1460 up names that don't have associated links in the filesystem.
1462 * 'apropos --wildcard --exact' makes sure wildcards match an entire
1463 description or page name, unlike 'apropos --wildcard' which may
1464 match on word boundaries too.
1466 * man's page-searching code has been substantially rearranged, and
1467 now only starts displaying pages when it has finished searching
1468 for candidates. This allows pages to be sorted more sensibly.
1470 * Manual pages are formatted in UTF-8 if that is the current
1471 locale's character set. The -E option is now available to force a
1472 particular encoding. Note that some versions of (e.g.) less have
1473 problems displaying UTF-8 in conjunction with backspace
1474 characters; groff 1.18 should alleviate this by using ANSI colour
1477 * The less prompt string sets -PM as well as -Pm.
1479 * Invoking man from within less now sets the correct page title in
1482 * Unless the --match-case option is used, man will search for pages
1485 * Update the mechanism for setting the line length so that it also
1486 works with groff 1.18.
1488 * The -R switch is added to the less prompt string, which is needed
1489 to display the ANSI colour escapes generated by groff 1.18
1492 * The $MANLESS environment variable may be used to override the
1493 normal creation of the less prompt string.
1495 * Translation updates for French, German, and Spanish, and a new
1496 Catalan translation. See man/THANKS.
1498 man_db-2.3.20 (7 September 2001)
1499 ================================
1501 Major changes since man_db-2.3.19:
1506 * A typo in 2.3.19 caused character sets for many languages to be
1507 detected incorrectly. This especially affected multibyte
1510 * Long options in the environment variable LESS are handled
1513 * When checking if cat pages need to be updated, check for different
1514 timestamps rather than whether the cat page is newer, as otherwise
1515 we were confused by tools like tar that preserve timestamps in
1516 their archives. Each cat page is now set to have the same mtime as
1517 its corresponding man page.
1519 * Look up the correct character set each time a page is displayed
1520 rather than just the first time, in case pages in several
1521 different character sets are viewed in a single session.
1523 * groff requests are no longer assumed to be case-insensitive when
1524 scanning for preprocessors, so for example mdoc's .Eq request
1525 isn't mistaken for the .EQ which introduces eqn commands.
1527 * Escape arguments passed to the shell that might contain dangerous
1530 * Avoid an infinite loop if the LANGUAGE environment variable is set
1533 * The --create option to mandb now implies --no-purge.
1535 * Temporary files are handled with more secure permissions.
1540 * Use a variant of mkstemp() rather than tempnam(), to avoid classic
1541 race conditions. (I don't believe the races were usefully
1544 * Tolerate whatis entries in a database that point to themselves.
1546 * Detect more translations of the NAME section.
1548 * Add examples of man pages written in POD and SGML.
1550 * lexgrog is now installed in /usr/bin by default, with proper
1551 argument parsing, an improved output format, and a man page. It is
1552 expected to be used by programs that need to validate man pages.
1554 * The -H (--html) option to man is now compiled in by default, and
1555 supports the BROWSER specification (as documented at
1556 http://www.tuxedo.org/~esr/BROWSER/ and amended at
1557 https://www.dwheeler.com/browse/secure_browser.html).
1559 man_db-2.3.19 (5 July 2001)
1560 ===========================
1562 Major changes since man_db-2.3.18:
1567 * The user configuration file ~/.manpath is no longer trusted when
1568 deciding whether to drop privileges. In the process, user cat
1569 directory handling has been improved.
1571 * Commands of the form 'man -S "" foo' formerly emptied the list of
1572 acceptable sections and then searched the database anyway, and
1573 commands of the form 'man -S ::: foo' segfaulted. Both now use the
1574 standard list of sections.
1576 * The HUP and TERM signals are now handled better.
1578 * straycats processing invokes 'col -bx' rather than 'col-bx'.
1580 * The root user is now correctly allowed to update databases in
1583 * apropos and whatis no longer enter infinite recursion if a
1584 database contains an entry pointing to itself.
1589 * When compiled with --enable-setuid, man and mandb can be installed
1590 non-setuid. In this mode, they will be unable to write cat pages
1591 in system directories or to modify system databases, but will
1592 otherwise operate correctly. This allows a single binary package
1593 to support setuid and non-setuid modes of operation.
1595 * The ordering of manual sections is read from SECTION directives in
1596 the configuration file rather than being hard-coded.
1598 * The MANDB_MAP configuration file directive is documented more
1601 * Multiple whatis entries separated by commas, break requests,
1602 and/or paragraph requests are handled more intelligently.
1604 * Fill control requests (.nf and .fi) cause lexgrog to assume a
1605 break at each newline.
1607 * Duplicate manpath entries (often generated in the course of
1608 national language support) are removed, so that 'man -a' works
1611 * man_db's binaries are installed unstripped by default.
1613 * Since supporting certain layouts of manual page hierarchies causes
1614 problems for others, the layout is now selectable via configure.
1615 The default is to try all layouts.
1617 * man only does an on-the-fly update of the database caches when the
1618 --update option is given.
1620 * Manual pages are displayed with a line length appropriate to the
1621 current terminal. If a non-standard line length is used (i.e. the
1622 terminal is not between 66 and 80 characters wide) then cat pages
1625 * mandb tries to purge obsolete entries from its databases. Using
1626 the --create flag should now usually only be necessary in cases of
1627 database corruption.
1629 man_db-2.3.18 (14 May 2001)
1630 ===========================
1632 Major changes since man_db-2.3.11:
1634 man_db-2.3.18 is an interim release under new maintenance by Colin
1635 Watson, merging much of the work done by former maintainers (Graeme
1636 Wilford and Fabrizio Polacco). It incorporates several years of
1637 changes made in the Debian GNU/Linux distribution's package of
1640 Here are a few highlights, with the names of the maintainers
1641 responsible for them. As I am documenting after the fact of other
1642 people's changes of a few years ago, I have undoubtedly missed a
1643 number of fixes and improvements; I promise to keep track of these
1644 as I go along in future.
1649 * Multiple security fixes, including better handling of temporary
1650 files, a format string vulnerability fix, and more careful
1651 dropping of privileges when running setuid. [Fabrizio, Colin]
1653 * Databases no longer disappear temporarily while they are being
1654 regenerated. [Fabrizio]
1656 * Corrected handling of locale environment variables. Setting
1657 several colon-separated locales in $LANGUAGE also works now.
1660 * whatis and apropos are more careful about the possibility of a
1661 corrupted database. [Fabrizio, Colin]
1666 * If root has private manual hierarchies, cat pages generated from
1667 them are no longer chowned to a less-privileged user. [Wilf]
1669 * Rewrote configuration file handling, adding DEFINE directives to
1670 set paths to external programs. The configuration file is now
1671 called man_db.conf. [Wilf]
1673 * Support FHS paths (/usr/share/man and /var/cache/man) in
1674 preference to FSSTND paths (/usr/man and /var/catman). [Fabrizio]
1676 * Converted from catgets to GNU gettext for national language
1677 support. [Fabrizio, Colin]
1679 * Several new and improved localized message catalogues and
1680 translated man pages. [Fabrizio, Colin, other contributors]
1682 * Added accessdb utility, which displays the contents of a manual
1683 page database. [Fabrizio]
1685 * Added user configuration file ~/.manpath, with the same syntax as
1686 the global configuration file. [Fabrizio]
1688 * Leading or trailing colons in the MANPATH environment variable
1689 cause the manpath derived from configuration files to be prepended
1690 or appended respectively. A double colon in the middle of the
1691 environment variable causes the configuration file manpath to be
1692 inserted between the colons. [Fabrizio]
1694 * Added experimental -H and -Thtml options to take advantage of
1695 groff's new HTML driver. [Fabrizio]
1697 * lexgrog now scans manual pages to guess which preprocessors are
1700 * Create cat directories on the fly if necessary. [Fabrizio]
1702 * Supply a wrapper which explicitly drops privileges to uid man if
1703 man or mandb is run as root. In the future, splitting out setuid
1704 functions into a separate helper process may remove the need for
1705 this paranoia. [Fabrizio]
1707 * Add --test option to mandb, which merely reports errors in manual
1708 page hierarchies rather than actually creating or updating a
1709 database. [Fabrizio, Colin]
1711 * Manual pages may now be symlinks outside the mantree. This should
1712 pose no significant security concerns, and utilities such as GNU
1713 stow create such symlinks. [Colin]
1715 * Deprecate whatis references for man, and display a warning if
1716 displaying a page relies on going through a whatis reference. They
1717 often lead to confusingly non-obviously-deterministic behaviour,
1718 and guaranteeing that man will honour them even when the database
1719 is out of date causes performance problems. [Colin]
1721 man_db-2.3.11 (21 September 1995)
1722 =================================
1724 Major changes since man_db-2.3.10:
1726 * The man_db manual is bundled in source form.
1728 * Components of $PATH not in the config file were checked for
1729 `man' subdirectories. Now they are also checked for `../man'.
1731 * Untarring a new manual page (with a timestamp older than the
1732 relative cat file) over the original did *not* cause man/catman
1733 to reformat the replacement. This is changed. As a side effect,
1734 untarring an unchanged man file over the original will also cause
1737 man_db-2.3.10 (13 July 1995)
1738 ============================
1740 Major changes since man_db-2.3.5:
1745 * Global databases were not owned by setuid owner (if applicable).
1746 As a consequence only mandb could update the databases unless
1747 man was run by superuser. Stupid bug.
1749 * The keyword passed to apropos _never_ matched the first word
1752 * FAVOUR_STRAYCATS code (if enabled), did not work properly.
1754 * zsoelim did not work as advertised.
1759 * Man removes its temporary files upon abnormal termination.
1761 * apropos does proper word matching rather than the fuzzy
1762 matching of 2.3.5. eg. supplying any of the keywords:
1763 `ld.so', `a.out', `dynamic', `linker' or `loader' will match
1764 the following entry:
1766 ld.so (8) - a.out dynamic linker/loader
1768 whereas `a.out' and `loader' used to fail.
1770 * man/whatis/apropos return with exit code 16 if manual
1771 page/file or keyword is not matched. Previously exit code 0
1772 was used making it difficult for callers to know if the lookup
1775 * addition of German message catalogue.
1777 * `apropos' and `man -k' do POSIX specified regex matching rather
1778 than keyword searches if the environment variable POSIXLY_CORRECT
1781 * added glob-only support of native system manual hierarchies
1782 on HP-UX, OSF and Solaris operating systems. Improved the
1783 whatis parsing code to cope with majority of HP-UX manual pages.
1785 * ported to NeXTstep.
1787 man_db-2.3.5 (21 April 1995)
1788 ============================
1790 Major changes since man_db-2.2.1:
1792 Added support for...
1793 --------------------
1795 * Non-standard section names i.e. multi-character
1797 * Compressed manual pages.
1798 A new utility `zsoelim' is included to correctly handle nroff
1799 .so requests that point to a file which has been compressed.
1801 * Compressed stray cats.
1802 By definition, stray cats are not re-creatable as they have no
1803 relative source manual page. As they may have non-default
1804 compression extensions and may reside on read-only media,
1805 stray cats have the same compression support as manual pages.
1807 * FSSTND proposed `extension' support.
1808 Specific package manual pages may be installed in the standard
1809 sections but with a package-unique extension appended as in
1810 exit(3tcl) - ../man/man3/exit.3tcl. Using the command
1814 would then display an exit manual page with a tcl extension, if
1815 available. Of course, `man 3tcl exit' works as always.
1817 * FSSTND proposed NLS man subdirectories.
1818 Of the form .../man/<locale>/man<sec>/
1820 * NLS message catalogue hooks.
1821 Provision has been made for the programs to emit their messages in
1822 a language dependent form.
1824 * `whatis' referred manual pages.
1825 Some manual pages contain relevant information for commands or
1826 programs that would not otherwise reference the page.
1827 The `whatis' part of the manual page is used to create virtual
1828 links to these pages by all of the names mentioned within it.
1829 Examples include names such as `.' and `:' referencing the local
1833 Used to pre-format the manual pages into cat pages.
1835 * Operating systems other than Linux.
1836 man_db has been reported to compile on the following platforms:
1838 Linux, SunOS, Solaris, Ultrix, OSF, HP-UX, AIX, IRIX
1840 (although portability does not extend to support of native
1841 manual tree structures on some of these systems, eg. HP-UX)
1843 * Berkeley DB library routines.
1844 This compliments the support of both gdbm and ndbm which already
1845 existed. DB databases may be shared across platforms.
1847 * $MANOPTS environment variable.
1848 The environment variable MANOPTS may be set to any string in
1849 command line option/argument format. It is parsed by man(1) prior
1850 to its actual command line.
1852 * Per manual hierarchy cat directory locations.
1853 It is possible to redirect your cat pages to other directories or
1854 even other file systems.
1856 * Per manual hierarchy nroff/[tg]roff format scripts.
1857 Ability to create custom formatter scripts that are called by
1858 man(1) to enable format/display of non-standard manual pages or
1859 manual pages requiring a special macro package.
1861 * Extension of `man -l'.
1862 Arguments following -l are interpreted as local files requiring
1863 format and display. Extensions are:
1865 `man -l -' formats and displays stdin.
1866 `man -l foo.1.gz' decompresses, formats and displays foo.1.gz.
1868 * Latin1 manual pages/choice of nroff output device.
1870 * Viewing of ASCII manual pages formatted for a latin1 output device
1871 on a 7 bit ASCII terminal (-7).
1873 * Whatis and apropos utilities support regex and wildcard matching.
1876 Shell script utility that will find and display duplicated manual
1877 pages found across manual page hierarchies.
1880 Shell script utility to create appropriate cat directories after
1881 installation and setup.
1883 Conceptual improvements
1884 -----------------------
1886 * Replacement of single database with multiple modular db's.
1887 Easier integration of additional information into the databases in
1890 * Both user and global databases share the same name:
1894 where <db-type> could be `bt', `db' or `pag' and `dir'.
1896 * Databases contain `whatis' text.
1897 Makewhatis and text whatis databases are redundant, although
1898 whatis and apropos will use the text whatis database for information
1899 if they cannot read from a relevant index database.
1901 * straycats handled without need for `placeholders'.
1903 * Friendly less(1) prompt.
1904 If man(1) uses less(1) as its pager (dependent on both static and
1905 dynamic factors), the prompt is modified to suit the manual page
1906 being displayed. The modification performed is also changeable by
1910 man_db has a manual that covers the setup, maintenance and use of
1911 a generic online manual page system.
1913 * Modes of operation.
1914 The man_db utilities can be compiled with various modes of
1915 operation in mind. Eg. man can be stopped from updating databases
1916 and/or creating cat files in situations where security is extremely
1917 important. See the man_db manual for details.
1922 * Background compression/saving of cat files.
1923 Cat files are compressed and saved in the background, whilst the
1924 user is able to browse the formatted page directly.
1926 * Merge of straycats and makewhatis into mandb.
1927 While mandb has slowed, it now incorporates makewhatis and straycats
1928 functionality and is much faster as a whole. 2.0a2 used grep/awk,
1929 2.2 used C regex and 2.3 now uses lex sourced C to strip out the
1930 whatis information from the raw man or cat files.
1932 * Berkeley DB support.
1933 Provides lower database initialisation overhead as compared with
1936 * Extremely fast whatis(1) searches.
1937 whatis(1) uses keyed database lookups to retrieve whatis strings
1938 for standard (non regex/wildcard) searches.
1943 * Correct handling of $MANSECT.
1944 The environment variable MANSECT is no longer ignored.
1946 * Acknowledgement of $MANPATH order.
1947 manpath elements are searched in the order specified.