for i in $*
do
case $LANG in
"") eval B\="\$`expr $i : '^.*\.\([^.]*\)$'`"
test "$B" || { echo "$0: unknown suffix: $i; assuming c" 1>&2; B=$c; }
esac
sed '
/^'"$B"'++/,/^'"$B"'--/!d
/^'"$B"'++/d
/^'"$B"'--/d
s/[ ]*$//
/^'"$B"' \([A-Z]\)/{
s//\1/
/^NAME/{
N
s/^.*\n'"$B"'[ ]*//
h
y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/
s/^.*$/.TH & '"$SECT"'\
ad\
fi\
SH NAME/
p
g
s/ [0-9]$//
a\
\\-
p
d
}
/^SUMMARY/d
/^DESCRIPTION/s//.SH &\
ad\
fi/
/^BUGS/s//.SH &\
ad\
fi/
/^DIAGNOSTICS/s//.SH &\
ad\
fi/
/^[A-Z][A-Z][A-Z][^a-z]*$/s//.SH &\
na\
nf/
p
d
}
s/^'"$B"'[ ]*//
s/^[ ]*$//
' $i
done
exit
:++
: NAME
: srctoman 1
: SUMMARY
: extract manual page from source file comment
: PACKAGE
: source file maintentance tools
: SYNOPSIS
: srctoman [-|-awk|-c|-f|-mk|-m|-n|-p|-t|-r] [section] file(s)
: DESCRIPTION
: Srctoman converts comments in various programming languages to
: UNIX-style manual pages.
: The command processes comments in the style of newsource(1);
: its standard output is suitable for formatting with nroff(1) or
: troff(1) using the "-man" macro package.
: Typically, srctoman is integrated with make(1) scripts.
:
: Source files are processed in the indicated order; if no
: files argument the command produces no output.
:
: The source file language can be specified through a command-line
: option, or can be implied by the filename suffix.
: The expected start-of-comment symbol is shown in the last column.
:
: .nf
option language comment
- shell [:#]
-awk awk #
-c c /*
-f fortran [Cc]
-mk make #
-n nroff \\"
-p pascal {
-t troff \\"
-r ratfor #
-C any language next argument
: .fi
:
: .nf
suffix language comment
.awk awk #
.c c /*
.f fortran [Cc]
.fh fortran [Cc]
.h c /*
.l lex /*
.man nroff,troff \\"
.mk make #
.me nroff,troff \\"
.ms nroff,troff \\"
.nr nroff,troff \\"
.p pascal {
.ph pascal {
.r ratfor #
.rh ratfor #
.sh shell [:#]
.y yacc /*
: .fi
:
: The required format of comments is discussed below, where SOC
: stands for the start-of-comment symbol of the language being used.
:
: 1) Start of manual: SOC, followed by `++'.
:
: 2) Section heading: SOC, blank, section name in upper case.
:
: 3) New paragraph: empty line or line with SOC only.
:
: 4) All other text: SOC and subsequent blanks or tabs are removed.
: Lines that do not start with SOC are left unchanged (useful for
: inclusion of program text).
:
: 5) End of manual: SOC, followed by `--'.
: An end-of-comment may follow if the source file language requires this.
:
: The following manual sections receive a special treatment:
: NAME and SUMMARY should appear at the beginning and in
: this order; DESCRIPTION, DIAGNOSTICS and BUGS will be
: right-margin adjusted.
: Other sections may be added freely without confusing srctoman.
: COMMANDS
: sh(1), sed(1), expr(1)
: SEE ALSO
: newsource(1), modsource(1), xman(1)
: The earlier commands new(1), mod(1), mkman(1) and dssman(1)
: by Ruud Zwart and Ben Noordzij (Erasmus University, Rotterdam)
: DIAGNOSTICS
: The program complains if an unknown language is specified
: or if the language cannot be deduced from the file suffix.
: AUTHOR(S)
: W.Z. Venema
: Eindhoven University of Technology
: Department of Mathematics and Computer Science
: Den Dolech 2, P.O. Box 513, 5600 MB Eindhoven, The Netherlands
: CREATION DATE
: Fri Jan 17 22:59:27 MET 1986
: LAST MODIFICATION
: Thu Mar 10 20:08:15 MET 1988
: VERSION/RELEASE
: 1.20
:--