home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Usenet 1994 October
/
usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso
/
misc
/
volume3
/
pcmail
/
part05
/
srctoman.sh
< prev
next >
Wrap
Text File
|
1989-02-03
|
4KB
|
202 lines
: srctoman - see comment below
: process arguments
while :
do
case $1 in
[0-9]) SECT=$1;;
-) LANG=$1; B='[#:]';;
-awk) LANG=$1; B='#';;
-c) LANG=$1; B='\/\*';;
-f) LANG=$1; B='[Cc]';;
-mk) LANG=$1; B='#';;
-n|-t) LANG=$1; B='\\"';;
-p) LANG=$1; B='{';;
-r) LANG=$1; B='#';;
-C) LANG=$1; B=$2; shift;;
-*) ERROR="unknown option: $1"; break;;
"") ERROR="missing file argument"; break;;
*) break;;
esac
shift
done
: check error status
case $ERROR in
"") ;;
*) echo "$0: $ERROR" 1>&2
echo "usage: $0 [-|-awk|-c|-f|-mk|-n|-p|-t|-r] [section] file(s)" 1>&2; exit 1;;
esac
: set up for file suffix processing
case $LANG in
"") sh='[:#]'; r='#'; rh=$r; awk='#'; mk='#';
c='\/\*'; h=$c; y=$c; l=$c;
f='[Cc]'; fh=$f; p='{'; ph=$p;
ms='\\"'; nr=$ms; mn=$ms; man=$ms;
esac
: extract comments
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
:--