V10/vol2/index/smkfile

< ../ADM/defns
<../index/defns

all:V:	index.out

pg:	index.out
	count index.ms index.out

spell:VQ:
	dospell index.ms

lp:	index.out
	$LP $newprereq && touch $target

index.out:D:	index.ms
	$PREFER $prereq | pic | troff -mpm > $target

index:V:
	touch index.ind
pindex:V:
	touch index.ind

PAPERS=`cd /usr/vol2;echo [a-z]*`
INDEX=${PAPERS:%=%.index}
incindex:V:	$INDEX

%.index:VQ:
	cd ../$stem; mk index
PINDEX=${PAPERS:%=%.pindex}
pincindex:V:	$PINDEX

%.pindex:VQ:
	cd ../$stem; mk pindex

restart:V:
	for i in  ../[c-z]*
	do
	cd $i
	mk index
	done

sindex:VQ:
	wc sindex
	awk '
	/^\.XX/	{
	if($2 ~ /[a-z]/){
		name=$2
		first=$3
		str = "..\/" $4 ".pg"
		getline <str
		last=$1 + first -1
		print name " " first " " last
		close(str)
	}
	}' ../contents/contents.ms >contents
	sed -e 's/\\f(..//g' -e 's/\\f[a-z0-9A-Z]//g' -e 's/\\em//' -e 's/ ,/,/' -e 's/\\\&//g' -e 's/,/	/' -e 's/^ //' ../[a-z]*/*.ind|sort -f|
	awk  '
	BEGIN	{
		while((getline<"contents") > 0){
			names[$1] = $2
			last[$1] = $3
		}
		FS="	"
	}
	{if($1 == term){
		ck = global = substr($2,2,index($2,",")-2)
		if(ck in names){
			sub(/^ /, " \\fI", $2)
			sub(/,/,"\\fP,", $2)
		}
		caps=0
		if($2 ~ /[A-Z_$][A-Z_$][A-Z_$0-9& ]*/){
			if($2 !~ /\\s/)caps=gsub(/[A-Z_$][A-Z_$][A-Z_$0-9& ]*/,"\\s-2&\\s+2")
		}
		sub(/^ /,"",$2)
		rside = ckcw($2,0)
		if(NF == 3){
			if(global in names){
			printit("    \\fI" global "\\fP, " names[global] "-" last[global],1,caps*8)
				next
			}
		}
		printit("    " rside, 1, caps*8)	#removed space
	}
	else {
		term = $1
		caps=0
		if(term in names){
			newt="\\fI" term "\\fP, " names[term] "-" last[term]
			printit(newt, 0, 0)
			if($2 ~ /[A-Z_$][A-Z_$][A-Z_$0-9& ]*/){
			  if($2 !~ /\\s/)caps=gsub(/[A-Z_$][A-Z_$][A-Z_$0-9& ]*/,"\\s-2&\\s+2")
			}
			sub(/^ /,"",$2)
			rside = ckcw($2,0)
			printit("    " rside, 1, caps*8)	#removed space
		}
		else {
			if($1 ~ /[A-Z_$][A-Z_$][A-Z_$0-9& ]*/){
				if($1 !~ /\\s/)caps=gsub(/[A-Z_$][A-Z_$][A-Z_$0-9& ]*/,"\\s-2&\\s+2")
			}
			lside = ckcw($1,1)
			if(NF == 3){
				r = substr($2,2,index($2,",")-2)
				if(r in names){
					printit($1 ", \\fI" r "\\fP, " names[r] "-" last[r],0,caps*8)
					next
				}
				else {
					print "term not in names:" r|"cat 1>&2"
					sub(/	XXG/,"")
				}
			}
			sub(",","\\fP,",$2)
			printit(lside ",\\fI" $2, 0, caps*8)
		}
	}}
	function ckcw(rterm,first){
	if((rterm ~ /[\/\.$]/ && rterm !~ /(I\/O)|(Input\/Output)|(reduce)|(TCP)/)||rterm ~ /^-/){
			sub(/^-/,"\\(em",rterm)
			rterm = "\\f(CW" rterm
			if(first)rterm = rterm "\\fP"
			if(index(" ",rterm)<index(",",rterm))
				sub(/ /,"\\fP ",rterm)
			else sub(/,/,"\\fP,",rterm)
			caps += 1
		}
		return(rterm)
	}
	function printit(line, space, caps){
	limit=46+caps
	if(length(line)< limit)print line
	else {
		n=split(line, a, ",")
		if(length(a[1])>=limit){
			m=split(a[1],b," ")
			nline=b[1]
			if(space)nline = "    " b[1]
			for(i=2;i<=m;i++){
				nline = nline " " b[i]
				if(length(nline)>=limit){
					print nline
					nline = "      "
				}
			}
			for(i=2; i<=n;i++){
				if(nline == "      ")nline = nline a[i]
				else nline = nline "," a[i]
			}
			print nline
			return
		}
		nline=a[1]
		for(i=2;i<=n;i++){
			nline = nline "," a[i]
			if(length(nline)>= limit-6){
				if(i < n)print nline ","
				else print nline
				if(i < n)nline = "      " a[++i]
				else nline = ""
			}
		}
		if(length(nline) > 0)print nline
	}
	}' >sindex
	wc sindex
#	troff -ms sindex.ms >tr.out