|
|
1.1 root 1: # @(#)fulltext:docsubmit 1.18
2:
3: # THis routine was originally written by Lorinda Cherry - it gathers up
4: # all the files connected with a documents, and transmits them via
5: # uucp to mhuxd!~/full.text/
6: #
7: # It bundles all the files involved together into one cpio file
8: # called <1st 5 chars of machine name><process id>.cp
9:
10: # Finding a good awk is a pain - set it here if you want
11: AWK=""
12: if test -z "${AWK}"
13: then
14: if ans=`sh -c 'logdir exptools' 2>&1` ; then
15: :
16: else
17: ans=`grep '^exptools:' /etc/passwd | sed "s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*/\1/"`
18: fi
19: if test -r ${ans}/bin/nawk
20: then
21: AWK=${ans}/bin/nawk
22: fi
23: fi
24: if test -z "${AWK}"
25: then
26: if test -r /usr/local/bin/awk
27: then
28: AWK=/usr/local/bin/awk
29: fi
30: fi
31: if test -z "${AWK}"
32: then
33: AWK=awk
34: fi
35:
36: # Get machine nodename - swiped from rn build routine Configure
37: if ans=`sh -c hostname 2>&1` ; then
38: MACH=$ans
39: elif ans=`sh -c 'uuname -l' 2>&1` ; then
40: MACH=$ans
41: elif ans=`sh -c 'uname -n' 2>&1` ; then
42: MACH=$ans
43: else
44: MACH=failedget
45: fi
46: # Get the users LOGNAME
47: if ans=`sh -c logname 2>&1` ; then
48: LOGNAME=$ans
49: else
50: LOGNAME=`echo $HOME|sed 's/.*\///'`
51: fi
52:
53: T=/tmp
54: AWKTEMP=/tmp/Doc.Awk.$$
55: OUTP="junk"
56: COVER="junk"
57: DOCNUM="junk"
58: REF=""
59: # cut the machine name down to a max of 5 characters
60: DIR=`echo ${MACH} | sed 's/\(.....\).*/\1/'`$$
61: NAME=$DIR
62: DIR=$T/$DIR
63: trap 'rm -f ${AWKTEMP} $DIR/* $T/$NAME.cp ; rmdir $DIR 2>>/dev/null; trap 0;exit' 0 1 2 15
64: if test $# -eq 0
65: then
66: echo "docsubmit -C -c file.cover -N number -r ref_file -t file(s)"
67: echo " -C if document complete without coversheet, else -c file.cover"
68: echo " -N number if document number not included in the files"
69: echo " -r to include a refer file"
70: echo " -t if source is Knuths TeX instead of troff/nroff\n"
71: echo " Two examples, first with cover sheet, second without:"
72: echo " docsubmit -c mydoc.cover mydoc.text mydoc.append"
73: echo " docsubmit -C -N 79111-880324-01 mydoc.text"
74: exit 0
75: fi
76: for i in $*
77: do case $i in
78: -r) shift; REF=$1; shift; continue;;
79: -c) shift; COVER=$1; shift; continue;;
80: -C) shift; COVER=$$; continue;;
81: -t) shift; TEX="yes"; ARG=$1; shift; continue;;
82: -N) shift; DOCNUM=$1; shift; continue;;
83: -*) echo docsubmit unknown flag $i; exit 1;;
84: esac
85: done
86: ARGS=$*
87: if test "$COVER" = "junk"
88: then
89: echo "You must include the coversheet file for the paper to be submitted"
90: echo "If the coversheet is in the files (or the files are the complete document),"
91: echo " indicate this by using the -C flag"
92: echo "Use the flag -N number if document number not included in the files"
93: echo " ===> Full text of document not sent <==="
94: exit 1
95: fi
96:
97: # check the entered document number
98: if test ${DOCNUM} != "junk"
99: then
100: x=`expr "${DOCNUM}" : '^[a-zA-Z0-9]*-[89][0-9]*-[0-9][0-9]'`
101: if test $x -lt 2
102: then
103: echo "\nDocument numbers must be of form OrgNum-Date-seq"
104: echo " Where Date is usually YYMMDD (e.g. 881224) [always starts with a year]"
105: echo " and the sequence number is always 2 digits (e.g. 03)"
106: echo " ===> Full text of document not sent <==="
107: exit 1
108: fi
109: fi
110: OUTP=$DIR/$NAME
111: mkdir $DIR
112: if test $TEX
113: then
114: case $OUTP in
115: *.*) echo "the name for a TeX paper cannot contain . tex gets confused"
116: echo " use _ or - instead"
117: exit 1
118: esac
119: BBL=$OUTP.bbl
120: OUTP=$OUTP.tex
121: echo "%...\\\"" `date` >$OUTP
122: echo "%...\\\"" EmailAddress ${MACH}"!"${LOGNAME} >>$OUTP
123: if test "${DOCNUM}" != "junk"
124: then
125: echo "%...\\\" DocNum ${DOCNUM}" >>$OUTP
126: fi
127: echo "%...\\\"" `pwd` >>$OUTP
128: # THis was doinput.awk - put it inline for exptools ease
129: # NOTE - ends with line END doinput.awk
130: cat >${AWKTEMP} <<!
131: BEGIN {
132: if(texinp != "")
133: ninputs = split(texinp, texinputs, ":")
134: else {
135: ninputs = 1
136: texinputs[1] = "."
137: }
138: idef=0
139: }
140: /\\\\newcommand/ {
141: ckdef(0, \$0, 1)
142: next
143: }
144: /\\\\def[^a-z]/ {
145: ckdef(0, \$0, 0)
146: next
147: }
148: /\\\\(input|include)[{ ]/ {
149: getfile()
150: next
151: }
152: /\\\\bibliography[{ ]/ {
153: n = substr(\$0, index(\$0,"{")+1, index(\$0,"}")-index(\$0,"{")-1)
154: if(n ~ ","){
155: num=split(n, b, ",")
156: for(i=1;i<=num;i++)
157: system("cp " b[i] ".bbl " dir)
158: close("cp " b[i] ".bbl " dir)
159: }
160: else{
161: system("cp " n ".bbl " dir)
162: close("cp " n ".bbl " dir)
163: }
164: }
165: /^\\\\includepicture/ {
166: n=index(\$0,"{")+1
167: fname=substr(\$0,n,index(\$0,"}")-n)
168: system ("cp " fname ".t " dir )
169: close ("cp " fname ".t " dir )
170: system ("cp " fname ".tex " dir )
171: close ("cp " fname ".tex " dir )
172: }
173: /\\\\special/ {
174: getpost(\$0)
175: next
176: }
177: /\\\\/ {
178: isdef(\$0)
179: next
180: }
181: /.*/ {
182: print \$0
183: }
184: function getfile( saveline, n, bname, tname, j, name, flag){
185: saveline = \$0
186: if(\$0 ~ /\\\\input/)n = index(\$0,"\\\\input")+7
187: else n=index(\$0,"\\\\include")+9
188: bname = substr(\$0,n)
189: gsub(/^[ {]*/,"",bname)
190: gsub(/[ }].*/,"",bname)
191: gsub(/[ }]\$/,"",bname)
192: tname = bname ".tex"
193: for(j=1; j<= ninputs; j++){
194: name = texinputs[j] "/" tname
195: if((getline <name) >=0)break
196: name = texinputs[j] "/" bname
197: if((getline <name) >=0)break
198: name = ""
199: }
200: if(name == ""){
201: print "cannot open file " bname " or " tname | "cat 1>&2"
202: return
203: }
204: if(name ~ /\\/usr\\/lib\\/tex\\/macros/){
205: print saveline
206: return
207: }
208: flag=0
209: while(1){
210: if(flag)if((getline <name)<1)break
211: flag=1
212: if(\$0 ~ /\\\\newcommand/){
213: ckdef(name, \$0, 1)
214: continue
215: }
216: if(\$0 ~ /\\\\def[^a-z]/){
217: ckdef(name, \$0, 0)
218: continue
219: }
220: if(\$0 ~ /\\\\(input|include)[{ ]/){
221: getfile()
222: }
223: else if(\$0 ~ /\\\\special/)getpost(\$0)
224: else if(\$0 ~ /\\\\/){
225: isdef(\$0)
226: }
227: else print \$0
228: }
229: close(name)
230: }
231: function getpost(str){
232: if(str ~ /psfile/){
233: n=substr(str,index(str,"psfile"))
234: if(n ~ / /)sub(/ .*/, "", n)
235: if(n ~ /\\=/)sub(/.*=/, "", n)
236: if(n ~ /,$/)sub(/,/, "", n)
237: if(n ~ /,.*/)sub(/,.*/, "", n)
238: system( "cp " n " " dir)
239: close( "cp " n " " dir)
240: if(n ~ /\\//){
241: num = split(n, xa, /\\//)
242: sub(n, xa[num], str)
243: }
244: print str
245: }
246: else print str
247: }
248: function ckdef(file, first,new){
249: print first
250: if(new){
251: n=index(first,"{")+1
252: name=substr(first,n,index(first,"}")-n)
253: name = "\\\\" name
254: n=index(first,"[")+1
255: if(n > 1)
256: args=substr(first,n,index(first,"]")-n)+0
257: else args=0
258: }
259: else {
260: sub(/\\\\def\\\\/,"")
261: savs = first
262: if(first ~ /^[A-Za-z]/){
263: abc=first
264: sub(/[^A-Za-z]/,"{",abc)
265: name = "\\\\\\\\" substr(first,0,index(abc,"{")-1)
266: }
267: else name = "\\\\\\\\" substr(first,0,1)
268: if(savs ~ /#/){
269: if(savs ~ "{")gsub(/{.*/, "",savs)
270: n=split(savs, z, "#")
271: args = n-1
272: }
273: else args=0
274: xdef=1
275: }
276: if(first ~ "%"){
277: n=split(first, z, "%")
278: save = z[1]
279: left=gsub(/{/,":",z[1])
280: right=gsub(/}/,";",z[1])
281: }
282: else{
283: save = \$0
284: left=gsub(/{/,":")
285: right=gsub(/}/,";")
286: }
287: psav = isav = 0
288: if(\$0 ~ /special/){
289: getpattern(file, save)
290: psav++
291: }
292: while(left != right || (left == 1 && !xdef)){
293: if(file== 0){
294: if((getline) <1){
295: print "ran out of file in newcommand"|"cat 1>&2"
296: exit
297: }
298: }
299: else if((getline<file) < 1){
300: print "ran out of file in newcommand"|"cat 1>&2"
301: exit
302: }
303: save=\$0
304: left +=gsub(/{/,":")
305: right+=gsub(/}/,";")
306: if(\$0 ~ /special/){
307: getpattern(file, save)
308: psav++
309: }
310: if(\$0 ~ /(input|include)/){
311: getpattern(file, save)
312: isav++
313: }
314: else print save
315: }
316: if(psav||isav){
317: argct[idef] = args
318: if(psave)post[idef] = psav
319: else inp[idef]=isav
320: def[idef++] = name
321: }
322:
323: }
324: function getpattern(file, command){
325: save = command
326: if(command ~ /psfile/){
327: n=substr(command, index(command, "psfile"))
328: sub(/.*=[ \\t]*/,"",n)
329: sub(/}*\$/,"",n)
330: sub(/ .*/,"",n)
331: ckargs(n,save)
332: }
333: if(command ~ /(input|include)/){
334: if(command ~ /\\\\input/)n = index(command,"\\\\input")+7
335: else n=index(command,"\\\\include")+9
336: bname = substr(command,n)
337: gsub(/^[ ]*/,"",bname)
338: gsub(/[ }].*/,"",bname)
339: gsub(/[ }]\$/,"",bname)
340: ckargs(bname,save)
341: }
342: }
343: function ckargs(pat,command){
344: if(pat ~ /#/)
345: num = substr(pat,index(pat,"#")+1,1)
346: else num = 0
347: pattern[idef,num] = pat
348: if(command ~ /\\//){
349: num = split(pat, xa, /\\//)
350: sub(n, xa[num], command)
351: }
352: print command
353: }
354: function cpfile(name, pat){
355: if(name ~ "}")
356: sub(/}.*/,"", name)
357: sub(/#./,name,pat)
358: system("cp " pat " " dir)
359: close("cp " pat " " dir)
360: if(name ~ /\\//){
361: num = split(name, xa, /\\//)
362: sub(name, xa[num],string)
363: }
364: }
365: function isdef(string, i, gotarg, a, x, j, l, r){
366: if(idef){
367: for(i=0;i<idef;i++){
368: if(string !~ def[i])continue
369: if((i,0) in pattern){
370: system("cp " pattern[idef,0] " " dir)
371: close("cp " pattern[idef,0] " " dir)
372: break
373: }
374: gotarg=0
375: a=string
376: while(gotarg<argct[i]){
377: x=0
378: if(j=index(a,"{")){
379: x++
380: a = substr(a,j+1)
381: if((i,gotarg+1) in pattern)
382: cpfile(a, pattern[i,gotarg+1])
383: while(x){
384: l=index(a,"{")
385: r=index(a,"}")
386: if(!l && !r){
387: getline
388: string = string "\\n" \$0
389: a=\$0
390: continue
391: }
392: if(l<r && l>0){
393: x++
394: a=substr(a,l+1)
395: }
396: else{
397: a=substr(a,r+1)
398: x--
399: }
400: }
401: gotarg++
402: }
403: else {
404: getline
405: string = string "\\n" \$0
406: a = \$0
407: }
408: }
409: break
410: }
411: }
412: print string
413: }
414: !
415: ${AWK} -f ${AWKTEMP} dir=$DIR texinp=$TEXINPUTS $ARG.tex >>$OUTP
416: # NOTE - END of doinput.awk
417: # Check that it ended okay
418: if test $? -ne 0
419: then
420: echo "Sorry - couldnt collect together the full text of your document."
421: echo "No full text was sent! Contact the docsubmit provider with questions."
422: exit 1
423: fi
424:
425: if test -s $ARG.bbl
426: then
427: cp $ARG.bbl $BBL
428: else if test \( -s $ARG.bib \) -a \( ! -s $DIR/$ARG.bib \)
429: then
430: cp $ARG.bib $BIB
431: fi
432: fi
433: else
434: echo "...\\\"" `date` >$OUTP
435: echo "...\\\"" EmailAddress ${MACH}"!"${LOGNAME} >>$OUTP
436: if test "${DOCNUM}" != "junk"
437: then
438: echo "...\\\" DocNum ${DOCNUM}" >>$OUTP
439: fi
440: echo "...\\\"" `pwd` >>$OUTP
441: if test $REF
442: then
443: cat >>$OUTP <<x
444: ...\"refer first
445: x
446: fi
447: if test $COVER = $$
448: then
449: PARMS="$ARGS"
450: else
451: PARMS="$COVER $ARGS"
452: fi
453: # THis use to invoke subso.awk
454: # Note ends with ENOD of subso.awk
455: cat >${AWKTEMP} <<!
456: BEGIN {seen[""] = 0
457: picoutput = "This paper appears to have pic output included.\\n"
458: picoutput = picoutput "We do not accept papers with pic output.\\n"
459: picoutput = picoutput "Please resubmit it with the pic input instead.\\n"
460: picoutput = picoutput "If the pic input is in separate files, you can include it by saying:\\n"
461: picoutput = picoutput " .PS <picfile"
462: tbloutput = "This paper appears to have tbl output included.\\n"
463: tbloutput = tbloutput "We do not accept papers with tbl output.\\n"
464: tbloutput = tbloutput "Please resubmit it with the tbl input instead.\\n"
465: tpedoutput = "This paper appears to have tped output included.\\n"
466: tpedoutput = tpedoutput "We do not accept papers with tped output.\\n"
467: tpedoutput = tpedoutput "Please resubmit it with the tped input instead.\\n"
468: intbl = ineq = tped = 0
469: }
470: # macro include picture macro, guess that it's arg2
471: /^\\./ {
472: if((\$1 in incmacro) && (NF > 1)){
473: havecopy(\$1, \$2, 2)
474: next
475: }
476: }
477: # .so - get input file
478: # or .de that includes .so - try to get file as arg2
479: /^\\.so/ || \$1 in hasso {
480: getfile(\$2)
481: next
482: }
483: # bwk macro
484: /^\\.ge/ {
485: system( "trget " NF " " \$2 " " \$3 " " \$4 " " \$5 )
486: close( "trget " NF " " \$2 " " \$3 " " \$4 " " \$5 )
487: next
488: }
489: # bwk macro
490: /^\\.ru/ {
491: system( \$2 " " \$3 " " \$4 " " \$5 " " \$6 " " \$7 " " \$8 " " \$9 )
492: close( \$2 " " \$3 " " \$4 " " \$5 " " \$6 " " \$7 " " \$8 " " \$9 )
493: next
494: }
495: # inline .sy - execute
496: /^\\.sy/ {
497: system( \$2 " " \$3 " " \$4 " " \$5 " " \$6 " " \$7 " " \$8 " " \$9 )
498: close( \$2 " " \$3 " " \$4 " " \$5 " " \$6 " " \$7 " " \$8 " " \$9 )
499: next
500: }
501: /^\\.bm/ {
502: next
503: }
504: # switch in and out of eqn
505: /^\\.EQ/ { ineq = 1 }
506: /^\\.EN/ { ineq = 0 }
507: # switch in and out of tbl
508: /^\\.TS/ { intbl = 1 }
509: /^\\.TE/ { intbl = 0 }
510: # all tbl output has this - unlikely otherwise - reject
511: /^\\.de 35/ {
512: if(intbl){
513: print tbloutput|"cat 1>&2"
514: exit 1
515: }
516: }
517: # save eqn delimiters - # bad for tbl, pic - warn
518: /^[ ]*delim[ ]*/ {
519: if(ineq){
520: if(\$2 ~ /#/)
521: print "eqn delimiters in " \$0 " will break tbl, pic etc"|"cat 1>&2"
522: delim = \$0
523: }
524: }
525: # macro definition - check for embedded picture macros
526: # bitmaps, or .so
527: /^\\.de/ {
528: if(\$0 ~ /IS/)
529: print ".IS is defined in " file " check it for ideal"|"cat 1>&2"
530: print \$0
531: xname = \$2
532: while((getline) > 0){
533: if(\$0 ~ /^\\.\\./)break
534: if(\$0 ~ /^\\.BM/)incmacro["." xname]=1
535: if(\$0 ~ /^\\.BP/)incmacro["." xname]=1
536: if(\$0 ~ /^\\.PI/)incmacro["." xname]=1
537: if(\$0 ~ /^\\.so/){
538: hasso["." xname] = 1
539: print "The .so embedded in macro " xname " will cause files not to be shipped " | "cat 1>&2"
540: defso = 1
541: }
542: print \$0
543: }
544: }
545: # .PS <file
546: # check if file contains .PS
547: # replace .PS <file with file (and .PS in needed)
548: # copy other files if copy thru included
549: /^\\.PS[ \\t]*</ {
550: gsub(/ /,"")
551: a=substr(\$0,index(\$0,"<")+1)
552: if((getline<a) >0){
553: if(\$0 ~ /^\\./){
554: print \$0
555: pflag=1
556: if(\$0 !~ /^\\.PS/){
557: while(getline<a > 0){
558: if(\$0 !~ /^\\./)break
559: print \$0
560: if(\$0 ~ /^\\.PS/)pflag=0
561: }
562: if(pflag)print ".PS"
563: }
564: }
565: else print ".PS"
566: flag=0
567: pflag = 1
568: while(1){
569: if(flag)if((getline<a)<=0)break
570: flag=1
571: if(\$0 ~ /^\\.P[EF]/)pflag=0
572: if(\$0 ~ /(copy|include)/){
573: for(i=1;i<NF;i++)
574: if(\$i ~ /(copy|include)/)break
575: i++
576: if ((\$i !~ "thru") && (\$i !~ "through")) {
577: havecopy(\$1, \$i, i);
578: }
579: else print \$0
580: }
581: else print \$0
582: }
583: if(pflag)print ".PE"
584: close(a)
585: }
586: else {
587: print "couldn't open pic file:" a|"cat 1>&2"
588: print "from line: " \$0|"cat 1>&2"
589: exit 1
590: }
591: next
592: }
593: # tped .GS may name file to include
594: # if so, copy file; replace full path with file name
595: # else toggle tped flag
596: /^\\.GS/ {
597: if(NF > 1){
598: for(t=2; t<=NF;t++){
599: if(\$t !~ "-" && \$t !~ "="){
600: system( "cp " \$t " " dir )
601: close( "cp " \$t " " dir )
602: if(\$0 ~ "/"){
603: nstat=split(\$0,stat,"/")
604: cmd = ""
605: for(xx=1;xx<t;xx++)
606: cmd= cmd \$xx " "
607: print cmd stat[nstat]
608: }
609: else print \$0
610: next
611: }
612: }
613: }
614: intped=1
615: }
616: /^\\.GE/ {
617: intped=0
618: }
619: # .sp -1 clue of included tped output
620: /^\\.sp -1/ {
621: if(intped){
622: print tpedout|"cat 1>&2"
623: exit 1
624: }
625: }
626: # grap/pic may include file
627: /^\\.(G1|PS)/ {
628: print \$0
629: while(getline > 0){
630: if(\$0 ~ /(copy|include)/){
631: for(i=1;i<NF;i++)
632: if(\$i ~ /(copy|include)/)break
633: i++
634: if ((\$i !~ "thru") && (\$i !~ "through")) {
635: havecopy(\$1, \$i, i);
636: }
637: else print \$0
638: }
639: else if(\$0 ~ /^\\.(G2|PE)/){
640: print \$0
641: break
642: }
643: else if(\$0 ~ /^\\.sp -1/){ #sign in pic output included
644: print picoutput|"cat 1>&2"
645: exit 1
646: }
647: else print \$0
648: }
649: next
650: }
651: # ideal - may include file
652: /^\\.IS/ {
653: print \$0
654: while(getline){
655: if(\$0 ~ /^\\.I[EF]/){
656: print \$0
657: next
658: }
659: else if(\$0 ~ /^[\\.]+include/)
660: doinclude(\$1, \$2, 0)
661: else print \$0
662: }
663: }
664: # postscript pictures - get file
665: /^\\.(BM|BP|PI)/ {
666: if(NF > 1)havecopy(\$1,\$2,2)
667: else print \$0
668: next
669: }
670: # macro called that includes .so probably not included
671: /^\\./ {
672: if(\$1 in hasso)
673: print \$2 | "cat 1>&2"
674: }
675: /.*/ {
676: print \$0
677: }
678: function havecopy(cmd, file, i){
679: if(file ~ /"/){
680: quotes=1
681: n = split(file, name, "\\"")
682: if(n>1)rname = name[2]
683: }
684: else {
685: rname = file
686: quotes=0
687: }
688: system( "cp " rname " " dir )
689: close( "cp " rname " " dir )
690: if(rname ~ "/"){
691: n = split(rname,nn, "/")
692: NAME=nn[n]
693: }
694: else NAME=rname
695: if(i > 2)for(j=2;j<i;j++)cmd = cmd " " \$j
696: if(quotes)cmd = cmd " \\"" NAME "\\""
697: else cmd = cmd " " NAME
698: if(NF >= i+1)
699: for(j=i+1; j<=NF; j++)cmd = cmd " " \$j
700: print cmd
701: }
702: function getfile(file, File, eflag,first,indef,xname,fintbl,finpic){
703: if(file ~ /\\/usr\\/lib\\//|| file ~ /\\/exptools\\//){
704: print \$0
705: return
706: }
707: if((getline <file) > 0){
708: if(\$0 ~ /^\\.lf/){
709: File=\$NF
710: saveline=\$0
711: if((getline <File)<=0){
712: print "This paper contains preprocessor output evidenced by " saveline| "cat 1>&2"
713: print "and I can't find the source file " File|"cat 1>&2"
714: while((getline < file) >0 && \$0 ~ /^\\.lf/)
715: print \$0| "cat 1>&2"
716: print "paper not submitted" | "cat 1>&2"
717: exit 1
718: }
719: }
720: else File = file
721: }
722: else {
723: print "cannot open file " file | "cat 1>&2"
724: return
725: }
726: if(File in seen){
727: close(File)
728: return
729: }
730: if(delim != ""){
731: print ".EQ\\ndelim off\\n.EN"
732: eflag=1
733: }
734: seen[File] = 1
735: first=1
736: while(1){
737: if(first==0)if((getline <File)<=0)break
738: first = 0
739: if(\$0 ~ /^\\.(de|am)/){
740: if(fintbl && \$0 ~ /^\\.de 35/){
741: print tbloutput|"cat 1>&2"
742: print "The tbl output is in the .so file named:" File|"cat 1>&2"
743: exit 1
744: }
745: indef=1
746: xname = \$2
747: }
748: if(indef && \$0 ~ /^\\.BM/)incmacro["." xname]=1
749: if(indef && \$0 ~ /^\\.BP/)incmacro["." xname]=1
750: if(indef && \$0 ~ /^\\.PI/)incmacro["." xname]=1
751: if(\$0 ~ /^\\.\\.\$/)indef=0
752: if(\$0 ~ /^\\.sy/ && indef == 0){
753: print "the .sy commands in this paper will not be handled" indef|"cat 1>&2"
754: if(debug ~ /-d/){
755: print \$0
756: continue
757: }
758: print "paper not submitted" | "cat 1>&2"
759: exit 1
760: }
761: if(\$0 ~ /^\\.TS/)fintbl=1
762: if(\$0 ~ /^\\.TE/)fintbl=0
763: if(\$0 ~ /^\\.PS/)finpic=1
764: if(\$0 ~ /^\\.PE/)finpic=0
765: if(finpic && \$0 ~ /^\\.sp -1/){
766: print picoutput|"cat 1>&2"
767: print "The pic output is in the .so file named:" File|"cat 1>&2"
768: exit 1
769: }
770: if((\$1 in incmacro)&& (NF > 1))
771: havecopy(\$1, \$2, 2)
772: else if(!indef && \$0 ~ /^\\.so/)
773: getfile(\$2)
774: else print \$0
775: }
776: close(File)
777: if(eflag){
778: print ".EQ\\n" delim "\\n.EN"
779: eflat = 0
780: }
781: }
782: function doinclude(cmd, fname, fileflag, file){
783: if(fname ~ "/"){
784: n=split(fname,name,"/")
785: if(fileflag)print cmd " " name[n] >(dir "/" file)
786: else print cmd " " name[n]
787: }
788: else if(fileflag)print cmd " " fname >(dir "/" file)
789: else print cmd " " fname
790: while((getline<fname)>0){
791: if(\$0 ~ /^[\\.]+include/)
792: doinclude(\$1, \$2, 1, fname)
793: else print \$0 >(dir "/" fname)
794: }
795: close(fname)
796: }
797: !
798: ${AWK} -f ${AWKTEMP} dir=$DIR $PARMS >>$OUTP
799: # NOTE: END of subso.awk
800: # Check that it ended okay
801: if test $? -ne 0
802: then
803: echo "Sorry - couldnt collect together the full text of your document."
804: echo "No full text was sent! Contact the docsubmit provider with questions."
805: exit 1
806: fi
807:
808: if test $REF
809: then
810: cat >>$OUTP <<x
811: ...\"refer begin
812: x
813: cat $REF >>$OUTP
814: cat >>$OUTP <<x
815: ...\"refer end
816: x
817: fi
818: fi
819: cd $T
820: ls $NAME/*|cpio -oc >$NAME.cp
821: chmod 0644 $NAME.cp
822: uucp -C $NAME.cp mhuxd!~/full.text/
823: echo "
824: The full text of your document has been sent to the Library Network.
825: Please note that an official paper copy MUST still be filed.
826: "
827: exit 0
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.