openafs/doc/man-pages/generate-man
Michael Meffie c412c75def doc: Fix the AFS::ukernel man page title
The pod2man tool determines a man page title (set in the .TH macro) from
the input filename, unless the -n (--name) option is specified.

Our AFS::ukernel man page input file is named AFS.ukernel.pod to avoid
colons in the filename (since colon characters are not supported on
Windows), so the generated man page contains the title "AFS.ukernel"
instead of "AFS::ukernel".

Use the pod2man -n (--name) option when converting section 3 man pages
to override the automatic title naming. This fixes the .TH macro in the
generated AFS::ukernel.3 file. Fortunately, the -n (--name) option is
only needed for section 3 man pages.

Specifying the pod2man -n (--name) option is simpler and less invasive than
renaming pod3/AFS.ukernel.pod to pod3/lib/AFS/ukernel.pod (which would
also fix the embedded title).

Change-Id: I495ea2d30ce1b34698519ffa34a39362c449ba09
Reviewed-on: https://gerrit.openafs.org/15363
Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
Reviewed-by: Mark Vitale <mvitale@sinenomine.net>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
2023-07-12 23:48:30 -04:00

79 lines
2.2 KiB
Bash
Executable File

#!/bin/sh
#
# Generate the OpenAFS man pages from POD source. This script is normally
# invoked by regen.sh but may be run at any time to rebuild all of the man
# pages (with a newer version of pod2man than was used for the release, for
# instance).
# Exit on any error.
set -e
if [ ! -d pod1 ] ; then
echo 'generate-man must be run from the doc/man-pages directory' >&2
exit 1
fi
if pod2man pod1/afs.pod > /dev/null ; then
:
else
echo 'pod2man not found, skipping man page generation' >&2
exit 1
fi
if perl -e 'use Pod::Man 2.04' > /dev/null 2>&1 ; then
:
else
echo 'Pod::Man is older than the recommended version of 2.04 or later' >&2
echo 'Continuing with man page generation anyway' >&2
fi
# Create the directories. We generate each section into its own directory
# to make installation rules easier.
[ -d man1 ] || mkdir man1
[ -d man3 ] || mkdir man3
[ -d man5 ] || mkdir man5
[ -d man8 ] || mkdir man8
# Generate each set of man pages. For each, allow for the case of the
# directory being empty. In that case, for won't expand the wildcard, and
# we want to avoid running pod2man with a wildcard as an argument.
pod1=`ls pod1`
if [ -n "$pod1" ] ; then
cd pod1
for f in *.pod ; do
pod2man -c 'AFS Command Reference' -r 'OpenAFS' -s 1 "$f" \
> ../man1/`echo "$f" | sed 's/\.pod$//'`.1
done
cd ..
fi
pod3=`ls pod3`
if [ -n "$pod3" ] ; then
cd pod3
for f in *.pod ; do
name=`echo "$f" | sed -e 's/\.pod$//' -e 's/^AFS\./AFS::/'`
pod2man -c 'AFS Library Reference' -r 'OpenAFS' -s 3 "$f" -n "$name" \
> ../man3/${name}.3
# Perl module manpages are named AFS.foo instead of AFS::foo, since
# we cannot have colons in filenames on Windows. So here, we assume
# anything with "AFS." should be "AFS::" instead.
done
cd ..
fi
pod5=`ls pod5`
if [ -n "$pod5" ] ; then
cd pod5
for f in *.pod ; do
pod2man -c 'AFS File Reference' -r 'OpenAFS' -s 5 "$f" \
> ../man5/`echo "$f" | sed 's/\.pod$//'`.5
done
cd ..
fi
pod8=`ls pod8`
if [ -n "$pod8" ] ; then
cd pod8
for f in *.pod ; do
pod2man -c 'AFS Command Reference' -r 'OpenAFS' -s 8 "$f" \
> ../man8/`echo "$f" | sed 's/\.pod$//'`.8
done
cd ..
fi