Imported Upstream version 2.8.4
[platform/upstream/man-db.git] / NEWS
1 man-db 2.8.4 (27 July 2018)
2 ===========================
3
4 Major changes since man-db 2.8.3:
5
6         Fixes:
7         ------
8
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
12           decompressors.
13
14         * Fix invalid syntax in tmpfiles.d/man-db.conf when configured with
15           --disable-cache-owner.
16
17         * Make seccomp sandbox allow sched_getaffinity, sometimes used by
18           xz.
19
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).
25
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.
30
31         * Some versions of ESET File Security call msgget and msgsnd; if
32           this program is in use, then allow those.
33
34 man-db 2.8.3 (5 April 2018)
35 ===========================
36
37 Major changes since man-db 2.8.2:
38
39         Fixes:
40         ------
41
42         * Make seccomp sandbox allow madvise, since that's used by lbzip2.
43
44         * Make seccomp sandbox allow kill and tgkill outright, since groff
45           uses kill to pass on signals to its child processes.
46
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.
50
51         * Fix version check in locale macro loading to tolerate groff
52           release candidates.
53
54         * man now only changes working directory in child processes, so
55           never fails due to being unable to change back to its original
56           working directory.
57
58         * accessdb, apropos, and lexgrog no longer emit spurious gettext
59           headers in their --help output when localised.
60
61 man-db 2.8.2 (28 February 2018)
62 ===============================
63
64 Major changes since man-db 2.8.1:
65
66         Fixes:
67         ------
68
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
71           needed by xz.
72
73         * Make seccomp sandbox allow ioctl(fd, TIOCGWINSZ), since that's used
74           by musl.
75
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.
79
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.
83
84         * Interpret EFAULT from seccomp_load as meaning that seccomp is
85           unavailable, since this can be returned by some versions of
86           qemu-user.
87
88 man-db 2.8.1 (9 February 2018)
89 ==============================
90
91 Major changes since man-db 2.8.0:
92
93         Fixes:
94         ------
95
96         * Fix seccomp sandbox build on Linux/POWER.
97
98         * Fix manconv execution under seccomp when man is installed setuid.
99
100         * Make seccomp sandbox allow mremap (used by iconv, for example).
101
102         Improvements:
103         -------------
104
105         * configure now has a --without-libseccomp option to disable the use
106           of seccomp even if the library is available.
107
108 man-db 2.8.0 (4 February 2018)
109 ==============================
110
111 Major changes since man-db 2.7.6.1:
112
113         Fixes:
114         ------
115
116         * Fix locale macro loading for Chinese to load the macro file
117           corresponding to just the language part of the user's locale.
118
119         * Honour --enable-cache-owner in generated systemd tmpfiles snippet
120           rather than hardcoding "man".
121
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.
125
126         * Fix a segfault in 'man -D --help'.
127
128         Improvements:
129         -------------
130
131         * Treat "\(en" as another synonym for "\-" in NAME sections.
132
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
139           useful.
140
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
143           bug.
144
145         * man now falls back to cat if the compile-time default pager is not
146           executable.
147
148 man-db 2.7.6.1 (12 December 2016)
149 =================================
150
151 Major changes since man-db 2.7.6:
152
153         Fixes:
154         ------
155
156         * Don't chmod CACHEDIR.TAG if it doesn't exist.
157
158         * Correct installation of Swedish manual pages.
159
160 man-db 2.7.6 (11 December 2016)
161 ===============================
162
163 Major changes since man-db 2.7.5:
164
165         Fixes:
166         ------
167
168         * Fix build warnings with Perl 5.22.
169
170         * Document that 'man -K' searches page source, not rendered text.
171
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.
177
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.
187
188           Maintainers of distribution packagers should take care to review
189           their installation rules in light of this change.
190
191           As far as I know this has no CVE ID, but it is described here:
192
193             https://www.halfdog.net/Security/2015/SetgidDirectoryPrivilegeEscalation/
194
195         * Fix manual page translation infrastructure to render tables
196           correctly with po4a 0.47.
197
198         Improvements:
199         -------------
200
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.)
204
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.
208
209 man-db 2.7.5 (6 November 2015)
210 ==============================
211
212 Major changes since man-db 2.7.4:
213
214         Fixes:
215         ------
216
217         * Adjust line number when inserting extra roff input.
218
219         * Disable roff input insertion with --recode.
220
221         * Build text manual with LC_ALL=C, to help reproducible builds.
222
223 man-db 2.7.4 (8 October 2015)
224 =============================
225
226 Major changes since man-db 2.7.3:
227
228         Fixes:
229         ------
230
231         * Fix crash when eliminating manpath duplicates if canonicalising a
232           manpath entry fails.
233
234         * Fix a build system bug that sometimes caused substitutions in
235           manual pages to be left unexpanded.
236
237         * man exits with status 3 rather than 0 if its formatting command
238           exits non-zero, even if its display command exits zero.
239
240         * man honours MANWIDTH in conjunction with the -Z option, to make it
241           easier to diagnose warnings in manual pages.
242
243 man-db 2.7.3 (9 September 2015)
244 ===============================
245
246 Major changes since man-db 2.7.2:
247
248         Fixes:
249         ------
250
251         * Tools that consider the terminal line length now try the
252           TIOCGWINSZ ioctl on /dev/tty as well as standard input/output.
253
254         * mandb does a better job of coping with index files having
255           incorrect ownership.
256
257         * Squeeze blank lines internally rather than relying on the pager
258           supporting the -s option.
259
260         * Fix use-after-free in ult_src.
261
262         * Fix crash when running from a missing and unreadable current
263           directory, such as an orphaned subdirectory of /proc.
264
265         * Restore the ability to use 'man -a' noninteractively.
266
267 man-db 2.7.2 (16 August 2015)
268 =============================
269
270 Major changes since man-db 2.7.1:
271
272         Fixes:
273         ------
274
275         * 'man -k' and 'man -f' now pass any provided -l option through to
276           the underlying apropos/whatis programs.
277
278         * apropos and whatis no longer truncate names if long output was
279           requested.
280
281         * The database handle is no longer stored in a global variable,
282           fixing a class of possible double-close bugs.
283
284 man-db 2.7.1 (7 November 2014)
285 ==============================
286
287 Major changes since man-db 2.7.0.2:
288
289         Fixes:
290         ------
291
292         * Various portability fixes for Solaris, contributed by Peter Bray.
293
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.)
297
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.
300
301 man-db 2.7.0.2 (28 September 2014)
302 ==================================
303
304 Major changes since man-db 2.7.0.1:
305
306         Fixes:
307         ------
308
309         * Be more careful to avoid using or double-closing closed database
310           handles.  Fixes test suite failures on some systems.
311
312         * Patch the fdutimens function imported from Gnulib to work around a
313           libc bug in GNU/Hurd.
314
315 man-db 2.7.0.1 (24 September 2014)
316 ==================================
317
318 Major changes since man-db 2.7.0:
319
320         Fixes:
321         ------
322
323         * Fix test suite in the case where the system supports
324           high-precision timestamps but the file system containing the build
325           directory does not.
326
327 man-db 2.7.0 (22 September 2014)
328 ================================
329
330 Major changes since man-db 2.6.7.1:
331
332         Upgrading from previous versions:
333         ---------------------------------
334
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
339         databases.)
340
341         Fixes:
342         ------
343
344         * lexgrog now filters terminal escape sequences out of cat pages
345           before trying to parse them.
346
347         * Tools that consider the terminal line length now prioritise the
348           COLUMNS environment variable above the TIOCGWINSZ ioctl.
349
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
353           2.5.4.
354
355         Improvements:
356         -------------
357
358         * Ship a systemd tmpfiles snippet to clean up old cat files after a
359           week.
360
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
367           databases.
368
369         * Timestamps of manual pages are also now stored in the database
370           with high precision and compared accordingly.
371
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'.
375
376         * 'man -H' shows a better error message if no browser is configured.
377
378         * zsoelim is now installed in $pkglibexecdir, to avoid clashes with
379           other packages.
380
381 man-db 2.6.7.1 (10 April 2014)
382 ==============================
383
384 Major changes since man-db 2.6.7:
385
386         Fixes:
387         ------
388
389         * Remove test suite dependency on realpath(1).
390
391 man-db 2.6.7 (10 April 2014)
392 ============================
393
394 Major changes since man-db 2.6.6:
395
396         Fixes:
397         ------
398
399         * Fix a test failure when configured with --enable-undoc.
400
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.)
404
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.
408
409 man-db 2.6.6 (23 January 2014)
410 ==============================
411
412 Major changes since man-db 2.6.5:
413
414         man-db is now revision-controlled using git (https://git-scm.com/).
415         See docs/HACKING for the location of the repository.
416
417         Fixes:
418         ------
419
420         * apropos's --and option now works again; it was broken by the
421           optimisations in 2.6.2.
422
423         * Restore compatibility with Automake 1.10.
424
425         * Improve support for translation of common elements of help
426           messages.
427
428         * Don't issue error messages when the database refers to a page that
429           no longer exists.
430
431         * Pass macro and hyphenation language tags to groff again (broken in
432           2.6.5).
433
434         Improvements:
435         -------------
436
437         * ./configure --with-override-dir=OVERRIDE arranges to look for
438           manual pages in DIR/OVERRIDE before each path element DIR.
439
440 man-db 2.6.5 (27 June 2013)
441 ===========================
442
443 Major changes since man-db 2.6.4:
444
445         Fixes:
446         ------
447
448         * man's --warnings option works again on systems with versions of
449           groff that support it (broken in 2.6.4).
450
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.
454
455 man-db 2.6.4 (23 June 2013)
456 ===========================
457
458 Major changes since man-db 2.6.3:
459
460         Fixes:
461         ------
462
463         * man(1) and catman(8) now document the default section list set at
464           configure time.
465
466         * Build fixes for Automake 1.13.
467
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
472           now fixed.
473
474         Improvements:
475         -------------
476
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.
481
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.
485
486         * MANPATH entries now undergo glob(7)-style wildcard expansion,
487           allowing entries such as "/opt/*/man".
488
489 man-db 2.6.3 (17 September 2012)
490 ================================
491
492 Major changes since man-db 2.6.2:
493
494         Fixes:
495         ------
496
497         * Build fixes for glibc 2.16 and Automake 1.12.
498
499 man-db 2.6.2 (18 June 2012)
500 ===========================
501
502 Major changes since man-db 2.6.1:
503
504         Fixes:
505         ------
506
507         * apropos prints an error message and returns non-zero when it finds
508           no matches.  (Regression introduced in 2.5.1.)
509
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.
512
513         Improvements:
514         -------------
515
516         * apropos is much faster when run with many arguments.
517
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.
521
522 man-db 2.6.1 (14 February 2012)
523 ===============================
524
525 Major changes since man-db 2.6.0.2:
526
527         Fixes:
528         ------
529
530         * --with-db=db* and --with-db=ndbm compile again.
531
532         * Translated manual pages are no longer displayed starting with a
533           spurious blank line.
534
535         * straycats tries to ensure that col is invoked with LC_CTYPE set to
536           a UTF-8 locale.
537
538         * Fix double-free in mandb when encountering a symlink outside the
539           manual hierarchy, thanks to Peter Schiffer.
540
541         Improvements:
542         -------------
543
544         * mandb creates a cache directory tag, per
545           http://www.brynosaurus.com/cachedir/ ("Cache Directory Tagging
546           Standard").
547
548         * Add support for Lzip-compressed manual pages, thanks to Matias A.
549           Fonzo.
550
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.
554
555 man-db 2.6.0.2 (13 April 2011)
556 ==============================
557
558 Major changes since man-db 2.6.0.1:
559
560         Fixes:
561         ------
562
563         * Fix a segfault when scanning links to empty pages.
564
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.
568
569 man-db 2.6.0.1 (10 April 2011)
570 ==============================
571
572 Major changes since man-db 2.6.0:
573
574         Fixes:
575         ------
576
577         * Ensure that the target of a symlink or .so chain is always recorded
578           as a real page.
579
580         * Read a user-specified configuration file even if HOME is unset.
581
582 man-db 2.6.0 (9 April 2011)
583 ===========================
584
585 Major changes since man-db 2.5.9:
586
587         Fixes:
588         ------
589
590         * Fix build with versions of GNU ld that default to
591           --no-copy-dt-needed-entries.
592
593         * Fix failure to display manual pages in some encodings when
594           installed setuid.
595
596         * Wrap long table cells in man(1), fixing test failures with groff
597           1.21.
598
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.
602
603         * Fix a segfault when 'man -K' tries to display certain pages.
604
605         * Fix a segfault in some situations when processes are killed by
606           SIGHUP, SIGINT, or SIGTERM.
607
608         Improvements:
609         -------------
610
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
614           library separately.
615
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
618           '.so man1/name.1'.
619
620         * lexgrog handles roff named glyphs and perldoc strings in NAME
621           sections.
622
623         * man no longer starts a pager if standard output is not a tty.
624
625         * The -s option to whatis and apropos now takes a colon- or
626           comma-separated list of sections, similar to 'man -S'.
627
628         * mandb error output is neater when stderr is not a terminal.
629
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.
633
634         * mandb removes cat* and NLS subdirectories of cat directories whose
635           corresponding man directories no longer exist.
636
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
639           SIGPIPE was ignored.
640
641         * SECTION entries in a user configuration file now override those in
642           the system configuration file, rather than appending to them.
643
644         * The default less prompt now includes "(press h for help or q to
645           quit)" to help novices find their way around.
646
647         * man-db may now be built to use Berkeley DB version 5
648           (--with-db=db5).
649
650 man-db 2.5.9 (17 November 2010)
651 ===============================
652
653 Major changes since man-db 2.5.8:
654
655         Fixes:
656         ------
657
658         * Fix test failures on some systems.  A change made in 2.5.8 was
659           overly sensitive to directory ordering.
660
661         * Configuring with --disable-nls works again.
662
663 man-db 2.5.8 (15 November 2010)
664 ===============================
665
666 Major changes since man-db 2.5.7:
667
668         Fixes:
669         ------
670
671         * Fix assertion failure on 'man -l' with an uncompressed page and
672           any of --no-hyphenation, --no-justification, or a non-English
673           page.
674
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.
679
680         Improvements:
681         -------------
682
683         * Add support for XZ-compressed manual pages, thanks to Darren Salt.
684
685         * Try underscore-separated subpages as well as hyphen-separated
686           ones, thanks to Tanguy Ortolo.
687
688         * Build libman and libmandb as shared libraries, reducing installed
689           footprint by about 200K (at least on GNU/Linux).
690
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/).
695
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.
701
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.
706
707         * mandb should no longer repeatedly rescan manual page hierarchies
708           when a whatis entry turns into a broken link.
709
710 man-db 2.5.7 (16 February 2010)
711 ===============================
712
713 Major changes since man-db 2.5.6:
714
715         Fixes:
716         ------
717
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.
721
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.
726
727         * Don't run tests if cross-compiling.
728
729         * Fix possible mandb crash when MAN_MUST_CREATE is unset.
730
731         Improvements:
732         -------------
733
734         * man can now tell nroff to disable justification if the
735           --no-justification option is used.
736
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.
741
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).
745
746         * By request, man now prefers getting a page from the best manual
747           section over getting a page in the correct language.
748
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
752           tree.
753
754         * man-db now builds with heirloom-doctools, thanks to Diego Pettenò
755           of Gentoo.
756
757         * Add support for emulating pipe() with socketpair(), which is
758           faster on some systems; thanks to Werner Fink of SUSE.
759
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.
765
766 man-db 2.5.6 (26 August 2009)
767 =============================
768
769 Major changes since man-db 2.5.5:
770
771         Fixes:
772         ------
773
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.
778
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.
782
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
788           read a line.
789
790         * Plugged two substantial memory leaks in the pipeline library.
791
792         * whatis and apropos only display any given manual page, or pointers
793           to it, once.
794
795         * man now sets less(1)'s environment up correctly for manual pages
796           encoded in CP1251.
797
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".
801
802         Improvements:
803         -------------
804
805         * The default configuration file now includes section 0, used on
806           some systems to document C library header files.
807
808         * 'make check' now passes in the presence of a UTF-8-aware col, such
809           as that in util-linux-ng.
810
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.
820
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.
824
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.
833
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.
837
838         * 'make install' now installs the manual.
839
840         * manconv understands a wider range of Emacs-style coding tags.
841
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.
849
850 man-db 2.5.5 (14 March 2009)
851 ============================
852
853 Major changes since man-db 2.5.4:
854
855         Fixes:
856         ------
857
858         * Pages that declare a non-default encoding in their preprocessor
859           lines are now handled correctly.
860
861         * Fix an uninitialised variable when sorting manual page candidates
862           that could lead to excessive memory allocation and possible
863           crashes.
864
865         Improvements:
866         -------------
867
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.
871
872 man-db 2.5.4 (24 February 2009)
873 ===============================
874
875 Major changes since man-db 2.5.3:
876
877         Fixes:
878         ------
879
880         * Build fixes for systems without GNU Make, and for systems without
881           gettext; this successfully covers at least FreeBSD.
882
883         * The distclean target now works if po4a isn't installed.
884
885         * Exit as soon as possible if database writes return ENOSPC.
886
887         * lexgrog now stops on any unrecognised roff request, rather than
888           continuing and often littering the database with garbage.
889
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.
893
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.
898
899         Improvements:
900         -------------
901
902         * The MAN_KEEP_STDERR environment variable can now be used to
903           override man's default of discarding stderr when stdout is a
904           terminal.
905
906         * Handling of terminal widths for cat pages is now configurable,
907           using the MINCATWIDTH, MAXCATWIDTH, and CATWIDTH configuration
908           file directives.
909
910         * 'man -a' now detects duplicate manual page candidates more
911           reliably, and sorts them better.
912
913         * Belarusian, Estonian, Greek, Latvian, Lithuanian, Macedonian,
914           Romanian, Slovenian, and Ukrainian pages are now supported.
915
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,
920           like whatis.
921
922         * man can now tell nroff to disable hyphenation if the
923           --no-hyphenation option is used.
924
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.
928
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.
934
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.
941
942 man-db 2.5.3 (17 November 2008)
943 ===============================
944
945 Major changes since man-db 2.5.2:
946
947         Fixes:
948         ------
949
950         * Cleaned up a number of possible crashes, memory leaks, and missing
951           error checks found by the Coverity Scan project.
952
953         * Fix build if MAN_CATS is undefined.
954
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.
958
959         * The LANGUAGE environment variable is now tokenised properly,
960           rather than only taking the first two characters of each element.
961
962         * Fix build if --disable-nls is used or iconv is not available.
963
964         * man now correctly propagates the exit code of whatis or apropos
965           when called with the -f or -k option respectively.
966
967         Improvements:
968         -------------
969
970         * A number of inconsistencies and readability problems with man-db's
971           own manual pages have been cleaned up, thanks mainly to Yuri
972           Kozlov.
973
974         * Reduce the number of warnings emitted when using an unrecognised
975           locale.
976
977         * manconv and zsoelim are now called internally rather than by
978           executing external programs, to improve performance.
979
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.
988
989         * Manual pages may now be compressed with LZMA (although this is
990           probably only worth it for very large pages).
991
992         * Duplicate manual page hierarchies due to symlinks (e.g. /usr/man
993           -> /usr/share/man) are detected and removed from the search order.
994
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
997           territory.
998
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
1001           now.
1002
1003 man-db 2.5.2 (5 May 2008)
1004 =========================
1005
1006 Major changes since man-db 2.5.1:
1007
1008         Fixes:
1009         ------
1010
1011         * 'man -H' (without a browser argument) was completely broken in
1012           2.5.1 and is now fixed.
1013
1014         * man no longer breaks in Japanese locales when using less as a
1015           pager.
1016
1017         Improvements:
1018         -------------
1019
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.
1024
1025         * Whatis parsing stops at .ie or .if conditionals.
1026
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.
1030
1031         * man(1)'s OPTIONS section is ordered more comprehensibly.
1032
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.
1038
1039 man-db 2.5.1 (28 January 2008)
1040 ==============================
1041
1042 Major changes since man-db 2.5.0:
1043
1044         Fixes:
1045         ------
1046
1047         * The manual is now built automatically, avoiding some ordering
1048           problems on 'make distclean'.
1049
1050         * Manual pages are converted to the proper input encoding for troff
1051           output as well as nroff output.
1052
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.
1055
1056         * apropos and whatis no longer segfault when given an explicit
1057           locale using -L.
1058
1059         * man now understands that groff's ascii device takes ASCII input,
1060           not ISO-8859-1.
1061
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.
1064
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.
1068
1069         * manconv is more careful about extracting coding: directives from
1070           manual pages.
1071
1072         * Ctrl-C and Ctrl-\ now work again at the prompt issued by 'man -a'.
1073
1074         Improvements:
1075         -------------
1076
1077         * There is a new --with-sections configure option to change the
1078           default value of SECTION in the configuration file.
1079
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.
1083
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.
1089
1090         * In the process of switching to Gnulib, the last vestiges of
1091           pre-C89 support have been removed; they were documented to be
1092           broken anyway.
1093
1094         * If the MANROFFOPT environment variable is set, man now appends its
1095           value to the *roff command line.
1096
1097         * man now accepts a --recode option to output a source manual page
1098           converted to a specified encoding.
1099
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
1102           colon-separated.
1103
1104         * All programs, except the obsolete 'wrapper', now accept a --debug
1105           option. (accessdb, lexgrog, and zsoelim were lacking it.)
1106
1107         * man now accepts a --warnings option to enable groff warnings.
1108
1109 man-db 2.5.0 (7 October 2007)
1110 =============================
1111
1112 Major changes since man-db 2.4.4:
1113
1114         Fixes:
1115         ------
1116
1117         * mandb --quiet now suppresses several more warnings.
1118
1119         * The output of apropos no longer includes duplicates when multiple
1120           search terms are used.
1121
1122         Improvements:
1123         -------------
1124
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.
1129
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.
1134
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
1138           declaration.
1139
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.
1147
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.
1151
1152         * --with-* options are now available at configure time for most of
1153           the auxiliary program locations that you might want to override.
1154
1155         * man now supports the MANPAGER environment variable, overriding
1156           PAGER.
1157
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.
1161
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.
1168
1169         * man now discards stderr from formatting subprocesses when
1170           outputting to a pager, to avoid visual corruption from any error
1171           messages.
1172
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.
1178
1179         * Setting NOCACHE in the configuration file now prevents man from
1180           ever creating cat pages automatically.
1181
1182         * apropos now accepts the --and option to display only items that
1183           match all the supplied keywords.
1184
1185 man-db 2.4.4 (12 February 2007)
1186 ===============================
1187
1188 Major changes since man-db 2.4.3:
1189
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).
1193
1194         Fixes:
1195         ------
1196
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.
1200
1201         * Ignore SIGINT and SIGQUIT while running subprocesses, so that
1202           typing Ctrl-C doesn't kill less (broken in 2.4.3).
1203
1204         * Similarly, ignore SIGPIPE in subprocesses.
1205
1206         * Various fixes to SIGCHLD handling in pipeline library, preventing
1207           "waitpid failed: No child processes" errors.
1208
1209         * Skip "exec" in configuration file commands (perhaps left over from
1210           old installations), which the pipeline execution library cannot
1211           handle directly.
1212
1213         Improvements:
1214         -------------
1215
1216         * Add support for Chinese in the --enable-mb-groff case.
1217
1218         * lexgrog now handles pages with multiple descriptions more
1219           usefully, by displaying one description per output line.
1220
1221 man-db 2.4.3 (3 July 2005)
1222 ==========================
1223
1224 Major changes since man-db 2.4.2:
1225
1226         Fixes:
1227         ------
1228
1229         * Avoid problems creating databases on systems with badly broken
1230           clocks set before the Unix epoch.
1231
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.
1235
1236         Improvements:
1237         -------------
1238
1239         * apropos and whatis now accept a --section option to restrict their
1240           search to a particular manual section.
1241
1242         * The pipeline execution library is now used for most calls to
1243           external programs, avoiding use of the shell.
1244
1245         * When stdout is not a terminal, man pages will be formatted in
1246           plain text without the use of backspace or ANSI formatting
1247           characters.
1248
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.
1252
1253         * Improve handling of locales with versions and/or modifiers.
1254
1255         * Add support for Croatian, Galician, Indonesian, Slovak, and
1256           Turkish pages.
1257
1258         * man-db may now be built to use Berkeley DB version 4
1259           (--with-db=db4).
1260
1261         Compatibility notes:
1262         --------------------
1263
1264         * Setting the line length of manual pages now requires groff 1.18 or
1265           later.
1266
1267 man-db 2.4.2 (20 September 2003)
1268 ================================
1269
1270 Major changes since man-db 2.4.1:
1271
1272         Fixes:
1273         ------
1274
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.
1278
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.
1283
1284         * Make sure to initialize mandata structures to zero. The uses of
1285           uninitialized memory resulting from this had been leading to
1286           random segfaults.
1287
1288         * Drop privileges in order to be able to read pages in
1289           non-world-readable user manpaths while setuid.
1290
1291         * man can be built with --disable-setuid again.
1292
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
1300           to configure.
1301
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.
1306
1307         * Directories found in strange places in manual hierarchies don't
1308           crash mandb.
1309
1310         Improvements:
1311         -------------
1312
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
1315           to be setuid.
1316
1317         * The "undocumented" message is only displayed if a corresponding
1318           executable is found on the $PATH.
1319
1320         * All programs that read ~/.manpath now take a -C option to cause
1321           them to read a different user configuration file instead.
1322
1323         * The --enable-debug option to configure has been removed. man-db's
1324           Makefiles now always calculate full dependencies for C files.
1325
1326         * mandb caches the contents of directories, significantly speeding
1327           up the purging of obsolete entries.
1328
1329         * mandb now knows how to purge database entries corresponding to
1330           removed stray cat pages.
1331
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.
1338
1339 man-db 2.4.1 (22 December 2002)
1340 ===============================
1341
1342 Major changes since man-db 2.4.0:
1343
1344         The man-db CVS repository has moved from sourceforge.net to
1345         savannah.nongnu.org.
1346
1347         Fixes:
1348         ------
1349
1350         * Don't enter an infinite loop when the SYSTEM environment variable
1351           is set.
1352
1353         * man doesn't segfault when trying to follow a broken symlink.
1354
1355         * mandb no longer corrupts databases when deleting entries that are
1356           part of multi keys.
1357
1358         * Prevent a possible buffer overflow when encountering large multi
1359           keys.
1360
1361         * Man page names are escaped when globbing, so [(1) can now be found
1362           even if the database is not up to date.
1363
1364         * Correct an access() check that led to 'man -X -l -' producing no
1365           output.
1366
1367         * lexgrog can now cope with man pages containing only a .so link.
1368
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'.
1372
1373         Improvements:
1374         -------------
1375
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
1380           sections.
1381
1382         * The default line length for pages formatted for terminal output
1383           has been increased (reducing margin size) to match the default in
1384           groff 1.18.
1385
1386         * Proofread the manual.
1387
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.
1392
1393         * If bzip2 is installed, pages compressed with bzip2 can now be
1394           displayed.
1395
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.
1399
1400         * The manual hierarchy layout will now be guessed where possible if
1401           an explicit --enable-mandirs argument is not passed to configure.
1402
1403 man-db 2.4.0 (26 June 2002)
1404 ===========================
1405
1406 Major changes since man_db-2.3.20:
1407
1408         I have changed the package name to man-db, as the underscore was
1409         awkward.
1410
1411         Upgrading from version 2.3.x:
1412         -----------------------------
1413
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.)
1418
1419         Fixes:
1420         ------
1421
1422         * The GNU nroff test in configure now works when /bin/sh is ash.
1423
1424         * When scanning pages for NAME sections, lexgrog and mandb no longer
1425           accidentally eat the line after each occurrence of the no-op
1426           request '.'.
1427
1428         * 'man --local' drops privileges throughout to avoid problems with
1429           non-world-readable home directories.
1430
1431         * Newly created cat directories are chowned to the man user when
1432           running as root.
1433
1434         * 'man --html' no longer creates its temporary file with raised
1435           privileges, so that it now works with a setuid man.
1436
1437         * man detects preprocessors correctly when setuid.
1438
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.
1443
1444         * Correctly parse manual pages using DOS line-ending conventions.
1445
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.
1450
1451         * Work around corrupted databases in the case where the nextkey
1452           pointer chain contains a loop.
1453
1454         Improvements:
1455         -------------
1456
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.
1461
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.
1465
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.
1469
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
1475           escapes instead.
1476
1477         * The less prompt string sets -PM as well as -Pm.
1478
1479         * Invoking man from within less now sets the correct page title in
1480           the inner less.
1481
1482         * Unless the --match-case option is used, man will search for pages
1483           case-insensitively.
1484
1485         * Update the mechanism for setting the line length so that it also
1486           works with groff 1.18.
1487
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
1490           correctly.
1491
1492         * The $MANLESS environment variable may be used to override the
1493           normal creation of the less prompt string.
1494
1495         * Translation updates for French, German, and Spanish, and a new
1496           Catalan translation. See man/THANKS.
1497
1498 man_db-2.3.20 (7 September 2001)
1499 ================================
1500
1501 Major changes since man_db-2.3.19:
1502
1503         Fixes:
1504         ------
1505
1506         * A typo in 2.3.19 caused character sets for many languages to be
1507           detected incorrectly. This especially affected multibyte
1508           languages.
1509
1510         * Long options in the environment variable LESS are handled
1511           correctly.
1512
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.
1518
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.
1522
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.
1526
1527         * Escape arguments passed to the shell that might contain dangerous
1528           characters.
1529
1530         * Avoid an infinite loop if the LANGUAGE environment variable is set
1531           but empty.
1532
1533         * The --create option to mandb now implies --no-purge.
1534
1535         * Temporary files are handled with more secure permissions.
1536
1537         Improvements:
1538         -------------
1539
1540         * Use a variant of mkstemp() rather than tempnam(), to avoid classic
1541           race conditions. (I don't believe the races were usefully
1542           exploitable.)
1543
1544         * Tolerate whatis entries in a database that point to themselves.
1545
1546         * Detect more translations of the NAME section.
1547
1548         * Add examples of man pages written in POD and SGML.
1549
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.
1553
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).
1558
1559 man_db-2.3.19 (5 July 2001)
1560 ===========================
1561
1562 Major changes since man_db-2.3.18:
1563
1564         Fixes:
1565         ------
1566
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.
1570
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.
1575
1576         * The HUP and TERM signals are now handled better.
1577
1578         * straycats processing invokes 'col -bx' rather than 'col-bx'.
1579
1580         * The root user is now correctly allowed to update databases in
1581           system manpaths.
1582
1583         * apropos and whatis no longer enter infinite recursion if a
1584           database contains an entry pointing to itself.
1585
1586         Improvements:
1587         -------------
1588
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.
1594
1595         * The ordering of manual sections is read from SECTION directives in
1596           the configuration file rather than being hard-coded.
1597
1598         * The MANDB_MAP configuration file directive is documented more
1599           clearly.
1600
1601         * Multiple whatis entries separated by commas, break requests,
1602           and/or paragraph requests are handled more intelligently.
1603
1604         * Fill control requests (.nf and .fi) cause lexgrog to assume a
1605           break at each newline.
1606
1607         * Duplicate manpath entries (often generated in the course of
1608           national language support) are removed, so that 'man -a' works
1609           better.
1610
1611         * man_db's binaries are installed unstripped by default.
1612
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.
1616
1617         * man only does an on-the-fly update of the database caches when the
1618           --update option is given.
1619
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
1623           will not be saved.
1624
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.
1628
1629 man_db-2.3.18 (14 May 2001)
1630 ===========================
1631
1632 Major changes since man_db-2.3.11:
1633
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
1638         man_db.
1639
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.
1645
1646         Fixes:
1647         ------
1648
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]
1652
1653         * Databases no longer disappear temporarily while they are being
1654           regenerated. [Fabrizio]
1655
1656         * Corrected handling of locale environment variables. Setting
1657           several colon-separated locales in $LANGUAGE also works now.
1658           [Colin]
1659
1660         * whatis and apropos are more careful about the possibility of a
1661           corrupted database. [Fabrizio, Colin]
1662
1663         Improvements:
1664         -------------
1665
1666         * If root has private manual hierarchies, cat pages generated from
1667           them are no longer chowned to a less-privileged user. [Wilf]
1668
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]
1672
1673         * Support FHS paths (/usr/share/man and /var/cache/man) in
1674           preference to FSSTND paths (/usr/man and /var/catman). [Fabrizio]
1675
1676         * Converted from catgets to GNU gettext for national language
1677           support. [Fabrizio, Colin]
1678
1679         * Several new and improved localized message catalogues and
1680           translated man pages. [Fabrizio, Colin, other contributors]
1681
1682         * Added accessdb utility, which displays the contents of a manual
1683           page database. [Fabrizio]
1684
1685         * Added user configuration file ~/.manpath, with the same syntax as
1686           the global configuration file. [Fabrizio]
1687
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]
1693
1694         * Added experimental -H and -Thtml options to take advantage of
1695           groff's new HTML driver. [Fabrizio]
1696
1697         * lexgrog now scans manual pages to guess which preprocessors are
1698           needed. [Fabrizio]
1699
1700         * Create cat directories on the fly if necessary. [Fabrizio]
1701
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]
1706
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]
1710
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]
1714
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]
1720
1721 man_db-2.3.11 (21 September 1995)
1722 =================================
1723
1724 Major changes since man_db-2.3.10:
1725
1726         * The man_db manual is bundled in source form.
1727  
1728         * Components of $PATH not in the config file were checked for
1729           `man' subdirectories.  Now they are also checked for `../man'.
1730         
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 
1735           a reformat.
1736
1737 man_db-2.3.10 (13 July 1995)
1738 ============================
1739
1740 Major changes since man_db-2.3.5:
1741
1742         Fixes:
1743         ------
1744
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.  
1748
1749         * The keyword passed to apropos _never_ matched the first word
1750           of any whatis line.
1751
1752         * FAVOUR_STRAYCATS code (if enabled), did not work properly.
1753
1754         * zsoelim did not work as advertised.
1755
1756         Improvements:
1757         -------------
1758
1759         * Man removes its temporary files upon abnormal termination.
1760
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:
1765
1766           ld.so (8)            - a.out dynamic linker/loader
1767         
1768           whereas `a.out' and `loader' used to fail.
1769
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 
1773           was successful.
1774
1775         * addition of German message catalogue.
1776
1777         * `apropos' and `man -k' do POSIX specified regex matching rather 
1778           than keyword searches if the environment variable POSIXLY_CORRECT 
1779           is defined.
1780
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.
1784
1785         * ported to NeXTstep.
1786
1787 man_db-2.3.5 (21 April 1995)
1788 ============================
1789
1790 Major changes since man_db-2.2.1:
1791
1792         Added support for...
1793         --------------------
1794         
1795         * Non-standard section names i.e. multi-character
1796
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.
1800
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.
1806
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 
1811
1812                 `man -e tcl exit' 
1813
1814           would then display an exit manual page with a tcl extension, if
1815           available.  Of course, `man 3tcl exit' works as always.
1816
1817         * FSSTND proposed NLS man subdirectories.
1818           Of the form .../man/<locale>/man<sec>/
1819
1820         * NLS message catalogue hooks.
1821           Provision has been made for the programs to emit their messages in
1822           a language dependent form.
1823
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
1830           shell manual page.
1831
1832         * Catman utility.
1833           Used to pre-format the manual pages into cat pages.
1834
1835         * Operating systems other than Linux.
1836           man_db has been reported to compile on the following platforms:
1837           
1838                 Linux, SunOS, Solaris, Ultrix, OSF, HP-UX, AIX, IRIX
1839
1840           (although portability does not extend to support of native 
1841            manual tree structures on some of these systems, eg. HP-UX)
1842
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.
1846
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.
1851
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. 
1855           
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.
1860
1861         * Extension of `man -l'.
1862           Arguments following -l are interpreted as local files requiring
1863           format and display.  Extensions are: 
1864
1865                 `man -l -' formats and displays stdin.
1866                 `man -l foo.1.gz' decompresses, formats and displays foo.1.gz.
1867         
1868         * Latin1 manual pages/choice of nroff output device.
1869
1870         * Viewing of ASCII manual pages formatted for a latin1 output device
1871           on a 7 bit ASCII terminal (-7).
1872           
1873         * Whatis and apropos utilities support regex and wildcard matching.
1874
1875         * checkman. 
1876           Shell script utility that will find and display duplicated manual
1877           pages found across manual page hierarchies.
1878
1879         * mkcatdirs. 
1880           Shell script utility to create appropriate cat directories after
1881           installation and setup.
1882
1883         Conceptual improvements
1884         -----------------------
1885
1886         * Replacement of single database with multiple modular db's.
1887           Easier integration of additional information into the databases in
1888           the future. 
1889
1890         * Both user and global databases share the same name: 
1891                 
1892                 `index.<db-type>' 
1893         
1894           where <db-type> could be `bt', `db' or `pag' and `dir'.
1895
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.
1900
1901         * straycats handled without need for `placeholders'.
1902
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
1907           the user.
1908
1909         * man_db manual.
1910           man_db has a manual that covers the setup, maintenance and use of
1911           a generic online manual page system.
1912
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.
1918
1919         Speed improvements
1920         ------------------
1921
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.
1925
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.
1931
1932         * Berkeley DB support.
1933           Provides lower database initialisation overhead as compared with 
1934           gdbm.
1935
1936         * Extremely fast whatis(1) searches.
1937           whatis(1) uses keyed database lookups to retrieve whatis strings
1938           for standard (non regex/wildcard) searches.
1939         
1940         Fixes
1941         -----
1942         
1943         * Correct handling of $MANSECT.
1944           The environment variable MANSECT is no longer ignored.
1945
1946         * Acknowledgement of $MANPATH order.
1947           manpath elements are searched in the order specified.