/* TEXC exec: based on the texc.script for Unix. */ /* This is version 2.0 as of 9 Nov. 1992. */ /* Written by Jim Hafner (hafner@almaden.ibm.com). */ /* */ /* Command is: */ /* TEXC [ifn.[ift [ofn.[oft]]]] */ /* Note: filemodes are not USED in the input and output file */ /* name specification. They default to '*' and 'A' for */ /* the input and output files, respectively. */ /* */ /* The defaults: */ /* ifn: TEX ift: LPRO */ /* ofn: TEXC oft: LPRO */ /* END OF HEADER (this line must be preceded by a blank line) */ /* This program is part of the VM/CMS version of DVIPS, a TeX dvi to * PostScript driver written by Tom Rokicki. It is used in the MKDVIPS * procedure to build the TEXC.LPRO file from the TEX.LPRO file. This is * then followed by SQEEZE to remove the comment lines and pack the files * tighter. * * You are welcome to modify this exec in any way you choose. * * It reads the input file and deletes all the lines between and * including * % begin code for uncompressed fonts only * and * % end code for uncompressed fonts only * Then it strips the leading % comment symbol from all the succeeding * lines up to and including the line * % % end of code for unpacking compressed fonts * * THANKS: * Many thanks to Ronald Kappert (R.Kappert@uci.kun.nl) for sending * me many suggestions to enhance the support for this program. * Also, Michel Goossens (goossens@cernvm.cern.ch) for other ideas * and helping with the testing. */ parse upper source . . execfn execft execfm . parse upper arg ifn'.'ift ofn'.'oft . default_ifn = 'TEX'; default_ofn = 'TEXC' default_ift = 'LPRO'; ifm = '*'; default_oft = 'LPRO'; ofm = 'A1'; if ifn = '?' then signal show_header ; if ifn = '' then ifn = default_ifn if ift = '' then ift = default_ift if ofn = '' then ofn = default_ofn if oft = '' then oft = default_oft upper ofn oft ofm address 'COMMAND' 'STATE' ifn ift ifm if rc^=0 then signal input_state_error 'STATE' ofn oft ofm if rc=0 then do say execfn': Output File' ofn oft ofm 'already exists.' say execfn': Will overwrite with new version.' "ERASE "ofn oft ofm end else if rc^=28 then signal output_state_error 'MAKEBUF'; lev = rc; outputon = 1 stripcomment = 0 do forever 'EXECIO 1 DISKR' ifn ift ifm '(VAR LINE' if rc ^= 0 then leave parse var line comment text if ( comment = "%" &, delword(text,5) = "begin code for uncompressed" ) then do outputon = 0 stripcomment = 0 end if (comment = "%" &, delword(text,5) = "% here's the alternate" ) then do stripcomment = 1 outputon = 1 end if ( outputon == 1 & stripcomment == 1 ) then 'EXECIO 1 DISKW' ofn oft ofm '(STRING' text else if ( outputon = 1 & stripcomment == 0 ) then 'EXECIO 1 DISKW' ofn oft ofm '(STRING' line if (comment = "%" &, delword(text,7) = "% end of code for unpacking" ) then do stripcomment = 0 outputon = 1 end end 'DROPBUF' lev 'FINIS' ifn ift ifm 'FINIS' ofn oft ofm exit show_header: index=1 line=Sourceline(index) Do While Substr(line,1,2)="/*" parse var line '/*' middle '*/' say middle index=index+1 line=Sourceline(index) End Exit input_state_error: if rc = 28 then say execfn': Input File' ifn ift ifm 'does not exist.' else if rc = 36 then say execfn': Disk' ifm 'not accessed.' else say execfn': Error reading 'ifn ift ifm'.' exit rc output_state_error: if rc = 36 then say execfn': Disk' ofm 'not accessed.' else say execfn': Error writing to 'ofn oft ofm'.' exit rc /* exit */