#define PKTOGF #include "cpascal.h" #define maxcounts ( 400 ) typedef char ASCIIcode ; typedef text /* of char */ textfile ; typedef unsigned char eightbits ; typedef text /* of eightbits */ bytefile ; ASCIIcode xord[256] ; char xchr[256] ; bytefile gffile, pkfile ; cstring gfname, pkname ; integer gfloc, curloc ; integer i, j ; integer endofpacket ; integer dynf ; integer car ; integer tfmwidth ; integer xoff, yoff ; char comment[18] ; integer magnification ; integer designsize ; integer checksum ; integer hppp, vppp ; integer cheight, cwidth ; integer wordwidth ; integer horesc, veresc ; integer packetlength ; integer lasteoc ; integer minm, maxm, minn, maxn ; integer mminm, mmaxm, mminn, mmaxn ; integer charpointer[256], stfmwidth[256] ; integer shoresc[256], sveresc[256] ; integer thischarptr ; eightbits inputbyte ; eightbits bitweight ; integer rowcounts[maxcounts + 1] ; integer rcp ; integer countdown ; boolean done ; integer max ; integer repeatcount ; integer xtogo, ytogo ; boolean turnon, firston ; integer count ; integer curn ; integer flagbyte ; cinttype verbose ; #include "pktogf.h" void #ifdef HAVE_PROTOTYPES parsearguments ( void ) #else parsearguments ( ) #endif { #define noptions ( 3 ) getoptstruct longoptions[noptions + 1] ; integer getoptreturnval ; cinttype optionindex ; integer currentoption ; verbose = false ; currentoption = 0 ; longoptions [currentoption ].name = "help" ; longoptions [currentoption ].hasarg = 0 ; longoptions [currentoption ].flag = 0 ; longoptions [currentoption ].val = 0 ; currentoption = currentoption + 1 ; longoptions [currentoption ].name = "version" ; longoptions [currentoption ].hasarg = 0 ; longoptions [currentoption ].flag = 0 ; longoptions [currentoption ].val = 0 ; currentoption = currentoption + 1 ; longoptions [currentoption ].name = "verbose" ; longoptions [currentoption ].hasarg = 0 ; longoptions [currentoption ].flag = addressof ( verbose ) ; longoptions [currentoption ].val = 1 ; currentoption = currentoption + 1 ; longoptions [currentoption ].name = 0 ; longoptions [currentoption ].hasarg = 0 ; longoptions [currentoption ].flag = 0 ; longoptions [currentoption ].val = 0 ; do { getoptreturnval = getoptlongonly ( argc , argv , "" , longoptions , addressof ( optionindex ) ) ; if ( getoptreturnval == -1 ) { ; } else if ( getoptreturnval == 63 ) { usage ( 1 , "pktogf" ) ; } else if ( ( strcmp ( longoptions [optionindex ].name , "help" ) == 0 ) ) { usage ( 0 , PKTOGFHELP ) ; } else if ( ( strcmp ( longoptions [optionindex ].name , "version" ) == 0 ) ) { printversionandexit ( "This is PKtoGF, Version 1.1" , nil , "Tomas Rokicki" ) ; } } while ( ! ( getoptreturnval == -1 ) ) ; if ( ( optind + 1 != argc ) && ( optind + 2 != argc ) ) { fprintf( stderr , "%s\n", "pktogf: Need one or two file arguments." ) ; usage ( 1 , "pktogf" ) ; } } void #ifdef HAVE_PROTOTYPES initialize ( void ) #else initialize ( ) #endif { integer i ; kpsesetprogname ( argv [0 ]) ; kpseinitprog ( "PKTOGF" , 0 , nil , nil ) ; parsearguments () ; if ( verbose ) fprintf( output , "%s\n", "This is PKtoGF, Version 1.1" ) ; {register integer for_end; i = 0 ;for_end = 31 ; if ( i <= for_end) do xchr [i ]= '?' ; while ( i++ < for_end ) ;} xchr [32 ]= ' ' ; xchr [33 ]= '!' ; xchr [34 ]= '"' ; xchr [35 ]= '#' ; xchr [36 ]= '$' ; xchr [37 ]= '%' ; xchr [38 ]= '&' ; xchr [39 ]= '\'' ; xchr [40 ]= '(' ; xchr [41 ]= ')' ; xchr [42 ]= '*' ; xchr [43 ]= '+' ; xchr [44 ]= ',' ; xchr [45 ]= '-' ; xchr [46 ]= '.' ; xchr [47 ]= '/' ; xchr [48 ]= '0' ; xchr [49 ]= '1' ; xchr [50 ]= '2' ; xchr [51 ]= '3' ; xchr [52 ]= '4' ; xchr [53 ]= '5' ; xchr [54 ]= '6' ; xchr [55 ]= '7' ; xchr [56 ]= '8' ; xchr [57 ]= '9' ; xchr [58 ]= ':' ; xchr [59 ]= ';' ; xchr [60 ]= '<' ; xchr [61 ]= '=' ; xchr [62 ]= '>' ; xchr [63 ]= '?' ; xchr [64 ]= '@' ; xchr [65 ]= 'A' ; xchr [66 ]= 'B' ; xchr [67 ]= 'C' ; xchr [68 ]= 'D' ; xchr [69 ]= 'E' ; xchr [70 ]= 'F' ; xchr [71 ]= 'G' ; xchr [72 ]= 'H' ; xchr [73 ]= 'I' ; xchr [74 ]= 'J' ; xchr [75 ]= 'K' ; xchr [76 ]= 'L' ; xchr [77 ]= 'M' ; xchr [78 ]= 'N' ; xchr [79 ]= 'O' ; xchr [80 ]= 'P' ; xchr [81 ]= 'Q' ; xchr [82 ]= 'R' ; xchr [83 ]= 'S' ; xchr [84 ]= 'T' ; xchr [85 ]= 'U' ; xchr [86 ]= 'V' ; xchr [87 ]= 'W' ; xchr [88 ]= 'X' ; xchr [89 ]= 'Y' ; xchr [90 ]= 'Z' ; xchr [91 ]= '[' ; xchr [92 ]= '\\' ; xchr [93 ]= ']' ; xchr [94 ]= '^' ; xchr [95 ]= '_' ; xchr [96 ]= '`' ; xchr [97 ]= 'a' ; xchr [98 ]= 'b' ; xchr [99 ]= 'c' ; xchr [100 ]= 'd' ; xchr [101 ]= 'e' ; xchr [102 ]= 'f' ; xchr [103 ]= 'g' ; xchr [104 ]= 'h' ; xchr [105 ]= 'i' ; xchr [106 ]= 'j' ; xchr [107 ]= 'k' ; xchr [108 ]= 'l' ; xchr [109 ]= 'm' ; xchr [110 ]= 'n' ; xchr [111 ]= 'o' ; xchr [112 ]= 'p' ; xchr [113 ]= 'q' ; xchr [114 ]= 'r' ; xchr [115 ]= 's' ; xchr [116 ]= 't' ; xchr [117 ]= 'u' ; xchr [118 ]= 'v' ; xchr [119 ]= 'w' ; xchr [120 ]= 'x' ; xchr [121 ]= 'y' ; xchr [122 ]= 'z' ; xchr [123 ]= '{' ; xchr [124 ]= '|' ; xchr [125 ]= '}' ; xchr [126 ]= '~' ; {register integer for_end; i = 127 ;for_end = 255 ; if ( i <= for_end) do xchr [i ]= '?' ; while ( i++ < for_end ) ;} {register integer for_end; i = 0 ;for_end = 127 ; if ( i <= for_end) do xord [chr ( i ) ]= 32 ; while ( i++ < for_end ) ;} {register integer for_end; i = 32 ;for_end = 126 ; if ( i <= for_end) do xord [xchr [i ]]= i ; while ( i++ < for_end ) ;} mminm = 999999L ; mminn = 999999L ; mmaxm = -999999L ; mmaxn = -999999L ; {register integer for_end; i = 0 ;for_end = 255 ; if ( i <= for_end) do charpointer [i ]= -1 ; while ( i++ < for_end ) ;} } void #ifdef HAVE_PROTOTYPES openpkfile ( void ) #else openpkfile ( ) #endif { pkname = cmdline ( optind ) ; pkfile = kpseopenfile ( cmdline ( optind ) , kpsepkformat ) ; if ( pkfile ) { curloc = 0 ; } } void #ifdef HAVE_PROTOTYPES opengffile ( void ) #else opengffile ( ) #endif { if ( optind + 1 == argc ) { gfname = basenamechangesuffix ( pkname , "pk" , "gf" ) ; } else { gfname = cmdline ( optind + 1 ) ; } rewritebin ( gffile , gfname ) ; gfloc = 0 ; } integer #ifdef HAVE_PROTOTYPES getbyte ( void ) #else getbyte ( ) #endif { register integer Result; eightbits b ; if ( eof ( pkfile ) ) Result = 0 ; else { read ( pkfile , b ) ; curloc = curloc + 1 ; Result = b ; } return Result ; } integer #ifdef HAVE_PROTOTYPES signedbyte ( void ) #else signedbyte ( ) #endif { register integer Result; eightbits b ; read ( pkfile , b ) ; curloc = curloc + 1 ; if ( b < 128 ) Result = b ; else Result = b - 256 ; return Result ; } integer #ifdef HAVE_PROTOTYPES gettwobytes ( void ) #else gettwobytes ( ) #endif { register integer Result; eightbits a, b ; read ( pkfile , a ) ; read ( pkfile , b ) ; curloc = curloc + 2 ; Result = a * 256 + b ; return Result ; } integer #ifdef HAVE_PROTOTYPES signedpair ( void ) #else signedpair ( ) #endif { register integer Result; eightbits a, b ; read ( pkfile , a ) ; read ( pkfile , b ) ; curloc = curloc + 2 ; if ( a < 128 ) Result = a * 256 + b ; else Result = ( a - 256 ) * 256 + b ; return Result ; } integer #ifdef HAVE_PROTOTYPES signedquad ( void ) #else signedquad ( ) #endif { register integer Result; eightbits a, b, c, d ; read ( pkfile , a ) ; read ( pkfile , b ) ; read ( pkfile , c ) ; read ( pkfile , d ) ; curloc = curloc + 4 ; if ( a < 128 ) Result = ( ( a * 256 + b ) * 256 + c ) * 256 + d ; else Result = ( ( ( a - 256 ) * 256 + b ) * 256 + c ) * 256 + d ; return Result ; } void #ifdef HAVE_PROTOTYPES zgf16 ( integer i ) #else zgf16 ( i ) integer i ; #endif { { putbyte ( i / 256 , gffile ) ; gfloc = gfloc + 1 ; } { putbyte ( i % 256 , gffile ) ; gfloc = gfloc + 1 ; } } void #ifdef HAVE_PROTOTYPES zgf24 ( integer i ) #else zgf24 ( i ) integer i ; #endif { { putbyte ( i / 65536L , gffile ) ; gfloc = gfloc + 1 ; } gf16 ( i % 65536L ) ; } void #ifdef HAVE_PROTOTYPES zgfquad ( integer i ) #else zgfquad ( i ) integer i ; #endif { if ( i >= 0 ) { { putbyte ( i / 16777216L , gffile ) ; gfloc = gfloc + 1 ; } } else { i = i + 1073741824L ; i = i + 1073741824L ; { putbyte ( 128 + ( i / 16777216L ) , gffile ) ; gfloc = gfloc + 1 ; } } gf24 ( i % 16777216L ) ; } integer #ifdef HAVE_PROTOTYPES getnyb ( void ) #else getnyb ( ) #endif { register integer Result; eightbits temp ; if ( bitweight == 0 ) { inputbyte = getbyte () ; bitweight = 16 ; } temp = inputbyte / bitweight ; inputbyte = inputbyte - temp * bitweight ; bitweight = bitweight / 16 ; Result = temp ; return Result ; } boolean #ifdef HAVE_PROTOTYPES getbit ( void ) #else getbit ( ) #endif { register boolean Result; boolean temp ; bitweight = bitweight / 2 ; if ( bitweight == 0 ) { inputbyte = getbyte () ; bitweight = 128 ; } temp = inputbyte >= bitweight ; if ( temp ) inputbyte = inputbyte - bitweight ; Result = temp ; return Result ; } integer #ifdef HAVE_PROTOTYPES pkpackednum ( void ) #else pkpackednum ( ) #endif { register integer Result; integer i, j ; i = getnyb () ; if ( i == 0 ) { do { j = getnyb () ; i = i + 1 ; } while ( ! ( j != 0 ) ) ; while ( i > 0 ) { j = j * 16 + getnyb () ; i = i - 1 ; } Result = j - 15 + ( 13 - dynf ) * 16 + dynf ; } else if ( i <= dynf ) Result = i ; else if ( i < 14 ) Result = ( i - dynf - 1 ) * 16 + getnyb () + dynf + 1 ; else { if ( i == 14 ) repeatcount = pkpackednum () ; else repeatcount = 1 ; Result = pkpackednum () ; } return Result ; } void #ifdef HAVE_PROTOTYPES skipspecials ( void ) #else skipspecials ( ) #endif { integer i, j, k ; thischarptr = gfloc ; do { flagbyte = getbyte () ; if ( flagbyte >= 240 ) switch ( flagbyte ) {case 240 : case 241 : case 242 : case 243 : { i = 0 ; { putbyte ( flagbyte - 1 , gffile ) ; gfloc = gfloc + 1 ; } {register integer for_end; j = 240 ;for_end = flagbyte ; if ( j <= for_end) do { k = getbyte () ; { putbyte ( k , gffile ) ; gfloc = gfloc + 1 ; } i = 256 * i + k ; } while ( j++ < for_end ) ;} {register integer for_end; j = 1 ;for_end = i ; if ( j <= for_end) do { putbyte ( getbyte () , gffile ) ; gfloc = gfloc + 1 ; } while ( j++ < for_end ) ;} } break ; case 244 : { { putbyte ( 243 , gffile ) ; gfloc = gfloc + 1 ; } gfquad ( signedquad () ) ; } break ; case 245 : { ; } break ; case 246 : { ; } break ; case 247 : case 248 : case 249 : case 250 : case 251 : case 252 : case 253 : case 254 : case 255 : { verbose = true ; if ( verbose ) fprintf( output , "%s%ld%c\n", "Unexpected " , (long)flagbyte , '!' ) ; uexit ( 1 ) ; } break ; } } while ( ! ( ( flagbyte < 240 ) || ( flagbyte == 245 ) ) ) ; } void mainbody() { initialize () ; openpkfile () ; opengffile () ; if ( getbyte () != 247 ) { verbose = true ; if ( verbose ) fprintf( output , "%s\n", "Bad pk file! pre command missing." ) ; uexit ( 1 ) ; } { putbyte ( 247 , gffile ) ; gfloc = gfloc + 1 ; } if ( getbyte () != 89 ) { verbose = true ; if ( verbose ) fprintf( output , "%s\n", "Wrong version of packed file!." ) ; uexit ( 1 ) ; } { putbyte ( 131 , gffile ) ; gfloc = gfloc + 1 ; } j = getbyte () ; { putbyte ( j , gffile ) ; gfloc = gfloc + 1 ; } if ( verbose ) putc ( '{' , output ); {register integer for_end; i = 1 ;for_end = j ; if ( i <= for_end) do { hppp = getbyte () ; { putbyte ( hppp , gffile ) ; gfloc = gfloc + 1 ; } if ( verbose ) putc ( xchr [xord [hppp ]], output ); } while ( i++ < for_end ) ;} if ( verbose ) fprintf( output , "%c\n", '}' ) ; designsize = signedquad () ; checksum = signedquad () ; hppp = signedquad () ; vppp = signedquad () ; if ( hppp != vppp ) if ( verbose ) fprintf( output , "%s\n", "Warning: aspect ratio not 1:1!" ) ; magnification = round ( hppp * 72.27 * 5 / ((double) 65536L ) ) ; lasteoc = gfloc ; skipspecials () ; while ( flagbyte != 245 ) { dynf = flagbyte / 16 ; flagbyte = flagbyte % 16 ; turnon = flagbyte >= 8 ; if ( turnon ) flagbyte = flagbyte - 8 ; if ( flagbyte == 7 ) { packetlength = signedquad () ; car = signedquad () ; endofpacket = packetlength + curloc ; tfmwidth = signedquad () ; horesc = signedquad () ; veresc = signedquad () ; cwidth = signedquad () ; cheight = signedquad () ; wordwidth = ( cwidth + 31 ) / 32 ; xoff = signedquad () ; yoff = signedquad () ; } else if ( flagbyte > 3 ) { packetlength = ( flagbyte - 4 ) * 65536L + gettwobytes () ; car = getbyte () ; endofpacket = packetlength + curloc ; i = getbyte () ; tfmwidth = i * 65536L + gettwobytes () ; horesc = gettwobytes () * 65536L ; veresc = 0 ; cwidth = gettwobytes () ; cheight = gettwobytes () ; wordwidth = ( cwidth + 31 ) / 32 ; xoff = signedpair () ; yoff = signedpair () ; } else { packetlength = flagbyte * 256 + getbyte () ; car = getbyte () ; endofpacket = packetlength + curloc ; i = getbyte () ; tfmwidth = i * 65536L + gettwobytes () ; horesc = getbyte () * 65536L ; veresc = 0 ; cwidth = getbyte () ; cheight = getbyte () ; wordwidth = ( cwidth + 31 ) / 32 ; xoff = signedbyte () ; yoff = signedbyte () ; } if ( ( cheight == 0 ) || ( cwidth == 0 ) ) { cheight = 0 ; cwidth = 0 ; xoff = 0 ; yoff = 0 ; } minm = - (integer) xoff ; if ( minm < mminm ) mminm = minm ; maxm = cwidth + minm ; if ( maxm > mmaxm ) mmaxm = maxm ; minn = yoff - cheight + 1 ; maxn = yoff ; if ( minn > maxn ) minn = maxn ; if ( minn < mminn ) mminn = minn ; if ( maxn > mmaxn ) mmaxn = maxn ; { i = car % 256 ; if ( ( charpointer [i ]== -1 ) ) { sveresc [i ]= veresc ; shoresc [i ]= horesc ; stfmwidth [i ]= tfmwidth ; } else { if ( ( sveresc [i ]!= veresc ) || ( shoresc [i ]!= horesc ) || ( stfmwidth [i ]!= tfmwidth ) ) if ( verbose ) fprintf( output , "%s%ld%s\n", "Two characters mod " , (long)i , " have mismatched parameters" ) ; } } { if ( ( charpointer [car % 256 ]== -1 ) && ( car >= 0 ) && ( car < 256 ) && ( maxm >= 0 ) && ( maxm < 256 ) && ( maxn >= 0 ) && ( maxn < 256 ) && ( maxm >= minm ) && ( maxn >= minn ) && ( maxm < minm + 256 ) && ( maxn < minn + 256 ) ) { charpointer [car % 256 ]= thischarptr ; { putbyte ( 68 , gffile ) ; gfloc = gfloc + 1 ; } { putbyte ( car , gffile ) ; gfloc = gfloc + 1 ; } { putbyte ( maxm - minm , gffile ) ; gfloc = gfloc + 1 ; } { putbyte ( maxm , gffile ) ; gfloc = gfloc + 1 ; } { putbyte ( maxn - minn , gffile ) ; gfloc = gfloc + 1 ; } { putbyte ( maxn , gffile ) ; gfloc = gfloc + 1 ; } } else { { putbyte ( 67 , gffile ) ; gfloc = gfloc + 1 ; } gfquad ( car ) ; gfquad ( charpointer [car % 256 ]) ; charpointer [car % 256 ]= thischarptr ; gfquad ( minm ) ; gfquad ( maxm ) ; gfquad ( minn ) ; gfquad ( maxn ) ; } } if ( ( cwidth > 0 ) && ( cheight > 0 ) ) { bitweight = 0 ; countdown = cheight * cwidth - 1 ; if ( dynf == 14 ) turnon = getbit () ; repeatcount = 0 ; xtogo = cwidth ; ytogo = cheight ; curn = cheight ; count = 0 ; firston = turnon ; turnon = ! turnon ; rcp = 0 ; while ( ytogo > 0 ) { if ( count == 0 ) { turnon = ! turnon ; if ( dynf == 14 ) { count = 1 ; done = false ; while ( ! done ) { if ( countdown <= 0 ) done = true ; else if ( ( turnon == getbit () ) ) count = count + 1 ; else done = true ; countdown = countdown - 1 ; } } else count = pkpackednum () ; } if ( rcp == 0 ) firston = turnon ; while ( count >= xtogo ) { rowcounts [rcp ]= xtogo ; count = count - xtogo ; {register integer for_end; i = 0 ;for_end = repeatcount ; if ( i <= for_end) do { if ( ( rcp > 0 ) || firston ) { j = 0 ; max = rcp ; if ( ! turnon ) max = max - 1 ; if ( curn - ytogo == 1 ) { if ( firston ) { putbyte ( 74 , gffile ) ; gfloc = gfloc + 1 ; } else if ( rowcounts [0 ]< 165 ) { { putbyte ( 74 + rowcounts [0 ], gffile ) ; gfloc = gfloc + 1 ; } j = j + 1 ; } else { putbyte ( 70 , gffile ) ; gfloc = gfloc + 1 ; } } else if ( curn > ytogo ) { if ( curn - ytogo < 257 ) { { putbyte ( 71 , gffile ) ; gfloc = gfloc + 1 ; } { putbyte ( curn - ytogo - 1 , gffile ) ; gfloc = gfloc + 1 ; } } else { { putbyte ( 72 , gffile ) ; gfloc = gfloc + 1 ; } gf16 ( curn - ytogo - 1 ) ; } if ( firston ) { putbyte ( 0 , gffile ) ; gfloc = gfloc + 1 ; } } else if ( firston ) { putbyte ( 0 , gffile ) ; gfloc = gfloc + 1 ; } curn = ytogo ; while ( j <= max ) { if ( rowcounts [j ]< 64 ) { putbyte ( 0 + rowcounts [j ], gffile ) ; gfloc = gfloc + 1 ; } else if ( rowcounts [j ]< 256 ) { { putbyte ( 64 , gffile ) ; gfloc = gfloc + 1 ; } { putbyte ( rowcounts [j ], gffile ) ; gfloc = gfloc + 1 ; } } else { { putbyte ( 65 , gffile ) ; gfloc = gfloc + 1 ; } gf16 ( rowcounts [j ]) ; } j = j + 1 ; } } ytogo = ytogo - 1 ; } while ( i++ < for_end ) ;} repeatcount = 0 ; xtogo = cwidth ; rcp = 0 ; if ( ( count > 0 ) ) firston = turnon ; } if ( count > 0 ) { rowcounts [rcp ]= count ; if ( rcp == 0 ) firston = turnon ; rcp = rcp + 1 ; if ( rcp > maxcounts ) { verbose = true ; if ( verbose ) fprintf( output , "%s\n", "A character had too many run counts" ) ; uexit ( 1 ) ; } xtogo = xtogo - count ; count = 0 ; } } } { putbyte ( 69 , gffile ) ; gfloc = gfloc + 1 ; } lasteoc = gfloc ; if ( endofpacket != curloc ) { verbose = true ; if ( verbose ) fprintf( output , "%s\n", "Bad pk file! Bad packet length." ) ; uexit ( 1 ) ; } skipspecials () ; } while ( ! eof ( pkfile ) ) i = getbyte () ; j = gfloc ; { putbyte ( 248 , gffile ) ; gfloc = gfloc + 1 ; } gfquad ( lasteoc ) ; gfquad ( designsize ) ; gfquad ( checksum ) ; gfquad ( hppp ) ; gfquad ( vppp ) ; gfquad ( mminm ) ; gfquad ( mmaxm ) ; gfquad ( mminn ) ; gfquad ( mmaxn ) ; {register integer for_end; i = 0 ;for_end = 255 ; if ( i <= for_end) do if ( charpointer [i ]!= -1 ) { if ( ( sveresc [i ]== 0 ) && ( shoresc [i ]>= 0 ) && ( shoresc [i ] < 16777216L ) && ( shoresc [i ]% 65536L == 0 ) ) { { putbyte ( 246 , gffile ) ; gfloc = gfloc + 1 ; } { putbyte ( i , gffile ) ; gfloc = gfloc + 1 ; } { putbyte ( shoresc [i ]/ 65536L , gffile ) ; gfloc = gfloc + 1 ; } } else { { putbyte ( 245 , gffile ) ; gfloc = gfloc + 1 ; } { putbyte ( i , gffile ) ; gfloc = gfloc + 1 ; } gfquad ( shoresc [i ]) ; gfquad ( sveresc [i ]) ; } gfquad ( stfmwidth [i ]) ; gfquad ( charpointer [i ]) ; } while ( i++ < for_end ) ;} { putbyte ( 249 , gffile ) ; gfloc = gfloc + 1 ; } gfquad ( j ) ; { putbyte ( 131 , gffile ) ; gfloc = gfloc + 1 ; } {register integer for_end; i = 0 ;for_end = 3 ; if ( i <= for_end) do { putbyte ( 223 , gffile ) ; gfloc = gfloc + 1 ; } while ( i++ < for_end ) ;} while ( gfloc % 4 != 0 ) { putbyte ( 223 , gffile ) ; gfloc = gfloc + 1 ; } if ( verbose ) fprintf( output , "%ld%s%ld%s\n", (long)curloc , " bytes unpacked to " , (long)gfloc , " bytes." ) ; }