allbery@uunet.UU.NET (Brandon S. Allbery - comp.sources.misc) (03/08/89)
Posting-number: Volume 6, Issue 55 Submitted-by: marcel@nluug.nl (Marcel Mol) Archive-name: dvi2tty.patch2 Thsi patch fixes some bugs in the check for the .dvi extension in a given filename, and some dependencies on argument evaluation order. Furthermore, ligatures are treated better. Also bugs in the disdvi program are fixed: the given offset in the file was not always right. - Marcel ====================================================================== *** ORG/disdvi.c --- disdvi.c ************** *** 68,74 exit(2); } if ((i >= 5) && (argv[1][i-4] == '.') && (argv[1][i-3] == 'd') && ! (argv[1][i-2] = 'v') && (argv[1][i-1] = 'i')) dvi_name = argv[1]; else { dvi_name = malloc((i+4) * sizeof(char)); --- 68,74 ----- exit(2); } if ((i >= 5) && (argv[1][i-4] == '.') && (argv[1][i-3] == 'd') && ! (argv[1][i-2] == 'v') && (argv[1][i-1] == 'i')) dvi_name = argv[1]; else { dvi_name = malloc((i+5) * sizeof(char)); ************** *** 71,77 (argv[1][i-2] = 'v') && (argv[1][i-1] = 'i')) dvi_name = argv[1]; else { ! dvi_name = malloc((i+4) * sizeof(char)); strcpy(dvi_name, argv[1]); strcat(dvi_name, ".dvi"); } --- 71,77 ----- (argv[1][i-2] == 'v') && (argv[1][i-1] == 'i')) dvi_name = argv[1]; else { ! dvi_name = malloc((i+5) * sizeof(char)); strcpy(dvi_name, argv[1]); strcat(dvi_name, ".dvi"); } ************** *** 111,118 case SET4 : printf("SET%d: %ld\n", opcode - SET1 + 1, num(opcode - SET1 + 1)); break; ! case SET_RULE : printf("SET_RULE: %ld, %ld\n", sget4(), ! sget4()); break; case PUT1 : case PUT2 : --- 111,119 ----- case SET4 : printf("SET%d: %ld\n", opcode - SET1 + 1, num(opcode - SET1 + 1)); break; ! case SET_RULE : printf("SET_RULE: height: %ld\n", sget4()); ! printf("%06ld: ", pc); ! printf(" length: %ld\n", sget4()); break; case PUT1 : case PUT2 : ************** *** 120,127 case PUT4 : printf("PUT%d: %ld\n", opcode - PUT1 + 1, num(opcode - PUT1 + 1)); break; ! case PUT_RULE : printf("PUT_RULE: %ld, %ld\n", sget4(), ! sget4()); break; case NOP : printf("NOP\n"); break; case BOP : bop(); break; --- 121,129 ----- case PUT4 : printf("PUT%d: %ld\n", opcode - PUT1 + 1, num(opcode - PUT1 + 1)); break; ! case PUT_RULE : printf("PUT_RULE: height: %ld\n", sget4()); ! printf("%06ld: ", pc); ! printf(" length: %ld\n", sget4()); break; case NOP : printf("NOP\n"); break; case BOP : bop(); break; ************** *** 198,207 { int i; ! printf("BOP page number : %ld\n", sget4()); ! for (i=0; i < 3; i++) { ! printf("%06ld: ", pc - 1); ! printf(" %6ld %6ld %6ld\n", sget4(), sget4(), sget4()); } printf("%06ld: ", pc - 1); printf(" prev page offset : %06ld\n", sget4()); --- 200,210 ----- { int i; ! printf("BOP page number : %ld", sget4()); ! for (i=0; i < 9; i++) { ! if (i % 3 == 0) ! printf("\n%06ld: ", pc); ! printf(" %6ld", sget4()); } printf("\n%06ld: ", pc); printf(" prev page offset : %06ld\n", sget4()); ************** *** 203,209 printf("%06ld: ", pc - 1); printf(" %6ld %6ld %6ld\n", sget4(), sget4(), sget4()); } ! printf("%06ld: ", pc - 1); printf(" prev page offset : %06ld\n", sget4()); } /* bop */ --- 206,212 ----- printf("\n%06ld: ", pc); printf(" %6ld", sget4()); } ! printf("\n%06ld: ", pc); printf(" prev page offset : %06ld\n", sget4()); } /* bop */ ************** *** 215,221 { printf("POST last page offset : %06ld\n", sget4()); ! printf("%06ld: ", pc - 1); printf(" numerator : %ld\n", get4()); printf("%06ld: ", pc - 1); printf(" denominator : %ld\n", get4()); --- 218,224 ----- { printf("POST last page offset : %06ld\n", sget4()); ! printf("%06ld: ", pc); printf(" numerator : %ld\n", get4()); printf("%06ld: ", pc); printf(" denominator : %ld\n", get4()); ************** *** 217,223 printf("POST last page offset : %06ld\n", sget4()); printf("%06ld: ", pc - 1); printf(" numerator : %ld\n", get4()); ! printf("%06ld: ", pc - 1); printf(" denominator : %ld\n", get4()); printf("%06ld: ", pc - 1); printf(" magnification : %ld\n", get4()); --- 220,226 ----- printf("POST last page offset : %06ld\n", sget4()); printf("%06ld: ", pc); printf(" numerator : %ld\n", get4()); ! printf("%06ld: ", pc); printf(" denominator : %ld\n", get4()); printf("%06ld: ", pc); printf(" magnification : %ld\n", get4()); ************** *** 219,225 printf(" numerator : %ld\n", get4()); printf("%06ld: ", pc - 1); printf(" denominator : %ld\n", get4()); ! printf("%06ld: ", pc - 1); printf(" magnification : %ld\n", get4()); printf("%06ld: ", pc - 1); printf(" max page height : %ld\n", get4()); --- 222,228 ----- printf(" numerator : %ld\n", get4()); printf("%06ld: ", pc); printf(" denominator : %ld\n", get4()); ! printf("%06ld: ", pc); printf(" magnification : %ld\n", get4()); printf("%06ld: ", pc); printf(" max page height : %ld\n", get4()); ************** *** 221,227 printf(" denominator : %ld\n", get4()); printf("%06ld: ", pc - 1); printf(" magnification : %ld\n", get4()); ! printf("%06ld: ", pc - 1); printf(" max page height : %ld\n", get4()); printf("%06ld: ", pc - 1); printf(" max page width : %ld\n", get4()); --- 224,230 ----- printf(" denominator : %ld\n", get4()); printf("%06ld: ", pc); printf(" magnification : %ld\n", get4()); ! printf("%06ld: ", pc); printf(" max page height : %ld\n", get4()); printf("%06ld: ", pc); printf(" max page width : %ld\n", get4()); ************** *** 223,229 printf(" magnification : %ld\n", get4()); printf("%06ld: ", pc - 1); printf(" max page height : %ld\n", get4()); ! printf("%06ld: ", pc - 1); printf(" max page width : %ld\n", get4()); printf("%06ld: ", pc - 1); printf(" stack size needed: %d\n", (int) get2()); --- 226,232 ----- printf(" magnification : %ld\n", get4()); printf("%06ld: ", pc); printf(" max page height : %ld\n", get4()); ! printf("%06ld: ", pc); printf(" max page width : %ld\n", get4()); printf("%06ld: ", pc); printf(" stack size needed: %d\n", (int) get2()); ************** *** 225,231 printf(" max page height : %ld\n", get4()); printf("%06ld: ", pc - 1); printf(" max page width : %ld\n", get4()); ! printf("%06ld: ", pc - 1); printf(" stack size needed: %d\n", (int) get2()); printf("%06ld: ", pc - 1); printf(" number of pages : %d\n", (int) get2()); --- 228,234 ----- printf(" max page height : %ld\n", get4()); printf("%06ld: ", pc); printf(" max page width : %ld\n", get4()); ! printf("%06ld: ", pc); printf(" stack size needed: %d\n", (int) get2()); printf("%06ld: ", pc); printf(" number of pages : %d\n", (int) get2()); ************** *** 227,233 printf(" max page width : %ld\n", get4()); printf("%06ld: ", pc - 1); printf(" stack size needed: %d\n", (int) get2()); ! printf("%06ld: ", pc - 1); printf(" number of pages : %d\n", (int) get2()); } /* postamble */ --- 230,236 ----- printf(" max page width : %ld\n", get4()); printf("%06ld: ", pc); printf(" stack size needed: %d\n", (int) get2()); ! printf("%06ld: ", pc); printf(" number of pages : %d\n", (int) get2()); } /* postamble */ ************** *** 237,243 register int i; printf("PRE version : %d\n", (int) get1()); ! printf("%06ld: ", pc - 1); printf(" numerator : %ld\n", get4()); printf("%06ld: ", pc - 1); printf(" denominator : %ld\n", get4()); --- 240,246 ----- register int i; printf("PRE version : %d\n", (int) get1()); ! printf("%06ld: ", pc); printf(" numerator : %ld\n", get4()); printf("%06ld: ", pc); printf(" denominator : %ld\n", get4()); ************** *** 239,245 printf("PRE version : %d\n", (int) get1()); printf("%06ld: ", pc - 1); printf(" numerator : %ld\n", get4()); ! printf("%06ld: ", pc - 1); printf(" denominator : %ld\n", get4()); printf("%06ld: ", pc - 1); printf(" magnification : %ld\n", get4()); --- 242,248 ----- printf("PRE version : %d\n", (int) get1()); printf("%06ld: ", pc); printf(" numerator : %ld\n", get4()); ! printf("%06ld: ", pc); printf(" denominator : %ld\n", get4()); printf("%06ld: ", pc); printf(" magnification : %ld\n", get4()); ************** *** 241,247 printf(" numerator : %ld\n", get4()); printf("%06ld: ", pc - 1); printf(" denominator : %ld\n", get4()); ! printf("%06ld: ", pc - 1); printf(" magnification : %ld\n", get4()); printf("%06ld: ", pc - 1); i = (int) get1(); --- 244,250 ----- printf(" numerator : %ld\n", get4()); printf("%06ld: ", pc); printf(" denominator : %ld\n", get4()); ! printf("%06ld: ", pc); printf(" magnification : %ld\n", get4()); printf("%06ld: ", pc); i = (int) get1(); ************** *** 243,249 printf(" denominator : %ld\n", get4()); printf("%06ld: ", pc - 1); printf(" magnification : %ld\n", get4()); ! printf("%06ld: ", pc - 1); i = (int) get1(); printf(" job name (%03d) :", i); while (i-- > 0) --- 246,252 ----- printf(" denominator : %ld\n", get4()); printf("%06ld: ", pc); printf(" magnification : %ld\n", get4()); ! printf("%06ld: ", pc); i = (int) get1(); printf(" job name (%3d) :", i); while (i-- > 0) ************** *** 245,251 printf(" magnification : %ld\n", get4()); printf("%06ld: ", pc - 1); i = (int) get1(); ! printf(" job name (%03d) :", i); while (i-- > 0) putchar((int) get1()); putchar('\n'); --- 248,254 ----- printf(" magnification : %ld\n", get4()); printf("%06ld: ", pc); i = (int) get1(); ! printf(" job name (%3d) :", i); while (i-- > 0) putchar((int) get1()); putchar('\n'); ************** *** 258,264 register int i; printf("POSTPOST postamble offset : %06ld\n", get4()); ! printf("%06ld: ", pc - 1); printf(" version : %d\n", (int) get1()); while ((i = (int) get1()) == TRAILER) { printf("%06d: ", pc - 1); --- 261,267 ----- register int i; printf("POSTPOST postamble offset : %06ld\n", get4()); ! printf("%06ld: ", pc); printf(" version : %d\n", (int) get1()); while ((i = (int) get1()) == TRAILER) { printf("%06d: ", pc - 1); ************** *** 282,288 len = num(x); printf("XXX%d: %ld bytes\n", x, len); ! printf("%06ld: ", pc - 1); for (i = 0; i < len; i++) putchar((int) get1()); putchar('\n'); --- 285,291 ----- len = num(x); printf("XXX%d: %ld bytes\n", x, len); ! printf("%06ld: ", pc); for (i = 0; i < len; i++) putchar((int) get1()); putchar('\n'); ************** *** 297,303 register int i; printf("FNT_DEF%d: %ld\n", x, num(x)); ! printf("%06ld: ", pc - 1); printf(" checksum : %ld\n", get4()); printf("%06ld: ", pc - 1); printf(" scale : %ld\n", get4()); --- 300,306 ----- register int i; printf("FNT_DEF%d: %ld\n", x, num(x)); ! printf("%06ld: ", pc); printf(" checksum : %ld\n", get4()); printf("%06ld: ", pc); printf(" scale : %ld\n", get4()); ************** *** 299,305 printf("FNT_DEF%d: %ld\n", x, num(x)); printf("%06ld: ", pc - 1); printf(" checksum : %ld\n", get4()); ! printf("%06ld: ", pc - 1); printf(" scale : %ld\n", get4()); printf("%06ld: ", pc - 1); printf(" design : %ld\n", get4()); --- 302,308 ----- printf("FNT_DEF%d: %ld\n", x, num(x)); printf("%06ld: ", pc); printf(" checksum : %ld\n", get4()); ! printf("%06ld: ", pc); printf(" scale : %ld\n", get4()); printf("%06ld: ", pc); printf(" design : %ld\n", get4()); ************** *** 301,307 printf(" checksum : %ld\n", get4()); printf("%06ld: ", pc - 1); printf(" scale : %ld\n", get4()); ! printf("%06ld: ", pc - 1); printf(" design : %ld\n", get4()); printf("%06ld: ", pc - 1); printf(" name : "); --- 304,310 ----- printf(" checksum : %ld\n", get4()); printf("%06ld: ", pc); printf(" scale : %ld\n", get4()); ! printf("%06ld: ", pc); printf(" design : %ld\n", get4()); printf("%06ld: ", pc); printf(" name : "); ************** *** 303,309 printf(" scale : %ld\n", get4()); printf("%06ld: ", pc - 1); printf(" design : %ld\n", get4()); ! printf("%06ld: ", pc - 1); printf(" name : "); for (i = (int) get1() + (int) get1(); i > 0; i--) putchar((int) get1()); --- 306,312 ----- printf(" scale : %ld\n", get4()); printf("%06ld: ", pc); printf(" design : %ld\n", get4()); ! printf("%06ld: ", pc); printf(" name : "); for (i = (int) get1() + (int) get1(); i > 0; i--) putchar((int) get1()); *** ORG/dvi2tty.c --- dvi2tty.c ************** *** 1,4 /****************************************************************************** * Marcel Mol: 1989-01-19 (UUCP: duteca!marcel) * Changed in option handling, no change * in user interface (only the undocumented --- 1,9 ----- /****************************************************************************** + * Marcel Mol: 1989-02-14 (UUCP: duteca!marcel) + * Fixed check for .dvi extension. + * Allowed more ligatures. + * Fixed side effect bugs (2 gets as function arguments). + * Version 3.2. * Marcel Mol: 1989-01-19 (UUCP: duteca!marcel) * Changed in option handling, no change * in user interface (only the undocumented ************** *** 118,124 #define onepp 8 /* only one page list allowed */ #define noarg 9 /* argument expected */ ! char *dvi2tty = "@(#) dvi2tty.c 3.1 23/01/89 M.J.E. Mol (c) 1989"; /*---------------------------------------------------------------------------*/ --- 123,129 ----- #define onepp 8 /* only one page list allowed */ #define noarg 9 /* argument expected */ ! char *dvi2tty = "@(#) dvi2tty.c 3.2 14/02/89 M.J.E. Mol (c) 1989"; /*---------------------------------------------------------------------------*/ ************** *** 455,461 usage(ign); strcpy(DVIfilename, str); if (!((i >= 5) && (str[i-1] == 'i') && (str[i-2] == 'v') && ! (str[i-3] = 'd') && (str[i-4] = '.'))) { strcat(DVIfilename, ".dvi"); } --- 460,466 ----- usage(ign); strcpy(DVIfilename, str); if (!((i >= 5) && (str[i-1] == 'i') && (str[i-2] == 'v') && ! (str[i-3] == 'd') && (str[i-4] == '.'))) { strcat(DVIfilename, ".dvi"); } *** ORG/dvistuff.c --- dvistuff.c ************** *** 1,5 - #include "dvi2tty.h" #include <sys/types.h> #include <sys/stat.h> --- 1,4 ----- #include "dvi2tty.h" #include <sys/types.h> #include <sys/stat.h> ************** *** 39,45 #define sget3() snum(3) #define sget4() snum(4) ! char *dvistuff = "@(#) dvistuff.c 3.1 23/01/89 M.J.E. Mol (c) 1989"; /*---------------------------------------------------------------------------*/ --- 38,44 ----- #define sget3() snum(3) #define sget4() snum(4) ! char *dvistuff = "@(#) dvistuff.c 3.2 14/02/89 M.J.E. Mol (c) 1989"; /*---------------------------------------------------------------------------*/ ************** *** 293,299 case SET2 : setchar(get2()); break; case SET3 : setchar(get3()); break; case SET4 : setchar(get4()); break; ! case SET_RULE : rule(MOVE, sget4(), sget4()); break; case PUT1 : putcharacter(get1()); break; case PUT2 : putcharacter(get2()); break; case PUT3 : putcharacter(get3()); break; --- 292,300 ----- case SET2 : setchar(get2()); break; case SET3 : setchar(get3()); break; case SET4 : setchar(get4()); break; ! case SET_RULE : { long height = sget4(); ! rule(MOVE, sget4(), height); break; ! } case PUT1 : putcharacter(get1()); break; case PUT2 : putcharacter(get2()); break; case PUT3 : putcharacter(get3()); break; ************** *** 298,304 case PUT2 : putcharacter(get2()); break; case PUT3 : putcharacter(get3()); break; case PUT4 : putcharacter(get4()); break; ! case PUT_RULE : rule(STAY, sget4(), sget4()); break; case NOP : break; /* no-op */ case BOP : errorexit(bdbop); break; /* case EOP : break; strange place to have EOP */ --- 299,307 ----- case PUT2 : putcharacter(get2()); break; case PUT3 : putcharacter(get3()); break; case PUT4 : putcharacter(get4()); break; ! case PUT_RULE : { long height = sget4(); ! rule(STAY, sget4(), height); break; ! } case NOP : break; /* no-op */ case BOP : errorexit(bdbop); break; /* case EOP : break; strange place to have EOP */ ************** *** 746,751 else ch = 'O'; break; #if 0 case 92 : ch = '"'; break; /* beginning qoute */ case 123 : ch = '-'; break; --- 749,760 ----- else ch = 'O'; break; + case 92 : ch = '"'; break; /* \ from `` */ + case 123 : ch = '-'; break; /* { from -- */ + case 124 : ch = '_'; break; /* | from --- */ + case 125 : ch = '"'; break; /* } from \H */ + case 126 : ch = '"'; break; /* ~ from \~ */ + case 127 : ch = '"'; break; /* DEL from \" */ #if 0 case 18 : ch = '`'; break /* from \` */ case 19 : ch = ''''; break /* from \' */ ************** *** 747,757 ch = 'O'; break; #if 0 ! case 92 : ch = '"'; break; /* beginning qoute */ ! case 123 : ch = '-'; break; ! case 124 : ch = '_'; break; ! case 125 : ch = '"'; break; ! case 126 : ch = '"'; break; #endif } #if 0 --- 756,769 ----- case 126 : ch = '"'; break; /* ~ from \~ */ case 127 : ch = '"'; break; /* DEL from \" */ #if 0 ! case 18 : ch = '`'; break /* from \` */ ! case 19 : ch = ''''; break /* from \' */ ! case 20 : ch = '~'; break /* from \v */ ! case 21 : ch = '~'; break /* from \u */ ! case 22 : ch = '~'; break /* from \= */ ! case 24 : ch = ','; break /* from \c */ ! case 94 : ch = '^'; break /* ^ from \^ */ ! case 95 : ch = '`'; break /* _ from \. */ #endif } #if 0 -- ######################################### # Marcel J.E. Mol # They hate you if your're clever # Delft, University of Technology # And they despise the fool # The Netherlands # Till you're so fucking crazy # UUCP: marcel@duteca.UUCP # You can't follow the rules. # duteca!marcel # ######################################### - Lennon