Files
oldlinux-files/ftp-archives/tsx-11.mit.edu/1996-10-07/sources/FSF/man11B.Notes
2024-02-19 00:24:15 -05:00

638 lines
20 KiB
Plaintext

John Eaton's man 1.1 (jwe@che.utexas.edu)
Binaries for Linux prepared by faith@cs.unc.edu, Wed Dec 23 14:45:39 1992
Compiled with gcc 2.2.2d7 (-O6)
Linked with jump-4.1 libraries (-s), but tested with jump-4.2 libraries
To install from Linux binary distribution:
1) Get binary distribution (man11B.taz) from
ftp.cs.unc.edu:/pub/faith/linux/utils or from
tsx-11.mit.edu
2) cd /
3) gtar zpxvf man11B.taz
Alternatively, the SLS sysinstall program can be used.
To uninstall this binary distribution, do the following:
cd /usr/src/man-1.1
./man11B.Unins
To install from source:
1) Get source from: ftp.che.utexas.edu:/pub/unix/man-1.1.tar.Z
or: ftp.cs.unc.edu:/pub/faith/linux/utils
or: tsx-11
2) Untar man-1.1.tar.Z in /usr/src
3) cd man-1.1
4) patch -p1 < man11B.Notes [no editing is necessary!]
5) ./configure
Use defaults for everything (because of the patch):
vgrind and grap are missing.
Do not install with setuid option, unless you want to.
6) make CC=gcc 'CDEBUG=-O6 -s'
7) make install
WHAT YOU NEED:
1) /usr/bin/groff and support: I have recently built and uploaded this as
grof106A.taz You can recompile man to use nroff, but you may miss out on
the mandoc feature which will allow you to use standard (i.e., GNU) man
pages as well as the NET-2 man pages. If you think groff is too big,
you can delete most of /usr/lib/groff, leaving the macros and the ascii
device driver. You could also delete a bunch of the binaries and
recompile man so that it just uses groff in ascii mode. This would be
sufficient for most man page needs, but I don't recommend doing this.
2) /usr/bin/gawk: I have recently built and uploaded this as gawk214A.taz
3) bash: make a link from /bin/sh to bash (or change apropos and whatis to
use bash). ASH WILL *NOT* WORK. [/bin/sh is needed by apropos and
whatis].
2) /usr/bin/less: I have recently build and uploaded this as less177A.taz
3) /bin/compress and /bin/zcat: I have recently built and uploaded
ncmp424A.taz, although the versions on the root disk should work fine.
4) /usr/bin/col: I have recently built and uploaded this as utila11.taz
5) I have uploaded other support utilities in the packages futl34A.taz,
shutl18A.taz, and txtutl13A.taz, but you probably have these on your
system already.
Major changes:
1) I completely re-wrote makewhatis to make it produce a "standard" whatis
file. Patches have been applied, based on those sent to me by Mitchum
DSouza (mitchum.dsouza@mrc-apu.cam.ac.uk), which allow the makewhatis
database to be made from cat pages. Please let me know if there are any
problems with this.
2) A bug, which did cause man to dump core, was found and fixed by Willem
Kasdorp (wkasdo@nikhefk.nikhef.nl). This fix has been applied
Minor changes:
1) I removed the -C option from less (-C forces less to *always* use the
whole screen, which looks really bad when you do a 'whatis' and have one
line of output).
2) I made groff use the -mandoc macros, which will auto-magically select
either the standard man macros or the NET-2 doc macros. This feature
allows the free mixing of GNU and NET-2 man pages!
How man is configured:
1) The man pages in /usr/man/cat* are compressed. If you don't want these
pre-formatted pages around, just delete the /usr/man/cat* directories.
2) Yabba and freeze are not supported, but you can recompile man if you
want to use one of these instead of compress.
3) I did *not* select the option to have man run set-uid, and I did *not*
select the option to support multi-architecture man page trees.
4) Man will not deal with compressed nroff source. Making it deal with
compressed nroff files requires patches in about 5 places in the
program, and also requires re-writing at least one of the analysis
routines, since it expects the nroff source to be readable. If anyone
actually wants to take the time to change this, please send me patches.
I'd like to point out that a whole set of nroff man pages only takes up
about 10MB, and half of that is the section 2 and 3 pages that we don't
have for Linux. Also, as soon as the file system converts to 4k blocks,
the savings will not be nearly as much as it is now.
Patches from the original man-1.1:
diff -rc man-1.1.old/apropos.sh man-1.1/apropos.sh
*** man-1.1.old/apropos.sh Mon Aug 26 03:35:46 1991
--- man-1.1/apropos.sh Wed Dec 23 13:22:32 1992
***************
*** 40,46 ****
while [ $1 ]
do
found=0
! for d in $manpath /usr/lib
do
if [ -f $d/whatis ]
then
--- 40,46 ----
while [ $1 ]
do
found=0
! for d in $manpath
do
if [ -f $d/whatis ]
then
diff -rc man-1.1.old/configure man-1.1/configure
*** man-1.1.old/configure Mon Aug 26 03:42:18 1991
--- man-1.1/configure Wed Dec 23 13:49:20 1992
***************
*** 232,248 ****
FILTERS=pager
else
! troff="/usr/local/bin/groff -Tps -man"
! nroff="/usr/local/bin/groff -Tascii -man"
! eqn="/usr/local/bin/geqn -Tps"
! neqn="/usr/local/bin/geqn -Tascii"
! tbl="/usr/local/bin/gtbl"
col="/usr/bin/col"
vgrind="/usr/bin/vgrind"
! refer="/usr/bin/refer"
grap="/usr/bin/grap"
! pic="/usr/local/bin/gpic"
! pager="/usr/local/bin/less -sC"
FILTERS="troff nroff eqn neqn tbl col vgrind refer grap pic pager"
fi
--- 232,248 ----
FILTERS=pager
else
! troff="/usr/bin/groff -Tps -mandoc"
! nroff="/usr/bin/groff -Tascii -mandoc"
! eqn="/usr/bin/geqn -Tps"
! neqn="/usr/bin/geqn -Tascii"
! tbl="/usr/bin/gtbl"
col="/usr/bin/col"
vgrind="/usr/bin/vgrind"
! refer="/usr/bin/grefer"
grap="/usr/bin/grap"
! pic="/usr/bin/gpic"
! pager="/usr/bin/less -s"
FILTERS="troff nroff eqn neqn tbl col vgrind refer grap pic pager"
fi
***************
*** 300,308 ****
# How should man be installed?
! bindir="/usr/local/bin"
! libdir="/usr/local/lib"
! mandir="/usr/local/man/man1"
for d in bindir libdir mandir
do
--- 300,308 ----
# How should man be installed?
! bindir="/usr/bin"
! libdir="/usr/lib"
! mandir="/usr/man/man1"
for d in bindir libdir mandir
do
***************
*** 390,396 ****
# What sections do we anticipate?
! tmpsections="1 n l 6 8 2 3 4 5 7 p o"
echo ""
echo "Enter the man page sections your system uses, separated by"
echo "spaces, and in the order they should be searched."
--- 390,396 ----
# What sections do we anticipate?
! tmpsections="1 n l 6 8 2 3 4 5 7 p o 9"
echo ""
echo "Enter the man page sections your system uses, separated by"
echo "spaces, and in the order they should be searched."
***************
*** 429,435 ****
if test "$ans" = "true"
then
DO_COMPRESSION=true
! compress="/usr/ucb/compress -c"
echo ""
echo "What program should be used to compress the formatted pages?"
echo $n "Note that it must work as a filter! [${compress}] $c"
--- 429,435 ----
if test "$ans" = "true"
then
DO_COMPRESSION=true
! compress="/bin/compress -c"
echo ""
echo "What program should be used to compress the formatted pages?"
echo $n "Note that it must work as a filter! [${compress}] $c"
***************
*** 513,521 ****
if test "$ans" = "true"
then
DO_UNCOMPRESSION=true
! zcat="/usr/ucb/zcat"
! fcat="/usr/local/bin/fcat"
! unyabba="/usr/local/bin/unyabba"
echo ""
echo "If you don't have one of the following programs, enter \`missing'."
echo "It's best to enter absolute pathnames so that man won't have to"
--- 513,521 ----
if test "$ans" = "true"
then
DO_UNCOMPRESSION=true
! zcat="/bin/zcat"
! fcat="/usr/bin/fcat"
! unyabba="/usr/bin/unyabba"
echo ""
echo "If you don't have one of the following programs, enter \`missing'."
echo "It's best to enter absolute pathnames so that man won't have to"
diff -rc man-1.1.old/makewhatis.sh man-1.1/makewhatis.sh
*** man-1.1.old/makewhatis.sh Mon Aug 26 03:35:38 1991
--- man-1.1/makewhatis.sh Wed Dec 23 14:22:44 1992
***************
*** 1,79 ****
#!/bin/sh
! #
! # makewhatis -- update the whatis database in the man directories.
! #
! # Copyright (c) 1990, 1991, John W. Eaton.
! #
! # You may distribute under the terms of the GNU General Public
! # License as specified in the README file that comes with the man
! # distribution.
! #
! # John W. Eaton
! # jwe@che.utexas.edu
! # Department of Chemical Engineering
! # The University of Texas at Austin
! # Austin, Texas 78712
!
! PATH=/bin:/usr/local/bin:/usr/ucb:/usr/bin
!
! if [ $# = 0 ]
! then
! echo "usage: makewhatis directory [...]"
! exit 1
! fi
! for dir in $*
do
! cd $dir
! for subdir in man*
! do
! if [ -d $subdir ]
then
! for f in `find . -name '*' -print`
! do
! sed -n '/^\.TH.*$/p
! /^\.SH[ ]*NAME/,/^\.SH/p' $f |\
! sed -e 's/\\[ ]*\-/-/
! s/^.PP.*$//
! s/\\(em//
! s/\\fI//
! s/\\fR//' |\
! awk 'BEGIN {insh = 0} {
! if ($1 == ".TH")
! sect = $3
! else if ($1 == ".SH" && insh == 1) {
! if (i > 0 && name != NULL) {
! namesect = sprintf("%s (%s)", name, sect)
! printf("%-20.20s", namesect)
! printf(" - ")
! for (j = 0; j < i-1; j++)
! printf("%s ", desc[j])
! printf("%s\n", desc[i-1])
! }
! } else if ($1 == ".SH" && insh == 0) {
! insh = 1
! count = 0
! i = 0
! } else if (insh == 1) {
! count++
! if (count == 1 && NF > 2) {
! start = 2
! if ($2 == "-") start = 3
! if (NF > start + 1)
! for (j = start; j <= NF; j++)
! desc[i++] = $j
! name = $1
! } else {
! for (j = 1; j <= NF; j++)
! desc[i++] = $j
! }
! }
! }'
! done
! cd ..
! fi
! done | sort | colrm 80 > $dir/whatis.db.tmp
! mv $dir/whatis.db.tmp $dir/whatis
done
! exit
--- 1,131 ----
#!/bin/sh
! # makewhatis: create the whatis database
! # Created: Sun Jun 14 10:49:37 1992
! # Revised: Wed Dec 23 14:22:44 1992 by root
! # Copyright 1992 Rickard E. Faith (faith@cs.unc.edu)
! # May be freely distributed and modified as long as copyright is retained.
! # Wed Dec 23 13:27:50 1992: Rik Faith (faith@cs.unc.edu) applied changes
! # based on Mitchum DSouza (mitchum.dsouza@mrc-apu.cam.ac.uk) cat patches.
! # Also, cleaned up code and make it work with NET-2 doc pages.
!
!
! PATH=/usr/bin:/bin
!
! for name in $*
do
! case $name in
! -u) update="-ctime 0";
! continue;;
! -c) pages=cat;
! filter="col -bx";
! continue;;
! -*) echo "Usage: makewhatis -c -u [manpath]";
! echo " -c: build database from cat pages";
! echo " -u: update database with new pages";
! echo " [manpath]: man directory (default: /usr/man)";
! exit;;
! *) if [-d $name]
then
! mandir=$name
! else
! echo "No such directory $name"
! exit
! fi;;
! esac
done
! pages=${pages-man}
! export pages
! mandir=${mandir-/usr/man}
! filter=${filter-cat}
!
! cd $mandir
!
! for i in 1 2 3 4 5 6 7 8 9 n l
! do
! if [ -d ${pages}$i ]
! then
! cd ${pages}$i
! section=$i
! export section
! for j in `find . -name '*' ${update} -print`
! do
! if [ `basename $j .Z` != `basename $j` ]
! then
! Cat=zcat
! else
! Cat=cat
! fi
! ${Cat} ${j} | ${filter} |\
! gawk 'BEGIN {after = 0; insh = 0;
! pages = ENVIRON["pages"];
! section = ENVIRON["section"]} {
! if (($1 ~ /^\.[Ss][Hh]/ && $2 ~ /[Nn][Aa][Mm][Ee]/) ||
! (pages == "cat" && $1 ~ /^NAME/)) {
! if (!insh)
! insh = 1
! else {
! printf "\n"
! exit
! }
! } else if (insh) {
! if ($1 ~ /^\.[Ss][HhYS]/ ||
! (pages == "cat" && $1 ~ /^S[yYeE]/)) {
! printf "\n"
! exit
! } else { # Substitutions after Tom Christiansen perl script
! gsub(/ /, " ") # Translate tabs to spaces
! gsub(/ /, " ") # Collapse spaces
! gsub(/ /, " ") # Collapse spaces
! gsub(/ /, " ") # Collapse spaces
! sub(/^[ ]/, "") # Kill initial spaces
! sub(/-$/,"") # Handle Hyphenations
! sub(/^.[IB] /, "") # Kill bold and italics
! gsub(/\\f[PRIB0123]/, "") # Kill font changes
! gsub(/\\s[-+0-9]*/, "") # Kill size changes
! gsub(/\\&/, "") # Kill \&
! gsub(/\\\((ru|ul)/, "_") # Translate
! gsub(/\\\((mi|hy|em)/, "-") # Translate
! gsub(/\\\*\(../, "") # Kill troff strings
! sub(/^\.\\\"/, "") # Kill comments
! gsub(/\\/, "") # Kill all backslashes
! if ($0 !~ / - / && $0 !~ / -$/ && $0 !~ /^- /) {
! if (after) {
! if ($1 !~ /^\.../ && $1 != "")
! printf " %s", $0
! else {
! printf "\n"
! after = 0
! }
! } else {
! if ($1 !~ /^\.../ && $1 != "")
! printf "%s ", $0
! else
! printf "\n"
! }
! } else {
! after = 1
! if ($0 ~ / - /) {
! printf "%-20s", sprintf( "%s (%s)",
! substr( $0, 0, match( $0, / - / )-1 ),
! section )
! printf "%s", substr( $0, match( $0, / - / ) )
! } else if ($0 ~ / -$/) {
! printf "%-20s", sprintf( "%s (%s) -",
! substr( $0, 0, match( $0, / -$/ )-1 ),
! section )
! } else {
! printf "(%s) %s", section, $0
! }
! }
! }
! }
! }'
! done
! cd ..
! fi
! done > /tmp/whatis$$
! sed '/^$/d' < /tmp/whatis$$ | sort | uniq > ${mandir}/whatis
! chmod 644 ${mandir}/whatis
! rm /tmp/whatis$$
diff -rc man-1.1.old/man.c man-1.1/man.c
*** man-1.1.old/man.c Mon Aug 26 12:01:03 1991
--- man-1.1/man.c Wed Dec 23 14:35:36 1992
***************
*** 12,17 ****
--- 12,22 ----
* Department of Chemical Engineering
* The University of Texas at Austin
* Austin, Texas 78712
+ *
+ *
+ * Wed Dec 23 13:26:03 1992: Rik Faith (faith@cs.unc.edu) applied bug fixes
+ * supplied by Willem Kasdorp (wkasdo@nikhefk.nikef.nl)
+ *
*/
#define MAN_MAIN
***************
*** 440,446 ****
register char **vs;
for (vs = section_list; *vs != NULL; vs++)
! if ((strcmp (*vs, name) == NULL) || (isdigit (name[0])))
return strdup (name);
return NULL;
--- 445,452 ----
register char **vs;
for (vs = section_list; *vs != NULL; vs++)
! if ((strcmp (*vs, name) == NULL) || (isdigit (name[0])
! && !isdigit(name[1])))
return strdup (name);
return NULL;
***************
*** 586,591 ****
--- 592,613 ----
gf = glob_filename (pathname);
}
+
+ /*
+ * If we're given a section that looks like `3f', we may want to try
+ * file names like .../man3/foo.3f as well. This seems a bit
+ * kludgey to me, but what the hey...
+ */
+ if (section[1] != '\0')
+ {
+ if (cat)
+ sprintf (pathname, "%s/cat%c/%s.%s", path, section[0], name, section);
+ else
+ sprintf (pathname, "%s/man%c/%s.%s", path, section[0], name, section);
+
+ gf = glob_filename (pathname);
+ }
+
return gf;
}
***************
*** 715,722 ****
char *path;
{
FILE *fp;
! char buf[BUFSIZ];
! char ult[BUFSIZ];
char *beg;
char *end;
--- 737,744 ----
char *path;
{
FILE *fp;
! static char buf[BUFSIZ];
! static char ult[BUFSIZ];
char *beg;
char *end;
***************
*** 1111,1117 ****
{
status = is_newer (man_file, cat_file);
if (debug)
! fprintf (stderr, "status from is_newer() = %d\n");
if (status == 1 || status == -2)
{
--- 1133,1139 ----
{
status = is_newer (man_file, cat_file);
if (debug)
! fprintf (stderr, "status from is_newer() = %d\n", status);
if (status == 1 || status == -2)
{
diff -rc man-1.1.old/manpath.config man-1.1/manpath.config
*** man-1.1.old/manpath.config Sat Aug 24 16:42:59 1991
--- man-1.1/manpath.config Wed Dec 23 13:47:50 1992
***************
*** 10,22 ****
#
# MANBIN is optional
#
! #MANBIN /usr/local/bin/man
#
# every automatically generated MANPATH includes these fields
#
MANDATORY_MANPATH /usr/man
- MANDATORY_MANPATH /usr/local/man
- MANDATORY_MANPATH /usr/local/X11R4/man
#
# set up PATH to MANPATH mapping
#
--- 10,20 ----
#
# MANBIN is optional
#
! MANBIN /usr/bin/man
#
# every automatically generated MANPATH includes these fields
#
MANDATORY_MANPATH /usr/man
#
# set up PATH to MANPATH mapping
#
***************
*** 23,30 ****
MANPATH_MAP /bin /usr/man
MANPATH_MAP /usr/bin /usr/man
MANPATH_MAP /usr/ucb /usr/man
! MANPATH_MAP /usr/local/mh /usr/local/mh/man
! MANPATH_MAP /usr/local/bin /usr/local/man
! MANPATH_MAP /usr/local/gnu /usr/local/man
! MANPATH_MAP /usr/local/pbm /usr/local/pbm/man
! MANPATH_MAP /usr/local/X11R4 /usr/local/X11R4/man
--- 21,25 ----
MANPATH_MAP /bin /usr/man
MANPATH_MAP /usr/bin /usr/man
MANPATH_MAP /usr/ucb /usr/man
! MANPATH_MAP /usr/local/bin /usr/man
! MANPATH_MAP /usr/bin/X11 /usr/man
diff -rc man-1.1.old/whatis.sh man-1.1/whatis.sh
*** man-1.1.old/whatis.sh Mon Aug 26 03:34:48 1991
--- man-1.1/whatis.sh Wed Dec 23 13:22:33 1992
***************
*** 41,51 ****
while [ $1 ]
do
found=0
! for d in $manpath /usr/lib
do
if [ -f $d/whatis ]
then
! grep -iw "^$1" $d/whatis
status=$?
if [ "$status" = "0" ]
then
--- 41,52 ----
while [ $1 ]
do
found=0
! for d in $manpath
do
if [ -f $d/whatis ]
then
! # grep -iw "^$1" $d/whatis
! egrep -i "((^$1)|($1,)) .*- " $d/whatis
status=$?
if [ "$status" = "0" ]
then