
		The history of the man utility package
		       Version 2.1, 15-Jul-1994

       compiled by Nils Magnus <n_magnus@informatik.uni-kl.de>

Note from the history reviewer:
-------------------------------

Since the early days man has gone through a very changeable history.
Up to version 2.0 there were different maintainers and subbranches of
development; features and concepts came and passed away again. This
file was merged from different sources to provide at least a vague
overview of the progress of this work. Be warned that some features
described in the earlier secitions may be obsolete in the present
package. For a more in-depth description of actual features look in
the "Features" section in the README or consult the manual pages
provided in this package; they are hopefully 'up to date'.


Overview of dates and maintainers:
----------------------------------

1990-91, John W. Eaton <jwe@che.utexas.edu> wrote the initial version
         of man. I think this was known as man-1.0.

Dec 1992 Rik Faith <faith@cs.unc.edu> applied bug fixes supplied by
         Willem Kasdorp <wkasdo@nikhefk.nikef.nl> resulting in man-1.1B.

Apr 1994 Wilf <G.Wilford@ee.surrey.ac.uk> took over the further
	 development of the man package and released man-2.0a2.
	 After this a small group of people sent in patches and
Jul 1994 suggestions resulting in man_db-2.1.


** man-1.0 - man-1.1B **
------------------------

Installation made easier (this was the intent anyway) with the
introduction of a configure script.

Commands like `man 3f intro' handled properly when the name of the
file we want is something like .../man3/intro.3f.

Man can now run set gid to a special group so formatted man pages don't
have to be world writable.

There is now a way to automatically run preprocessors like the Sun
man. The first line of the man page indicates which preprocessors
should be run:

      If the first line is a string of the form:

          '\"  X

      where  X is separated from the the `"' by a single SPACE and
      consists of any combination of characters in  the  following
      list,  man  pipes  its input to troff(1) or nroff(1) through
      the corresponding preprocessors.

          e    eqn(1), or neqn for nroff
          g    grap(1)
          p    pic(1)
          r    refer(1)
          t    tbl(1), and col(1V) for nroff
          v    vgrind(1)

Preprocessors may also be set on the command line with -p or from the
environment with MANROFFSEQ.

The tbl preprocessor is run by default.

Manpath now stat()'s the directories in MANPATH to avoid including
directories that don't exist.

The output of apropos and whatis are now piped through PAGER.

There is a new option to show where you would find a man page
(-w option) and in what order (-w with -a).

** man-1.1B - man-2.0a2 **
--------------------------

Now optionally Linux Filesystem standard (FSSTND) compliant - this
allows you to have a read-only /usr.
Uses global and user-local databases to store the whereabouts of it's
pages - this has dramatically shortened the lookup time, especially
for non existent pages.
All C code has been ANSI-fied, (except the GNU globbing and xmalloc
routines which remain untouched).
Introduced two new programs: mandb and straycats.
Mandb will warn you about duplicated man pages and bogus pages that
would never have been found with man-1.1B.
Straycats allows you to manipulate any stray cat pages that you may
have.

** man-2.0a2 - man-2.0a3 **
---------------------------

Fixed FSSTND behaviour - to check both /usr/.../man/cat* AND
/var/catman/.../cat* trees.
Sanity checks now made on $MANPATH so that user mistakes will not
crash man.
Use *manpathlist[] as opposed to *manp which is raw.
Released interim makewhatis replacement.
Fixed various command line arg problems with man.
Introduced -T option to man.
Included accessdb in package.
Altered configure script.
Changed setuid to setgid.
Rewrote documentation.

** man-2.0a3 - man-2.0a4 **
---------------------------

Reduced the horrible security problems inherited from man-1.1.
Introduced another field type to manpath.config, defining global man
paths.
Global manpaths no longer _have_ to exist below /usr.

** man-2.0a4 - man-2.0a5 **
---------------------------

Ultimate source now traces symlinks (relative & absolute), so now
there will be even less 'wasted' catpages, ie if
/usr/man/man8/swapoff.8 is a symlink to /usr/man/man8/swapon.8, only
one catpage will be produced.

