home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1992 March / Source_Code_CD-ROM_Walnut_Creek_March_1992.iso / usenet / compsrcs / misc / volume06 / dvi2tty.pc2 < prev    next >
Encoding:
Internet Message Format  |  1991-08-27  |  23.5 KB

  1. From decwrl!ucbvax!tut.cis.ohio-state.edu!mailrus!ames!amdahl!uunet!allbery Fri Mar 24 22:24:42 PST 1989
  2. Article 820 of comp.sources.misc:
  3. Path: decwrl!ucbvax!tut.cis.ohio-state.edu!mailrus!ames!amdahl!uunet!allbery
  4. From: allbery@uunet.UU.NET (Brandon S. Allbery - comp.sources.misc)
  5. Newsgroups: comp.sources.misc
  6. Subject: v06i055: dvi2tty patch 2
  7. Message-ID: <50623@uunet.UU.NET>
  8. Date: 8 Mar 89 01:17:56 GMT
  9. Sender: allbery@uunet.UU.NET
  10. Reply-To: duteca!marcel (Marcel J.E. Mol)
  11. Organization: Delft University of Technology, Dep. of Electrotechnical engineering.
  12. Lines: 615
  13. Approved: allbery@uunet.UU.NET (Brandon S. Allbery - comp.sources.misc)
  14. Organisation: University of Technology, Delft  The Netherlands.
  15.  
  16. Posting-number: Volume 6, Issue 55
  17. Submitted-by: marcel@nluug.nl (Marcel Mol)
  18. Archive-name: dvi2tty.patch2
  19.  
  20.  
  21. Thsi patch fixes some bugs in the check for the .dvi extension
  22. in a given filename, and some dependencies on argument evaluation order.
  23. Furthermore, ligatures are treated better.
  24. Also bugs in the disdvi program are fixed: the given offset in the
  25. file was not always right.
  26.  
  27. - Marcel
  28.  
  29. ======================================================================
  30. *** ORG/disdvi.c
  31. --- disdvi.c
  32. **************
  33. *** 68,74
  34.               exit(2);
  35.           }
  36.           if ((i >= 5) && (argv[1][i-4] == '.') && (argv[1][i-3] == 'd') &&
  37. !               (argv[1][i-2] = 'v') && (argv[1][i-1] = 'i'))
  38.               dvi_name = argv[1];
  39.           else {
  40.               dvi_name = malloc((i+4) * sizeof(char));
  41. --- 68,74 -----
  42.               exit(2);
  43.           }
  44.           if ((i >= 5) && (argv[1][i-4] == '.') && (argv[1][i-3] == 'd') &&
  45. !               (argv[1][i-2] == 'v') && (argv[1][i-1] == 'i'))
  46.               dvi_name = argv[1];
  47.           else {
  48.               dvi_name = malloc((i+5) * sizeof(char));
  49. **************
  50. *** 71,77
  51.                 (argv[1][i-2] = 'v') && (argv[1][i-1] = 'i'))
  52.               dvi_name = argv[1];
  53.           else {
  54. !             dvi_name = malloc((i+4) * sizeof(char));
  55.               strcpy(dvi_name, argv[1]);
  56.               strcat(dvi_name, ".dvi");
  57.           }
  58. --- 71,77 -----
  59.                 (argv[1][i-2] == 'v') && (argv[1][i-1] == 'i'))
  60.               dvi_name = argv[1];
  61.           else {
  62. !             dvi_name = malloc((i+5) * sizeof(char));
  63.               strcpy(dvi_name, argv[1]);
  64.               strcat(dvi_name, ".dvi");
  65.           }
  66. **************
  67. *** 111,118
  68.                   case SET4     : printf("SET%d:    %ld\n", opcode - SET1 + 1,
  69.                                                          num(opcode - SET1 + 1));
  70.                                   break;
  71. !                 case SET_RULE : printf("SET_RULE: %ld, %ld\n", sget4(),
  72. !                                                                 sget4());
  73.                                   break;
  74.                   case PUT1     :
  75.                   case PUT2     :
  76. --- 111,119 -----
  77.                   case SET4     : printf("SET%d:    %ld\n", opcode - SET1 + 1,
  78.                                                          num(opcode - SET1 + 1));
  79.                                   break;
  80. !                 case SET_RULE : printf("SET_RULE: height: %ld\n", sget4());
  81. !                                 printf("%06ld: ", pc);
  82. !                                 printf("          length: %ld\n", sget4());
  83.                                   break;
  84.                   case PUT1     :
  85.                   case PUT2     :
  86. **************
  87. *** 120,127
  88.                   case PUT4     : printf("PUT%d:     %ld\n", opcode - PUT1 + 1,
  89.                                                          num(opcode - PUT1 + 1));
  90.                                   break;
  91. !                 case PUT_RULE : printf("PUT_RULE: %ld, %ld\n", sget4(),
  92. !                                                                 sget4());
  93.                                   break;
  94.                   case NOP      : printf("NOP\n");  break;
  95.                   case BOP      : bop();            break;
  96. --- 121,129 -----
  97.                   case PUT4     : printf("PUT%d:     %ld\n", opcode - PUT1 + 1,
  98.                                                          num(opcode - PUT1 + 1));
  99.                                   break;
  100. !                 case PUT_RULE : printf("PUT_RULE: height: %ld\n", sget4());
  101. !                                 printf("%06ld: ", pc);
  102. !                                 printf("          length: %ld\n", sget4());
  103.                                   break;
  104.                   case NOP      : printf("NOP\n");  break;
  105.                   case BOP      : bop();            break;
  106. **************
  107. *** 198,207
  108.   {
  109.       int i;
  110.   
  111. !     printf("BOP       page number      : %ld\n", sget4());
  112. !     for (i=0; i < 3; i++) {
  113. !         printf("%06ld: ", pc - 1);
  114. !         printf("          %6ld  %6ld  %6ld\n", sget4(), sget4(), sget4()); 
  115.       }
  116.       printf("%06ld: ", pc - 1);
  117.       printf("          prev page offset : %06ld\n", sget4()); 
  118. --- 200,210 -----
  119.   {
  120.       int i;
  121.   
  122. !     printf("BOP       page number      : %ld", sget4());
  123. !     for (i=0; i < 9; i++) {
  124. !         if (i % 3 == 0)
  125. !             printf("\n%06ld:         ", pc);
  126. !         printf("  %6ld", sget4()); 
  127.       }
  128.       printf("\n%06ld: ", pc);
  129.       printf("          prev page offset : %06ld\n", sget4()); 
  130. **************
  131. *** 203,209
  132.           printf("%06ld: ", pc - 1);
  133.           printf("          %6ld  %6ld  %6ld\n", sget4(), sget4(), sget4()); 
  134.       }
  135. !     printf("%06ld: ", pc - 1);
  136.       printf("          prev page offset : %06ld\n", sget4()); 
  137.   
  138.   } /* bop */
  139. --- 206,212 -----
  140.               printf("\n%06ld:         ", pc);
  141.           printf("  %6ld", sget4()); 
  142.       }
  143. !     printf("\n%06ld: ", pc);
  144.       printf("          prev page offset : %06ld\n", sget4()); 
  145.   
  146.   } /* bop */
  147. **************
  148. *** 215,221
  149.   {
  150.   
  151.       printf("POST      last page offset : %06ld\n", sget4());
  152. !     printf("%06ld: ", pc - 1);
  153.       printf("          numerator        : %ld\n", get4());
  154.       printf("%06ld: ", pc - 1);
  155.       printf("          denominator      : %ld\n", get4());
  156. --- 218,224 -----
  157.   {
  158.   
  159.       printf("POST      last page offset : %06ld\n", sget4());
  160. !     printf("%06ld: ", pc);
  161.       printf("          numerator        : %ld\n", get4());
  162.       printf("%06ld: ", pc);
  163.       printf("          denominator      : %ld\n", get4());
  164. **************
  165. *** 217,223
  166.       printf("POST      last page offset : %06ld\n", sget4());
  167.       printf("%06ld: ", pc - 1);
  168.       printf("          numerator        : %ld\n", get4());
  169. !     printf("%06ld: ", pc - 1);
  170.       printf("          denominator      : %ld\n", get4());
  171.       printf("%06ld: ", pc - 1);
  172.       printf("          magnification    : %ld\n", get4());
  173. --- 220,226 -----
  174.       printf("POST      last page offset : %06ld\n", sget4());
  175.       printf("%06ld: ", pc);
  176.       printf("          numerator        : %ld\n", get4());
  177. !     printf("%06ld: ", pc);
  178.       printf("          denominator      : %ld\n", get4());
  179.       printf("%06ld: ", pc);
  180.       printf("          magnification    : %ld\n", get4());
  181. **************
  182. *** 219,225
  183.       printf("          numerator        : %ld\n", get4());
  184.       printf("%06ld: ", pc - 1);
  185.       printf("          denominator      : %ld\n", get4());
  186. !     printf("%06ld: ", pc - 1);
  187.       printf("          magnification    : %ld\n", get4());
  188.       printf("%06ld: ", pc - 1);
  189.       printf("          max page height  : %ld\n", get4());
  190. --- 222,228 -----
  191.       printf("          numerator        : %ld\n", get4());
  192.       printf("%06ld: ", pc);
  193.       printf("          denominator      : %ld\n", get4());
  194. !     printf("%06ld: ", pc);
  195.       printf("          magnification    : %ld\n", get4());
  196.       printf("%06ld: ", pc);
  197.       printf("          max page height  : %ld\n", get4());
  198. **************
  199. *** 221,227
  200.       printf("          denominator      : %ld\n", get4());
  201.       printf("%06ld: ", pc - 1);
  202.       printf("          magnification    : %ld\n", get4());
  203. !     printf("%06ld: ", pc - 1);
  204.       printf("          max page height  : %ld\n", get4());
  205.       printf("%06ld: ", pc - 1);
  206.       printf("          max page width   : %ld\n", get4());
  207. --- 224,230 -----
  208.       printf("          denominator      : %ld\n", get4());
  209.       printf("%06ld: ", pc);
  210.       printf("          magnification    : %ld\n", get4());
  211. !     printf("%06ld: ", pc);
  212.       printf("          max page height  : %ld\n", get4());
  213.       printf("%06ld: ", pc);
  214.       printf("          max page width   : %ld\n", get4());
  215. **************
  216. *** 223,229
  217.       printf("          magnification    : %ld\n", get4());
  218.       printf("%06ld: ", pc - 1);
  219.       printf("          max page height  : %ld\n", get4());
  220. !     printf("%06ld: ", pc - 1);
  221.       printf("          max page width   : %ld\n", get4());
  222.       printf("%06ld: ", pc - 1);
  223.       printf("          stack size needed: %d\n", (int) get2());
  224. --- 226,232 -----
  225.       printf("          magnification    : %ld\n", get4());
  226.       printf("%06ld: ", pc);
  227.       printf("          max page height  : %ld\n", get4());
  228. !     printf("%06ld: ", pc);
  229.       printf("          max page width   : %ld\n", get4());
  230.       printf("%06ld: ", pc);
  231.       printf("          stack size needed: %d\n", (int) get2());
  232. **************
  233. *** 225,231
  234.       printf("          max page height  : %ld\n", get4());
  235.       printf("%06ld: ", pc - 1);
  236.       printf("          max page width   : %ld\n", get4());
  237. !     printf("%06ld: ", pc - 1);
  238.       printf("          stack size needed: %d\n", (int) get2());
  239.       printf("%06ld: ", pc - 1);
  240.       printf("          number of pages  : %d\n", (int) get2());
  241. --- 228,234 -----
  242.       printf("          max page height  : %ld\n", get4());
  243.       printf("%06ld: ", pc);
  244.       printf("          max page width   : %ld\n", get4());
  245. !     printf("%06ld: ", pc);
  246.       printf("          stack size needed: %d\n", (int) get2());
  247.       printf("%06ld: ", pc);
  248.       printf("          number of pages  : %d\n", (int) get2());
  249. **************
  250. *** 227,233
  251.       printf("          max page width   : %ld\n", get4());
  252.       printf("%06ld: ", pc - 1);
  253.       printf("          stack size needed: %d\n", (int) get2());
  254. !     printf("%06ld: ", pc - 1);
  255.       printf("          number of pages  : %d\n", (int) get2());
  256.   
  257.   } /* postamble */
  258. --- 230,236 -----
  259.       printf("          max page width   : %ld\n", get4());
  260.       printf("%06ld: ", pc);
  261.       printf("          stack size needed: %d\n", (int) get2());
  262. !     printf("%06ld: ", pc);
  263.       printf("          number of pages  : %d\n", (int) get2());
  264.   
  265.   } /* postamble */
  266. **************
  267. *** 237,243
  268.       register int i;
  269.   
  270.       printf("PRE       version          : %d\n", (int) get1());
  271. !     printf("%06ld: ", pc - 1);
  272.       printf("          numerator        : %ld\n", get4());
  273.       printf("%06ld: ", pc - 1);
  274.       printf("          denominator      : %ld\n", get4());
  275. --- 240,246 -----
  276.       register int i;
  277.   
  278.       printf("PRE       version          : %d\n", (int) get1());
  279. !     printf("%06ld: ", pc);
  280.       printf("          numerator        : %ld\n", get4());
  281.       printf("%06ld: ", pc);
  282.       printf("          denominator      : %ld\n", get4());
  283. **************
  284. *** 239,245
  285.       printf("PRE       version          : %d\n", (int) get1());
  286.       printf("%06ld: ", pc - 1);
  287.       printf("          numerator        : %ld\n", get4());
  288. !     printf("%06ld: ", pc - 1);
  289.       printf("          denominator      : %ld\n", get4());
  290.       printf("%06ld: ", pc - 1);
  291.       printf("          magnification    : %ld\n", get4());
  292. --- 242,248 -----
  293.       printf("PRE       version          : %d\n", (int) get1());
  294.       printf("%06ld: ", pc);
  295.       printf("          numerator        : %ld\n", get4());
  296. !     printf("%06ld: ", pc);
  297.       printf("          denominator      : %ld\n", get4());
  298.       printf("%06ld: ", pc);
  299.       printf("          magnification    : %ld\n", get4());
  300. **************
  301. *** 241,247
  302.       printf("          numerator        : %ld\n", get4());
  303.       printf("%06ld: ", pc - 1);
  304.       printf("          denominator      : %ld\n", get4());
  305. !     printf("%06ld: ", pc - 1);
  306.       printf("          magnification    : %ld\n", get4());
  307.       printf("%06ld: ", pc - 1);
  308.       i = (int) get1();
  309. --- 244,250 -----
  310.       printf("          numerator        : %ld\n", get4());
  311.       printf("%06ld: ", pc);
  312.       printf("          denominator      : %ld\n", get4());
  313. !     printf("%06ld: ", pc);
  314.       printf("          magnification    : %ld\n", get4());
  315.       printf("%06ld: ", pc);
  316.       i = (int) get1();
  317. **************
  318. *** 243,249
  319.       printf("          denominator      : %ld\n", get4());
  320.       printf("%06ld: ", pc - 1);
  321.       printf("          magnification    : %ld\n", get4());
  322. !     printf("%06ld: ", pc - 1);
  323.       i = (int) get1();
  324.       printf("          job name (%03d)   :", i);
  325.       while (i-- > 0)
  326. --- 246,252 -----
  327.       printf("          denominator      : %ld\n", get4());
  328.       printf("%06ld: ", pc);
  329.       printf("          magnification    : %ld\n", get4());
  330. !     printf("%06ld: ", pc);
  331.       i = (int) get1();
  332.       printf("          job name (%3d)   :", i);
  333.       while (i-- > 0)
  334. **************
  335. *** 245,251
  336.       printf("          magnification    : %ld\n", get4());
  337.       printf("%06ld: ", pc - 1);
  338.       i = (int) get1();
  339. !     printf("          job name (%03d)   :", i);
  340.       while (i-- > 0)
  341.           putchar((int) get1());
  342.       putchar('\n');
  343. --- 248,254 -----
  344.       printf("          magnification    : %ld\n", get4());
  345.       printf("%06ld: ", pc);
  346.       i = (int) get1();
  347. !     printf("          job name (%3d)   :", i);
  348.       while (i-- > 0)
  349.           putchar((int) get1());
  350.       putchar('\n');
  351. **************
  352. *** 258,264
  353.       register int i;
  354.    
  355.       printf("POSTPOST  postamble offset : %06ld\n", get4());
  356. !     printf("%06ld: ", pc - 1);
  357.       printf("          version          : %d\n", (int) get1());
  358.       while ((i = (int) get1()) == TRAILER) {
  359.           printf("%06d: ", pc - 1);
  360. --- 261,267 -----
  361.       register int i;
  362.    
  363.       printf("POSTPOST  postamble offset : %06ld\n", get4());
  364. !     printf("%06ld: ", pc);
  365.       printf("          version          : %d\n", (int) get1());
  366.       while ((i = (int) get1()) == TRAILER) {
  367.           printf("%06d: ", pc - 1);
  368. **************
  369. *** 282,288
  370.   
  371.       len = num(x);
  372.       printf("XXX%d:     %ld bytes\n", x, len);
  373. !     printf("%06ld: ", pc - 1);
  374.       for (i = 0; i < len; i++)
  375.           putchar((int) get1());
  376.       putchar('\n');
  377. --- 285,291 -----
  378.   
  379.       len = num(x);
  380.       printf("XXX%d:     %ld bytes\n", x, len);
  381. !     printf("%06ld: ", pc);
  382.       for (i = 0; i < len; i++)
  383.           putchar((int) get1());
  384.       putchar('\n');
  385. **************
  386. *** 297,303
  387.       register int i;
  388.   
  389.       printf("FNT_DEF%d: %ld\n", x, num(x));
  390. !     printf("%06ld: ", pc - 1);
  391.       printf("          checksum         : %ld\n", get4());
  392.       printf("%06ld: ", pc - 1);
  393.       printf("          scale            : %ld\n", get4());
  394. --- 300,306 -----
  395.       register int i;
  396.   
  397.       printf("FNT_DEF%d: %ld\n", x, num(x));
  398. !     printf("%06ld: ", pc);
  399.       printf("          checksum         : %ld\n", get4());
  400.       printf("%06ld: ", pc);
  401.       printf("          scale            : %ld\n", get4());
  402. **************
  403. *** 299,305
  404.       printf("FNT_DEF%d: %ld\n", x, num(x));
  405.       printf("%06ld: ", pc - 1);
  406.       printf("          checksum         : %ld\n", get4());
  407. !     printf("%06ld: ", pc - 1);
  408.       printf("          scale            : %ld\n", get4());
  409.       printf("%06ld: ", pc - 1);
  410.       printf("          design           : %ld\n", get4());
  411. --- 302,308 -----
  412.       printf("FNT_DEF%d: %ld\n", x, num(x));
  413.       printf("%06ld: ", pc);
  414.       printf("          checksum         : %ld\n", get4());
  415. !     printf("%06ld: ", pc);
  416.       printf("          scale            : %ld\n", get4());
  417.       printf("%06ld: ", pc);
  418.       printf("          design           : %ld\n", get4());
  419. **************
  420. *** 301,307
  421.       printf("          checksum         : %ld\n", get4());
  422.       printf("%06ld: ", pc - 1);
  423.       printf("          scale            : %ld\n", get4());
  424. !     printf("%06ld: ", pc - 1);
  425.       printf("          design           : %ld\n", get4());
  426.       printf("%06ld: ", pc - 1);
  427.       printf("          name             : ");
  428. --- 304,310 -----
  429.       printf("          checksum         : %ld\n", get4());
  430.       printf("%06ld: ", pc);
  431.       printf("          scale            : %ld\n", get4());
  432. !     printf("%06ld: ", pc);
  433.       printf("          design           : %ld\n", get4());
  434.       printf("%06ld: ", pc);
  435.       printf("          name             : ");
  436. **************
  437. *** 303,309
  438.       printf("          scale            : %ld\n", get4());
  439.       printf("%06ld: ", pc - 1);
  440.       printf("          design           : %ld\n", get4());
  441. !     printf("%06ld: ", pc - 1);
  442.       printf("          name             : ");
  443.       for (i = (int) get1() + (int) get1(); i > 0; i--)
  444.           putchar((int) get1());
  445. --- 306,312 -----
  446.       printf("          scale            : %ld\n", get4());
  447.       printf("%06ld: ", pc);
  448.       printf("          design           : %ld\n", get4());
  449. !     printf("%06ld: ", pc);
  450.       printf("          name             : ");
  451.       for (i = (int) get1() + (int) get1(); i > 0; i--)
  452.           putchar((int) get1());
  453. *** ORG/dvi2tty.c
  454. --- dvi2tty.c
  455. **************
  456. *** 1,4
  457.   /******************************************************************************
  458.    * Marcel Mol: 1989-01-19  (UUCP: duteca!marcel)
  459.    *               Changed in option handling, no change
  460.    *               in user interface (only the undocumented 
  461. --- 1,9 -----
  462.   /******************************************************************************
  463. +  * Marcel Mol: 1989-02-14  (UUCP: duteca!marcel)
  464. +  *               Fixed check for .dvi extension.
  465. +  *               Allowed more ligatures.
  466. +  *               Fixed side effect bugs (2 gets as function arguments).
  467. +  *               Version 3.2.
  468.    * Marcel Mol: 1989-01-19  (UUCP: duteca!marcel)
  469.    *               Changed in option handling, no change
  470.    *               in user interface (only the undocumented 
  471. **************
  472. *** 118,124
  473.   #define onepp  8                /* only one page list allowed        */
  474.   #define noarg  9                /* argument expected                 */
  475.   
  476. ! char *dvi2tty = "@(#) dvi2tty.c  3.1 23/01/89 M.J.E. Mol (c) 1989";
  477.   
  478.   /*---------------------------------------------------------------------------*/
  479.   
  480. --- 123,129 -----
  481.   #define onepp  8                /* only one page list allowed        */
  482.   #define noarg  9                /* argument expected                 */
  483.   
  484. ! char *dvi2tty = "@(#) dvi2tty.c  3.2 14/02/89 M.J.E. Mol (c) 1989";
  485.   
  486.   /*---------------------------------------------------------------------------*/
  487.   
  488. **************
  489. *** 455,461
  490.           usage(ign);
  491.       strcpy(DVIfilename, str);
  492.       if (!((i >= 5) && (str[i-1] == 'i') && (str[i-2] == 'v') &&
  493. !           (str[i-3] = 'd') && (str[i-4] = '.'))) {
  494.           strcat(DVIfilename, ".dvi");
  495.       }
  496.   
  497. --- 460,466 -----
  498.           usage(ign);
  499.       strcpy(DVIfilename, str);
  500.       if (!((i >= 5) && (str[i-1] == 'i') && (str[i-2] == 'v') &&
  501. !           (str[i-3] == 'd') && (str[i-4] == '.'))) {
  502.           strcat(DVIfilename, ".dvi");
  503.       }
  504.   
  505. *** ORG/dvistuff.c
  506. --- dvistuff.c
  507. **************
  508. *** 1,5
  509.   
  510.   #include "dvi2tty.h"
  511.   #include <sys/types.h>
  512.   #include <sys/stat.h>
  513. --- 1,4 -----
  514.   
  515.   #include "dvi2tty.h"
  516.   #include <sys/types.h>
  517.   #include <sys/stat.h>
  518. **************
  519. *** 39,45
  520.   #define sget3()         snum(3)
  521.   #define sget4()         snum(4)
  522.   
  523. ! char *dvistuff = "@(#) dvistuff.c  3.1 23/01/89 M.J.E. Mol (c) 1989";
  524.   
  525.   /*---------------------------------------------------------------------------*/
  526.   
  527. --- 38,44 -----
  528.   #define sget3()         snum(3)
  529.   #define sget4()         snum(4)
  530.   
  531. ! char *dvistuff = "@(#) dvistuff.c  3.2 14/02/89 M.J.E. Mol (c) 1989";
  532.   
  533.   /*---------------------------------------------------------------------------*/
  534.   
  535. **************
  536. *** 293,299
  537.                   case SET2     : setchar(get2()); break;
  538.                   case SET3     : setchar(get3()); break;
  539.                   case SET4     : setchar(get4()); break;
  540. !                 case SET_RULE : rule(MOVE, sget4(), sget4()); break;
  541.                   case PUT1     : putcharacter(get1()); break;
  542.                   case PUT2     : putcharacter(get2()); break;
  543.                   case PUT3     : putcharacter(get3()); break;
  544. --- 292,300 -----
  545.                   case SET2     : setchar(get2()); break;
  546.                   case SET3     : setchar(get3()); break;
  547.                   case SET4     : setchar(get4()); break;
  548. !                 case SET_RULE : { long height = sget4();
  549. !                                   rule(MOVE, sget4(), height); break;
  550. !                                 }
  551.                   case PUT1     : putcharacter(get1()); break;
  552.                   case PUT2     : putcharacter(get2()); break;
  553.                   case PUT3     : putcharacter(get3()); break;
  554. **************
  555. *** 298,304
  556.                   case PUT2     : putcharacter(get2()); break;
  557.                   case PUT3     : putcharacter(get3()); break;
  558.                   case PUT4     : putcharacter(get4()); break;
  559. !                 case PUT_RULE : rule(STAY, sget4(), sget4()); break;
  560.                   case NOP      : break;  /* no-op */
  561.                   case BOP      : errorexit(bdbop); break;
  562.   /*              case EOP      : break;  strange place to have EOP */
  563. --- 299,307 -----
  564.                   case PUT2     : putcharacter(get2()); break;
  565.                   case PUT3     : putcharacter(get3()); break;
  566.                   case PUT4     : putcharacter(get4()); break;
  567. !                 case PUT_RULE : { long height = sget4();
  568. !                                   rule(STAY, sget4(), height); break;
  569. !                                 }
  570.                   case NOP      : break;  /* no-op */
  571.                   case BOP      : errorexit(bdbop); break;
  572.   /*              case EOP      : break;  strange place to have EOP */
  573. **************
  574. *** 746,751
  575.                       else
  576.                           ch = 'O';
  577.                       break;
  578.   #if 0
  579.           case 92  :  ch = '"'; break;                /* beginning qoute  */
  580.           case 123 :  ch = '-'; break;
  581. --- 749,760 -----
  582.                       else
  583.                           ch = 'O';
  584.                       break;
  585. +         case 92  :  ch = '"'; break;  /* \ from `` */
  586. +         case 123 :  ch = '-'; break;  /* { from -- */
  587. +         case 124 :  ch = '_'; break;  /* | from --- */
  588. +         case 125 :  ch = '"'; break;  /* } from \H */
  589. +         case 126 :  ch = '"'; break;  /* ~ from \~ */
  590. +         case 127 :  ch = '"'; break;  /* DEL from \" */
  591.   #if 0
  592.           case 18  :  ch = '`'; break   /* from \` */
  593.           case 19  :  ch = ''''; break  /* from \' */
  594. **************
  595. *** 747,757
  596.                           ch = 'O';
  597.                       break;
  598.   #if 0
  599. !         case 92  :  ch = '"'; break;                /* beginning qoute  */
  600. !         case 123 :  ch = '-'; break;
  601. !         case 124 :  ch = '_'; break;
  602. !         case 125 :  ch = '"'; break;
  603. !         case 126 :  ch = '"'; break;
  604.   #endif
  605.       }
  606.   #if 0
  607. --- 756,769 -----
  608.           case 126 :  ch = '"'; break;  /* ~ from \~ */
  609.           case 127 :  ch = '"'; break;  /* DEL from \" */
  610.   #if 0
  611. !         case 18  :  ch = '`'; break   /* from \` */
  612. !         case 19  :  ch = ''''; break  /* from \' */
  613. !         case 20  :  ch = '~'; break   /* from \v */
  614. !         case 21  :  ch = '~'; break   /* from \u */
  615. !         case 22  :  ch = '~'; break   /* from \= */
  616. !         case 24  :  ch = ','; break   /* from \c */
  617. !         case 94  :  ch = '^'; break   /* ^ from \^ */
  618. !         case 95  :  ch = '`'; break   /* _ from \. */
  619.   #endif
  620.       }
  621.   #if 0
  622. -- 
  623. #########################################
  624. # Marcel J.E. Mol                       # They hate you if your're clever
  625. # Delft, University of Technology       # And they despise the fool
  626. # The Netherlands                       # Till you're so fucking crazy
  627. # UUCP: marcel@duteca.UUCP              # You can't follow the rules.
  628. #       duteca!marcel                      #
  629. #########################################             - Lennon
  630.  
  631.  
  632.