HardenedBSD/gnu/usr.bin/man
Bruce Evans 03e5b81db4 Rewrite and merge some bogus makefiles to create Makefile.shprog. Just
include this in the old makefiles.

I intended to fix only the private maninstall rule but found a lot of
other bogons and bugs:
- strong resistance to installing the program anywhere other than
  ${DESTDIR}/usr/bin (first, ../../Makefile.inc was not included.
  ../Makefile/inc was redundantly included instead.  Second, /usr/bin
  was hard coded).
- the owner, group and permissions were hard coded.
- the man page was installed twice.
- MANDEPEND wasn't necessary.
- calculations to determine the obj directory weren't necessary.
- there were unnecessary private rules for depend, rcsfreeze and tags.
  We don't support the rcsfreeze target.
- there was an extra, bogus, rule for `all'.

The final version uses suffix rules to eliminate the remaining verboseness
involving directories (${.CURDIR}) and to potentially allow multiple
shell programs in one directory.
1995-10-21 14:27:19 +00:00
..
apropos Rewrite and merge some bogus makefiles to create Makefile.shprog. Just 1995-10-21 14:27:19 +00:00
catman
lib
makewhatis
man
manpath
whatis Rewrite and merge some bogus makefiles to create Makefile.shprog. Just 1995-10-21 14:27:19 +00:00
COPYING
Makefile
Makefile.inc
Makefile.shprog Rewrite and merge some bogus makefiles to create Makefile.shprog. Just 1995-10-21 14:27:19 +00:00
README
TODO

README file for man(1).

This is a replacement for Un*x man(1), apropos(1), whatis(1), and
manpath(1).  It has all kinds of neat features that other versions of
man don't, including support for multiple man page directory trees,
preformatted man pages, and troff.  It is provided without any
warranty whatever.  I hope you find it useful.

This program is not a GNU product but it is distributed under the
terms of the GNU copyleft which is described in the file COPYING.

There is a solution written in perl which is probably superior in
every way, but, like me, you may prefer this one anyway.
:-)

If you compile with support for preformatted man pages, man(1) will
try to update the preformatted page if the man page source is newer.

If you compile with support for troff, you can say things like
`man -t foo | psdit > foo.ps' and have fabulous printed documentation
as well.

I have resisted the temptation to handle all the bizarre ways various
vendors have of organizing man pages.  This version of man assumes
that directory trees have the structure:

   .../man
          /manSect
              /foo.Sect*
               ...
          /catSect
              /foo.Sect*
               ...

where Sect is some number or string and should be listed in the set of
sections to be searched.  It is not necessary to have both the cat*
and man* subdirectories, but you must have at least one. :-)


INSTALLATION

1. Run configure.  This will grope around your system a bit and then
   ask you a number of questions.  It will create a Makefile from the
   file Makefile.in, and a config.h file from config.h.in.  You may
   have to do some fine tuning to get things to work exactly right on
   your system.  If you do, I'd like to know what changes you had to
   make to get things working.

2. Edit the manpath.config file.  This determines the system-wide
   mappings for bin directories and man page directories.

3. Do a `make all', try it out, and then if you're happy with that, do
   a `make install'.  You don't need to be root to use this set of
   programs.

4. Install the whatis database(s) by running makewhatis.  If you want
   to keep things absolutely current, you'll need to run this whenever
   you add new man pages.  You might want to add an entry in your
   crontab. 

BUGS

If you find one of these, please tell me about it.  If you have a fix,
that's even better.  If not, I can't guarantee that I'll fix it, but I
would like to know about them.

John Eaton
jwe@che.utexas.edu
Department of Chemical Engineering
The University of Texas at Austin
Austin, Texas  78712


CHANGES

Partial list of changes since version 1.0:

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 uid to a special user so formatted man pages don't
have to be world writable.

Man now works with compressed (.Z) frozen (.F) and yabba (.Y) cat
files.  Frozen files are compressed files using freeze/melt, some
combination of LZW and tree coding.  Sources for it came out on
comp.sources.misc or alt.sources or ... a few months ago.  Yabba files
are compressed using yabba/unyabba, a data compression scheme posted
to alt.sources by Dan Bernstein.

Man now uses a more reasonable default for the search order:
1, n, l, 6, 8, 2, 3, 4, 5, 7, p, o

Man now allows for user-definable section search order via -S or
MANSECT.

Glob.c can work even if you don't have alloca, and works properly on
Suns with the Sun C compiler.

There is now a way to automatically to run preprocessors like the Sun
man program.  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).