** man-2.0a5 - man-2.0a6 **
---------------------------

Completely rewrote configure script. No user intervention required.

** man-2.0a6 - man-2.0a8 **
---------------------------

Patched in alternate systems support supplied by Kim-Minh Kaplan
<kkaplan@cdfhp3.in2p3.fr> and fixed up a few bugs it uncovered.
For those who have it, speeded up database operations for man by using
GDBM_FAST flag for all db writes. gdbmver now informs you if your
library supports it, as well as giving you the version number. Latest
version is gdbm-1.7.3 as at 19th May 1994.

** man-2.0a9 - man-2.0a11 **
----------------------------

Applied patches from Kim-Minh and Markus Armbruster
<armbru@pond.sub.org>.
Man can now format and display a 'local' file using -l.
Removed symlink tracing (it's now #defineable).
Fixed straycat problems created at around man-2.0a9.
Added -c flag to manpath, which supplies the catpath - required by
the remaining shell scripts.

** man-2.0a11 - man-2.0a12 **
-----------------------------

Applied patch from Kim-Minh to re-implement setuid after discussions
about the relative merits of setgid/setuid.
Also from Kim-Minh, zmore style pager support for multiple pages.
Bug fixes and general tidy up, preparing for general release.
Eliminated a couple of compilation warnings that have been with us for
ages.
Added Gnu regex.h and fnmatch.h to package for portability.

** man-2.0a12 - man_db-2.1b0 **
-------------------------------

Name change due to Andries release of man-1.3 & man-1.4b which have
more in common with J. W. Eaton's man than this package.
Bump up the minor version number for public release. man_db is now
beta!
Fixed security hole from inclusion of setreuid() in man-2.0a12

** man_db-2.1b0 - man_db-2.1b1 **
---------------------------------

Fixed mydbm.h for ndbm style dbm_nextkey().
Added support for Berkeley db database routines in ndbm compatibility
mode.
Finally fixed an ndbm static data array problem, which had caused
spurious seg faults in past versions.
Fixed some 'not setuid' related file mode problems.
Added some more --enable options to ./configure.
Bug and portability fixes.
Completely refurbished documentation from Nils.

** man_db-2.1b1 - man_db-2.1b2 **
---------------------------------

Patch from Paul van Spronsen <vspr@teppic.cs.sun.ac.za> to fix umask 
dependant problem.
Closed unread, but opened files in getwhatis.c.

** man_db-2.1b2 - man_db-2.1b3 **
---------------------------------

Closed directories in getwhatis.c.

** man_db-2.1b3 - man_db-2.1b5 **
---------------------------------

Closed dirs in straycats.c.
Added option '-v level' to straycats to control verbosity of output.
Large patch from Markus to implement better privilege control.

** man_db-2.1b5 - man_db-2.1b7 **
---------------------------------

Lots more setuid stuff, now using saved id's on Linux to save a fork().
Tidied up the 'man' manual pages: better use of macros and a spell check.
Overhauled alternate system support. -m <system> will now only show pages
found on <system>. Multiple systems can still be specified. The native 
system is specified as man. So to find all intro pages on the native system 
and system 'sun', issue the command 'man -a -m sun:man intro'
Other cosmetic changes.

** man_db-2.1b7 - man_db-2.1b8 **
---------------------------------

Nils added support for Long option names and did some consistency/cosmetic
changes.
Edited man pages to reflect changes.
Refurbished -h (--help) messages for programs involved. Added a usage message 
to manpath.
Closed some more open directories in add_dir_entrys().

** man_db-2.1b8 - man_db-2.1b9 **
---------------------------------

Added some more regex codes for parsing man/cat files. Now deals with OI
man pages and tcl man/cat pages correctly. 
Fixed the stupid compile problem I introduced in b8!

** man_db-2.1b9 - man_db-2.2 **
-------------------------------

Added README.1st, tidied, uploaded.
