Home | History | Annotate | Line # | Download | only in mantools
      1 #!/bin/sh
      2 
      3 # mansect - extract manual chapter number from source comment
      4 
      5 # @(#) mansect.sh 1.2 11/4/89 15:56:37
      6 
      7 LANG=
      8 
      9 : process arguments
     10 
     11 while :
     12 do
     13     case $1 in
     14  [0-9]) SECT=$1;;
     15      -) LANG=$1; B='[#:]';;
     16     -a) LANG=$1; B='#';;
     17     -c) LANG=$1; B='\/\*';;
     18     -f) LANG=$1; B='[Cc]';;
     19     -m) LANG=$1; B='#';;
     20  -n|-t) LANG=$1; B='\\"';;
     21     -p) LANG=$1; B='{';;
     22     -r) LANG=$1; B='#';;
     23     -C) LANG=$1; B=$2; shift;;
     24     -*) ERROR="unknown option: $1"; break;;
     25     "") ERROR="missing file argument"; break;;
     26      *) break;;
     27     esac
     28     shift
     29 done
     30 
     31 # check error status
     32 
     33 case $ERROR in
     34 "") ;;
     35  *) echo "$0: $ERROR" 1>&2
     36     echo "usage: $0 [-|-a|-c|-f|-m|-n|-p|-t|-r|-C] file(s)" 1>&2; exit 1;;
     37 esac
     38 
     39 # set up for file suffix processing
     40 
     41 case $LANG in
     42 "") sh='[:#]';	r='#';	rh=$r;	awk='#'; mk='#';
     43     c='\/\*';	d=$c;	h=$c;	y=$c;	l=$c;
     44     f='[Cc]';	fh=$f;	p='{';	ph=$p;
     45     ms='\\"';	nr=$ms;	mn=$ms;	man=$ms;
     46 esac
     47 
     48 # extract chapter number from file
     49 
     50 for i
     51 do
     52     case $LANG in
     53     "") eval B\="\$`expr $i : '.*\.\([^.]*\)$'`"
     54 	test "$B" || { echo "$0: unknown suffix: '$i'; assuming c" 1>&2; B=$c; }
     55     esac
     56     sed -n '
     57     /^'"$B"'++/,/^'"$B"'--/{
     58 	s/[ 	]*$//
     59 	/^'"$B"' NAME/{
     60 	    N
     61 	    s/^.*\n'"$B"'.*[ 	]\([0-9]\)[ 	]*$/\1/p
     62 	    q
     63 	}
     64     }
     65 ' $i
     66 done
     67 
     68 exit
     69 
     70 #++
     71 # NAME
     72 #	mansect 1
     73 # SUMMARY
     74 #	extract manual chapter number from comment
     75 # PACKAGE
     76 #	sdetools
     77 # SYNOPSIS
     78 #	mansect [-|-a|-c|-f|-m|-m|-n|-p|-t|-r|-C] file(s)
     79 # DESCRIPTION
     80 #	\fImansect\fR extracts the manual chapter number from 
     81 #	source file comments in the style of \fInewsrc(1)\fR.
     82 #	Typically, \fImansect\fR is integrated with \fImake(1)\fR scripts.
     83 #
     84 #	Source files are processed in the indicated order; if no
     85 #	files are specified the command produces no output.
     86 #
     87 #	The source file language can be specified through a command-line
     88 #	option, or can be implied by the filename suffix.
     89 #	The expected start-of-comment symbol is shown in the last column.
     90 #
     91 # .nf
     92 # .ft C
     93 	option	suffix		language	comment
     94 
     95 	-	.sh		shell		[:#]
     96 	-a	.awk		awk		#
     97 	-c	.c .h .l .y	c lex yacc	/*
     98 	-f	.f .fh		fortran		[Cc]
     99 	-m	.mk		make		#
    100 	-n	.man .mn .ms .nr nroff troff	\\"
    101 	-p	.p .ph		pascal		{
    102 	-r	.r .rh		ratfor		#
    103 	-C			any language	next argument
    104 # .ft
    105 # COMMANDS
    106 #	sh(1), sed(1)
    107 # SEE ALSO
    108 #	newsrc(1), xman(1)
    109 #	The earlier commands new(1), mod(1), mkman(1) and dssman(1)
    110 #	by Ruud Zwart and Ben Noordzij (Erasmus University, Rotterdam) 
    111 # DIAGNOSTICS
    112 #	The program complaints if an unknown language is specified
    113 #	of if the language cannot be deduced from the file suffix.
    114 # AUTHOR(S)
    115 #	W.Z. Venema
    116 #	Eindhoven University of Technology
    117 #	Department of Mathematics and Computer Science
    118 #	Den Dolech 2, P.O. Box 513, 5600 MB Eindhoven, The Netherlands
    119 # CREATION DATE
    120 #	Sun Feb 15 21:40:28 GMT+1:00 1987
    121 # LAST MODIFICATION
    122 #	11/4/89 15:56:37
    123 # VERSION/RELEASE
    124 #	1.2
    125 #--
    126