|
|
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.