home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1993 #1 / NN_1993_1.iso / spool / gnu / gcc / bug / 3145 < prev    next >
Encoding:
Text File  |  1993-01-08  |  35.9 KB  |  3,759 lines

  1. Newsgroups: gnu.gcc.bug
  2. Path: sparky!uunet!zaphod.mps.ohio-state.edu!cis.ohio-state.edu!claude.cs.umb.edu!karl
  3. From: karl@claude.cs.umb.edu (Karl Berry)
  4. Subject: rt internal dump
  5. Message-ID: <199301081531.AA10236@claude.cs.umb.edu>
  6. Sender: gnulists@ai.mit.edu
  7. Reply-To: karl@cs.umb.edu
  8. Organization: GNUs Not Usenet
  9. Distribution: gnu
  10. Date: Fri, 8 Jan 1993 05:31:36 GMT
  11. Approved: bug-gcc@prep.ai.mit.edu
  12. Lines: 3745
  13.  
  14. gcc 2.3.3 on an IBM RT running 4.3 bsd (configured as romp-aos), gets an
  15. internal compiler error on the following file.  Only option is -g.
  16.  
  17. # 1 "metafont.c"
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36. # 1 ".././include/config.h" 1
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60. # 1 ".././include/c-auto.h" 1
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.  
  75.  
  76.  
  77.  
  78.  
  79.  
  80.  
  81.  
  82.  
  83.  
  84.  
  85.  
  86.  
  87.  
  88.  
  89.  
  90.  
  91.  
  92.  
  93.  
  94.  
  95.  
  96.  
  97.  
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105. # 24 ".././include/config.h" 2
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113. # 1 ".././include/c-std.h" 1
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138. # 1 "/usr/include/math.h" 1 3
  139.  
  140.  
  141.  
  142.  
  143.  
  144.  
  145.  
  146.  
  147.  
  148.  
  149.  
  150.  
  151.  
  152.  
  153. extern double asinh(), acosh(), atanh();
  154. extern double erf(), erfc();
  155. extern double fabs(), floor(), ceil(); 
  156. extern double modf(), ldexp(), frexp(), atof();
  157. extern double sqrt(), cbrt();
  158. extern double sin(), cos(), tan(), asin(), acos(), atan(), atan2();
  159. extern double expm1(), log1p(), exp(), log(), log10(), pow();
  160. extern double sinh(), cosh(), tanh();
  161. extern double hypot(), cabs(), lgamma();
  162. extern double j0(), j1(), jn(), y0(), y1(), yn();
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169. # 25 ".././include/c-std.h" 2
  170.  
  171. # 1 "/usr/local/gnu/lib/gcc-lib/romp-aos/2.3.3/include/stdio.h" 1 3
  172.  
  173. # 1 "/usr/local/gnu/lib/gcc-lib/romp-aos/2.3.3/include/stdarg.h" 1 3
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206.  
  207.  
  208.  
  209.  
  210.  
  211.  
  212.  
  213.  
  214.  
  215.  
  216.  
  217.  
  218.  
  219.  
  220.  
  221. typedef void *__gnuc_va_list;
  222.  
  223.  
  224.  
  225.  
  226.  
  227. # 85 "/usr/local/gnu/lib/gcc-lib/romp-aos/2.3.3/include/stdarg.h" 3
  228.  
  229.  
  230.  
  231.  
  232.  
  233.  
  234.  
  235.  
  236.  
  237.  
  238. # 137 "/usr/local/gnu/lib/gcc-lib/romp-aos/2.3.3/include/stdarg.h" 3
  239.  
  240.  
  241.  
  242.  
  243.  
  244. # 2 "/usr/local/gnu/lib/gcc-lib/romp-aos/2.3.3/include/stdio.h" 2 3
  245.  
  246.  
  247.  
  248.  
  249.  
  250.  
  251.  
  252.  
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268. extern    struct    _iobuf {
  269.     int    _cnt;
  270.     char    *_ptr;         
  271.     char    *_base;         
  272.     int    _bufsiz;
  273.     short    _flag;
  274.     char    _file;         
  275. } _iob[];
  276.  
  277.  
  278.  
  279.  
  280.  
  281.  
  282.  
  283.  
  284.  
  285.  
  286.         
  287.  
  288.  
  289.  
  290.  
  291.  
  292.  
  293.  
  294.  
  295.  
  296.  
  297.  
  298.  
  299.  
  300.  
  301.  
  302.  
  303.  
  304.  
  305.  
  306.  
  307.  
  308.  
  309.  
  310.  
  311.  
  312.  
  313. struct _iobuf     *fopen();
  314. struct _iobuf     *fdopen();
  315. struct _iobuf     *freopen();
  316. struct _iobuf     *popen();
  317. long    ftell();
  318. char    *fgets();
  319. char    *gets();
  320.  
  321.  
  322.  
  323.  
  324. # 26 ".././include/c-std.h" 2
  325.  
  326.  
  327.  
  328. # 1 "/usr/local/gnu/lib/gcc-lib/romp-aos/2.3.3/include/sys/types.h" 1 3
  329.  
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336.  
  337.  
  338.  
  339.  
  340.  
  341.  
  342.  
  343.  
  344.  
  345.  
  346.  
  347.  
  348.  
  349.  
  350.  
  351.  
  352.  
  353.  
  354.  
  355.  
  356.  
  357.  
  358.  
  359.  
  360.  
  361.  
  362.  
  363.  
  364.  
  365. typedef    unsigned char    u_char;
  366. typedef    unsigned short    u_short;
  367. typedef    unsigned int    u_int;
  368. typedef    unsigned long    u_long;
  369. typedef    unsigned short    ushort;         
  370.  
  371.  
  372.  
  373.  
  374.  
  375.  
  376.  
  377.  
  378. typedef    struct    _physadr { int r[1]; } *physadr;
  379. typedef    struct    label_t    {
  380.     int    val[11];
  381. } label_t;
  382.  
  383.  
  384. typedef    struct    _quad { long val[2]; } quad;
  385. typedef    long    daddr_t;
  386. typedef    char *    caddr_t;
  387. typedef    u_long    ino_t;
  388. typedef    long    swblk_t;
  389.  
  390.  
  391. typedef    long    size_t;
  392.  
  393. typedef    long    time_t;
  394. typedef    short    dev_t;
  395. typedef    long    off_t;
  396. typedef    u_short    uid_t;
  397. typedef    u_short    gid_t;
  398.  
  399. typedef signed char prio_t;     
  400.  
  401.  
  402.  
  403.  
  404.  
  405.  
  406.  
  407.  
  408.  
  409.  
  410.  
  411.  
  412.  
  413.  
  414.  
  415. typedef long    fd_mask;
  416.  
  417.  
  418.  
  419.  
  420.  
  421. typedef    struct fd_set {
  422.     fd_mask    fds_bits[(((256 )+(( (sizeof(fd_mask) * 8        )    )-1))/( (sizeof(fd_mask) * 8        )    )) ];
  423. } fd_set;
  424.  
  425.  
  426.  
  427.  
  428.  
  429.  
  430.  
  431.  
  432.  
  433.  
  434.  
  435. typedef struct qhdr {
  436.     struct qhdr *link, *rlink;
  437. } *queue_t;
  438.  
  439.  
  440.  
  441.  
  442. # 29 ".././include/c-std.h" 2
  443.  
  444.  
  445.  
  446.  
  447.  
  448.  
  449.  
  450.  
  451.  
  452.  
  453.  
  454.  
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463. extern char *getenv ();
  464.  
  465.  
  466.  
  467.  
  468.  
  469.  
  470.  
  471. extern void  *calloc (), *malloc (), *realloc ();
  472.  
  473.  
  474.  
  475. extern struct _iobuf  *popen ();
  476. extern double hypot ();
  477.  
  478.  
  479. # 31 ".././include/config.h" 2
  480.  
  481.  
  482.  
  483. # 1 ".././include/c-memstr.h" 1
  484.  
  485.  
  486.  
  487.  
  488.  
  489.  
  490.  
  491.  
  492.  
  493.  
  494.  
  495.  
  496.  
  497.  
  498.  
  499.  
  500.  
  501.  
  502.  
  503.  
  504.  
  505.  
  506.  
  507.  
  508.  
  509.  
  510. # 1 "/usr/include/string.h" 1 3
  511.  
  512.  
  513.  
  514.  
  515.  
  516.  
  517.  
  518.  
  519.  
  520.  
  521.  
  522.  
  523.  
  524.  
  525.  
  526.  
  527.  
  528.  
  529.  
  530.  
  531. # 1 "/usr/include/strings.h" 1 3
  532.  
  533.  
  534.  
  535.  
  536.  
  537.  
  538.  
  539.  
  540.  
  541.  
  542.  
  543.  
  544.  
  545.  
  546.  
  547.  
  548.  
  549.  
  550.  
  551.  
  552.  
  553.  
  554.  
  555.  
  556. char    *strcat();
  557. char    *strncat();
  558. int    strcmp();
  559. int    strncmp();
  560. char    *strcpy();
  561. char    *strncpy();
  562. int    strlen();
  563. char    *index();
  564. char    *rindex();
  565. # 21 "/usr/include/string.h" 2 3
  566.  
  567.  
  568.  
  569.  
  570.  
  571.  
  572. extern char *strcpyn();
  573. extern char *strcatn();
  574. extern int strcmpn();
  575.  
  576.  
  577.  
  578.  
  579.  
  580.  
  581. extern char *strchr();
  582. extern char *strrchr();
  583. extern char *strpbrk();
  584. extern int strspn();
  585. extern int strcspn();
  586. extern char *strtok();
  587. # 27 ".././include/c-memstr.h" 2
  588.  
  589.  
  590.  
  591.  
  592. # 1 "/usr/include/memory.h" 1 3
  593.  
  594.  
  595.  
  596.  
  597.  
  598.  
  599.  
  600.  
  601.  
  602.  
  603.  
  604.  
  605.  
  606.  
  607.  
  608.  
  609.  
  610.  
  611.  
  612.  
  613.  
  614.  
  615.  
  616.  
  617. extern char *memccpy();
  618. extern char *memchr();
  619. extern int memcmp();
  620. extern char *memcpy();
  621. extern char *memset();
  622. # 31 ".././include/c-memstr.h" 2
  623.  
  624.  
  625.  
  626.  
  627.  
  628.  
  629.  
  630.  
  631.  
  632.  
  633.  
  634.  
  635.  
  636.  
  637.  
  638.  
  639. # 60 ".././include/c-memstr.h"
  640.  
  641.  
  642.  
  643. # 34 ".././include/config.h" 2
  644.  
  645.  
  646.  
  647. # 1 ".././include/c-errno.h" 1
  648.  
  649.  
  650.  
  651.  
  652.  
  653.  
  654.  
  655.  
  656.  
  657.  
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664.  
  665.  
  666.  
  667.  
  668.  
  669. # 1 "/usr/include/errno.h" 1 3
  670.  
  671.  
  672.  
  673.  
  674.  
  675.  
  676.  
  677.  
  678.  
  679.  
  680.  
  681.  
  682.  
  683.  
  684. # 1 "/usr/include/sys/nfs_defines.h" 1 3
  685.  
  686.  
  687.  
  688.  
  689.  
  690.  
  691.  
  692.  
  693.  
  694.  
  695.  
  696.  
  697.  
  698.  
  699.  
  700.  
  701.  
  702.  
  703.  
  704.  
  705.  
  706.  
  707.  
  708.  
  709.  
  710.  
  711.  
  712.  
  713.  
  714.  
  715.  
  716.  
  717.  
  718.  
  719.  
  720.  
  721.  
  722.  
  723.  
  724. # 15 "/usr/include/errno.h" 2 3
  725.  
  726.  
  727.  
  728.  
  729.  
  730.  
  731.  
  732.  
  733.  
  734.  
  735.  
  736.  
  737.  
  738.  
  739.  
  740.  
  741.  
  742.  
  743.  
  744.  
  745.  
  746.  
  747.  
  748.  
  749.  
  750.  
  751.  
  752.  
  753.  
  754.  
  755.  
  756.  
  757.  
  758.  
  759.  
  760.  
  761.  
  762.  
  763.  
  764.  
  765.  
  766.  
  767.  
  768.  
  769.  
  770.  
  771.  
  772.  
  773.  
  774.  
  775.  
  776.  
  777.  
  778.  
  779.  
  780.  
  781.  
  782.  
  783.  
  784.  
  785.  
  786.      
  787.  
  788.  
  789.  
  790.  
  791.  
  792.  
  793.  
  794.  
  795.  
  796.  
  797.  
  798.  
  799.  
  800.      
  801.  
  802.  
  803.  
  804.  
  805.  
  806.  
  807.  
  808.  
  809.  
  810.  
  811.  
  812.  
  813.  
  814.      
  815.  
  816.  
  817.  
  818.  
  819.  
  820.  
  821.  
  822.  
  823.  
  824.  
  825.  
  826.  
  827.  
  828.  
  829.  
  830.  
  831.  
  832.  
  833.  
  834.  
  835.  
  836.  
  837.  
  838.  
  839.  
  840.  
  841.  
  842.  
  843.  
  844.  
  845.  
  846.  
  847.  
  848.  
  849.  
  850. # 22 ".././include/c-errno.h" 2
  851.  
  852.  
  853. extern int errno;
  854.  
  855.  
  856.  
  857. # 37 ".././include/config.h" 2
  858.  
  859.  
  860.  
  861. # 1 "/usr/local/gnu/include/assert.h" 1 3
  862.  
  863.  
  864.  
  865.  
  866.  
  867.  
  868.  
  869.  
  870.  
  871. # 19 "/usr/local/gnu/include/assert.h" 3
  872.  
  873.  
  874.  
  875.  
  876.  
  877.  
  878.  
  879.  
  880.  
  881.  
  882. extern void __eprintf (const char *, const char *, unsigned, const char *);
  883.  
  884.  
  885.  
  886.  
  887.  
  888.  
  889.  
  890.  
  891.  
  892. # 50 "/usr/local/gnu/include/assert.h" 3
  893.  
  894.  
  895.  
  896. # 40 ".././include/config.h" 2
  897.  
  898.  
  899.  
  900. # 1 ".././include/c-minmax.h" 1
  901.  
  902.  
  903.  
  904.  
  905.  
  906.  
  907.  
  908.  
  909.  
  910.  
  911.  
  912.  
  913.  
  914.  
  915.  
  916.  
  917.  
  918.  
  919.  
  920.  
  921.  
  922.  
  923. # 1 ".././include/c-limits.h" 1
  924.  
  925.  
  926.  
  927.  
  928.  
  929.  
  930.  
  931.  
  932.  
  933.  
  934.  
  935.  
  936.  
  937.  
  938.  
  939.  
  940.  
  941.  
  942.  
  943.  
  944.  
  945.  
  946.  
  947.  
  948.  
  949.  
  950. # 1 "/usr/local/gnu/lib/gcc-lib/romp-aos/2.3.3/include/limits.h" 1 3
  951.  
  952.  
  953.  
  954.  
  955.  
  956.  
  957.  
  958.  
  959.  
  960.  
  961.  
  962.  
  963.  
  964.  
  965.  
  966.  
  967.  
  968.  
  969.  
  970.  
  971.  
  972.  
  973.  
  974.  
  975.  
  976.  
  977.  
  978.  
  979.  
  980.  
  981.  
  982.  
  983.  
  984.  
  985.  
  986.  
  987.  
  988.  
  989.  
  990.  
  991.  
  992.  
  993.  
  994.  
  995.  
  996.  
  997.  
  998.  
  999.  
  1000.  
  1001.  
  1002.  
  1003.  
  1004.  
  1005.  
  1006.  
  1007.  
  1008.  
  1009.  
  1010.  
  1011.  
  1012.  
  1013.  
  1014.  
  1015.  
  1016.  
  1017.  
  1018.  
  1019.  
  1020.  
  1021.  
  1022.  
  1023.  
  1024.  
  1025.  
  1026.  
  1027.  
  1028.  
  1029.  
  1030.  
  1031.  
  1032.  
  1033.  
  1034. # 27 ".././include/c-limits.h" 2
  1035.  
  1036.  
  1037.  
  1038.  
  1039. # 1 "/usr/local/gnu/lib/gcc-lib/romp-aos/2.3.3/include/float.h" 1 3
  1040.  
  1041.  
  1042.  
  1043.  
  1044.  
  1045.     
  1046.  
  1047.  
  1048.     
  1049.  
  1050.  
  1051.     
  1052.  
  1053.  
  1054.     
  1055.  
  1056.  
  1057.     
  1058.  
  1059.  
  1060.     
  1061.  
  1062.  
  1063.     
  1064.  
  1065.  
  1066.     
  1067.  
  1068.  
  1069.     
  1070.  
  1071.  
  1072.     
  1073.  
  1074.  
  1075.     
  1076.  
  1077.  
  1078.  
  1079.     
  1080.  
  1081.  
  1082.     
  1083.  
  1084.  
  1085.     
  1086.  
  1087.  
  1088.     
  1089.  
  1090.  
  1091.     
  1092.  
  1093.  
  1094.     
  1095.  
  1096.  
  1097.     
  1098.  
  1099.  
  1100.     
  1101.  
  1102.  
  1103.     
  1104.  
  1105.  
  1106.  
  1107.     
  1108.  
  1109.  
  1110.     
  1111.  
  1112.  
  1113.     
  1114.  
  1115.  
  1116.  
  1117. union __convert_long_double {
  1118.   int __convert_long_double_i[4];
  1119.   long double __convert_long_double_d;
  1120. };
  1121.  
  1122.  
  1123.     
  1124.  
  1125.  
  1126.     
  1127.  
  1128.  
  1129.     
  1130.  
  1131.  
  1132.     
  1133.  
  1134.  
  1135.     
  1136.  
  1137.  
  1138.     
  1139.  
  1140.  
  1141.  
  1142.  
  1143. # 31 ".././include/c-limits.h" 2
  1144.  
  1145.  
  1146.  
  1147.  
  1148. # 23 ".././include/c-minmax.h" 2
  1149.  
  1150.  
  1151.  
  1152.  
  1153.  
  1154.  
  1155.  
  1156.  
  1157.  
  1158.  
  1159.  
  1160.  
  1161.  
  1162.  
  1163.  
  1164.  
  1165.  
  1166.  
  1167.  
  1168.  
  1169.  
  1170.  
  1171.  
  1172.  
  1173.  
  1174.  
  1175.  
  1176.  
  1177.  
  1178.  
  1179.  
  1180.  
  1181.  
  1182.  
  1183.  
  1184.  
  1185.  
  1186.  
  1187.  
  1188.  
  1189.  
  1190.  
  1191.  
  1192.  
  1193.  
  1194.  
  1195.  
  1196.  
  1197.  
  1198.  
  1199.  
  1200.  
  1201.  
  1202.  
  1203.  
  1204.  
  1205.  
  1206.  
  1207.  
  1208.  
  1209.  
  1210.  
  1211. # 43 ".././include/config.h" 2
  1212.  
  1213.  
  1214.  
  1215. # 1 ".././include/c-seek.h" 1
  1216.  
  1217.  
  1218.  
  1219.  
  1220.  
  1221.  
  1222.  
  1223.  
  1224.  
  1225.  
  1226.  
  1227.  
  1228.  
  1229.  
  1230.  
  1231.  
  1232.  
  1233.  
  1234.  
  1235.  
  1236.  
  1237.  
  1238.  
  1239.  
  1240.  
  1241.  
  1242.  
  1243.  
  1244.  
  1245.  
  1246. # 46 ".././include/config.h" 2
  1247.  
  1248.  
  1249.  
  1250.  
  1251.  
  1252.  
  1253.  
  1254.  
  1255.  
  1256. # 1 ".././include/c-proto.h" 1
  1257.  
  1258.  
  1259.  
  1260.  
  1261.  
  1262.  
  1263.  
  1264.  
  1265.  
  1266.  
  1267.  
  1268.  
  1269.  
  1270.  
  1271.  
  1272.  
  1273.  
  1274.  
  1275.  
  1276.  
  1277.  
  1278.  
  1279.  
  1280.  
  1281.  
  1282.  
  1283.  
  1284.  
  1285.  
  1286.  
  1287.  
  1288.  
  1289.  
  1290.  
  1291.  
  1292.  
  1293.  
  1294.  
  1295.  
  1296.  
  1297.  
  1298.  
  1299. # 59 ".././include/c-proto.h"
  1300.  
  1301.  
  1302.  
  1303. # 55 ".././include/config.h" 2
  1304.  
  1305.  
  1306.  
  1307. # 1 ".././include/global.h" 1
  1308.  
  1309.  
  1310.  
  1311.  
  1312.  
  1313.  
  1314.  
  1315.  
  1316.  
  1317.  
  1318.  
  1319.  
  1320.  
  1321.  
  1322.  
  1323.  
  1324.  
  1325.  
  1326.  
  1327.  
  1328.  
  1329.  
  1330. # 1 ".././include/lib.h" 1
  1331.  
  1332.  
  1333.  
  1334.  
  1335.  
  1336.  
  1337.  
  1338.  
  1339.  
  1340.  
  1341.  
  1342.  
  1343.  
  1344.  
  1345.  
  1346.  
  1347.  
  1348.  
  1349.  
  1350.  
  1351.  
  1352. # 1 ".././include/types.h" 1
  1353.  
  1354.  
  1355.  
  1356.  
  1357.  
  1358.  
  1359.  
  1360.  
  1361.  
  1362.  
  1363.  
  1364.  
  1365.  
  1366.  
  1367.  
  1368.  
  1369.  
  1370.  
  1371.  
  1372.  
  1373.  
  1374.  
  1375. typedef enum { false = 0, true = 1 } boolean;
  1376.  
  1377.  
  1378.  
  1379.  
  1380.  
  1381.  
  1382.  
  1383.  
  1384.  
  1385. typedef char *string;
  1386.  
  1387.  
  1388. typedef void *address;
  1389.  
  1390.  
  1391. typedef double real;
  1392.  
  1393.  
  1394.  
  1395.  
  1396. typedef unsigned char charcode_type;
  1397.  
  1398.  
  1399.  
  1400. typedef unsigned char one_byte;
  1401. typedef signed char signed_byte;
  1402. typedef unsigned short two_bytes;
  1403. typedef short signed_2_bytes;
  1404. typedef unsigned int four_bytes;
  1405. typedef int signed_4_bytes;
  1406. typedef int byte_count_type;
  1407.  
  1408.  
  1409.  
  1410.  
  1411.  
  1412.  
  1413.  
  1414.  
  1415.  
  1416. typedef struct
  1417. {
  1418.   real real;
  1419.   real imag;
  1420. } complex;
  1421. typedef enum { first_complex_part, second_complex_part} complex_part_type;
  1422. typedef enum { polar_rep, rectangular_rep} complex_rep_type;
  1423.  
  1424.  
  1425.  
  1426. typedef struct
  1427. {
  1428.   unsigned height, width;
  1429. } dimensions_type;
  1430.  
  1431.  
  1432.  
  1433.  
  1434.  
  1435.  
  1436. typedef struct
  1437. {
  1438.   int x, y;
  1439. } coordinate_type;
  1440.  
  1441. typedef struct
  1442. {
  1443.   double x, y;
  1444. } real_coordinate_type;
  1445.  
  1446.  
  1447. # 22 ".././include/lib.h" 2
  1448.  
  1449.  
  1450.  
  1451. extern string concat (string s1,  string s2) ;
  1452. extern string concat3 (string,  string,  string) ;
  1453. extern string concat4 (string,  string,  string,  string) ;
  1454. extern string concat5 (string,  string,  string,  string,  string) ;
  1455.  
  1456.  
  1457.  
  1458. extern string xstrdup (string s) ;
  1459.  
  1460.  
  1461.  
  1462.  
  1463. extern boolean same_file_p (string filename1,  string filename2) ;
  1464.  
  1465.  
  1466.  
  1467.  
  1468. extern string find_suffix (string name) ;
  1469.  
  1470.  
  1471. extern string remove_suffix (string name) ;
  1472.  
  1473.  
  1474.  
  1475.  
  1476. extern string make_suffix (string s,  string suffix) ;
  1477.  
  1478.  
  1479.  
  1480.  
  1481. extern string make_prefix (string stem_prefix,  string name) ;
  1482.  
  1483.  
  1484.  
  1485. extern string extend_filename (string name,  string suffix) ;
  1486.  
  1487.  
  1488.  
  1489.  
  1490.  
  1491. extern address xmalloc (unsigned size) ;
  1492. extern address xrealloc (address old_address,  unsigned new_size) ;
  1493. extern address xcalloc (unsigned nelem,  unsigned elsize) ;
  1494.  
  1495.  
  1496.  
  1497.  
  1498.  
  1499.  
  1500.  
  1501.  
  1502. # 23 ".././include/global.h" 2
  1503.  
  1504.  
  1505.  
  1506.  
  1507.  
  1508.  
  1509.  
  1510.  
  1511.  
  1512.  
  1513.  
  1514.  
  1515.  
  1516.  
  1517.  
  1518.  
  1519.  
  1520.  
  1521.  
  1522.  
  1523.  
  1524.  
  1525.  
  1526.  
  1527.  
  1528.  
  1529.  
  1530.  
  1531.  
  1532.  
  1533.  
  1534.  
  1535.  
  1536.  
  1537.  
  1538.  
  1539.  
  1540.  
  1541.  
  1542.  
  1543.  
  1544.  
  1545.  
  1546.  
  1547.  
  1548.  
  1549.  
  1550.  
  1551.  
  1552.  
  1553.  
  1554.  
  1555.  
  1556.  
  1557.  
  1558.  
  1559.  
  1560.  
  1561.  
  1562.  
  1563.  
  1564.  
  1565.  
  1566.  
  1567.  
  1568.  
  1569.  
  1570.  
  1571.  
  1572.  
  1573.  
  1574.  
  1575.  
  1576.  
  1577.  
  1578.  
  1579.  
  1580.  
  1581.  
  1582.  
  1583. extern string now (void);
  1584.  
  1585.  
  1586.  
  1587. extern boolean float_ok (string);
  1588. extern boolean integer_ok (string);
  1589.  
  1590.  
  1591. extern const unsigned atou (string);
  1592.  
  1593.  
  1594.  
  1595. extern string itoa (int);
  1596. extern string utoa (unsigned);
  1597. extern string xdtoa (double);
  1598.  
  1599.  
  1600.  
  1601. extern struct _iobuf  *xfopen (string filename, string mode);
  1602. extern void xfclose (struct _iobuf  *, string filename);
  1603. extern void xfseek (struct _iobuf  *, long, int, string filename);
  1604. extern four_bytes xftell (struct _iobuf  *, string filename);
  1605.  
  1606.  
  1607. extern void xrename (string from, string to);
  1608.  
  1609.  
  1610.  
  1611. extern string basename (string name);
  1612.  
  1613.  
  1614.  
  1615.  
  1616.  
  1617. extern void safe_free (address *p);
  1618.  
  1619.  
  1620.  
  1621.  
  1622.  
  1623.  
  1624.  
  1625.  
  1626.  
  1627.  
  1628.  
  1629. extern const boolean epsilon_equal (real v1, real v2);
  1630.  
  1631.  
  1632. extern const real acosd (real);
  1633.  
  1634.  
  1635. extern const real distance (real_coordinate_type, real_coordinate_type);
  1636. extern const real int_distance (coordinate_type, coordinate_type);
  1637.  
  1638.  
  1639. extern const real slope (real_coordinate_type, real_coordinate_type);
  1640.  
  1641.  
  1642. extern const real_coordinate_type int_to_real_coord (coordinate_type);
  1643. extern const coordinate_type real_to_int_coord (real_coordinate_type);
  1644.  
  1645.  
  1646. extern const boolean points_adjacent_p (int row1, int col1, int r2, int c2);
  1647.  
  1648.  
  1649. extern void find_bounds (real values[], unsigned value_count,
  1650.                        real *the_min, real *the_max);
  1651.  
  1652.  
  1653. extern real *map_to_unit (real * values, unsigned value_count);
  1654.  
  1655.  
  1656.  
  1657.  
  1658.  
  1659.  
  1660. extern string substring (string source, const unsigned start,
  1661.                          const unsigned limit);
  1662.  
  1663.  
  1664. extern string lowercasify (string s);
  1665.  
  1666.  
  1667.  
  1668.  
  1669.  
  1670.  
  1671.  
  1672.  
  1673.  
  1674.  
  1675.  
  1676. extern charcode_type parse_charcode (string s, boolean *valid);
  1677.  
  1678.  
  1679.  
  1680. extern charcode_type xparse_charcode (string s);
  1681.  
  1682.  
  1683.  
  1684.  
  1685.  
  1686.  
  1687.  
  1688. # 58 ".././include/config.h" 2
  1689.  
  1690.  
  1691.  
  1692. # 19 "metafont.c" 2
  1693.  
  1694.  
  1695. # 1 ".././include/bzr.h" 1
  1696.  
  1697.  
  1698.  
  1699.  
  1700.  
  1701.  
  1702.  
  1703.  
  1704.  
  1705.  
  1706.  
  1707.  
  1708.  
  1709.  
  1710.  
  1711.  
  1712.  
  1713.  
  1714.  
  1715.  
  1716.  
  1717.  
  1718.  
  1719.  
  1720. # 1 ".././include/bounding-box.h" 1
  1721.  
  1722.  
  1723.  
  1724.  
  1725.  
  1726.  
  1727.  
  1728.  
  1729.  
  1730.  
  1731.  
  1732.  
  1733.  
  1734.  
  1735.  
  1736.  
  1737.  
  1738.  
  1739.  
  1740.  
  1741.  
  1742.  
  1743.  
  1744.  
  1745.  
  1746.  
  1747. typedef struct
  1748. {
  1749.   signed_4_bytes min_row, max_row;
  1750.   signed_4_bytes min_col, max_col;
  1751. } bounding_box_type;
  1752.  
  1753. typedef struct
  1754. {
  1755.   real min_row, max_row;
  1756.   real min_col, max_col;
  1757. } real_bounding_box_type;
  1758.  
  1759.  
  1760.  
  1761.  
  1762.  
  1763.  
  1764.  
  1765.  
  1766.  
  1767.  
  1768.  
  1769.  
  1770.  
  1771.  
  1772.  
  1773.  
  1774. extern const bounding_box_type dimensions_to_bb (dimensions_type);
  1775. extern const dimensions_type bb_to_dimensions (bounding_box_type);
  1776.  
  1777.  
  1778.  
  1779. extern void update_real_bounding_box (real_bounding_box_type *bb,
  1780.                                       real_coordinate_type p);
  1781. extern void update_bounding_box (bounding_box_type *bb, coordinate_type p);
  1782.  
  1783.  
  1784. # 25 ".././include/bzr.h" 2
  1785.  
  1786. # 1 ".././include/font.h" 1
  1787.  
  1788.  
  1789.  
  1790.  
  1791.  
  1792.  
  1793.  
  1794.  
  1795.  
  1796.  
  1797.  
  1798.  
  1799.  
  1800.  
  1801.  
  1802.  
  1803.  
  1804.  
  1805.  
  1806.  
  1807.  
  1808. # 1 ".././include/bitmap.h" 1
  1809.  
  1810.  
  1811.  
  1812.  
  1813.  
  1814.  
  1815.  
  1816.  
  1817.  
  1818.  
  1819.  
  1820.  
  1821.  
  1822.  
  1823.  
  1824.  
  1825.  
  1826.  
  1827.  
  1828.  
  1829.  
  1830.  
  1831.  
  1832.  
  1833. # 1 "/usr/local/gnu/lib/gcc-lib/romp-aos/2.3.3/include/stdio.h" 1 3
  1834.  
  1835. # 1 "/usr/local/gnu/lib/gcc-lib/romp-aos/2.3.3/include/stdarg.h" 1 3
  1836.  
  1837.  
  1838.  
  1839.  
  1840.  
  1841.  
  1842.  
  1843.  
  1844.  
  1845.  
  1846.  
  1847.  
  1848.  
  1849.  
  1850.  
  1851.  
  1852.  
  1853.  
  1854.  
  1855.  
  1856.  
  1857.  
  1858.  
  1859.  
  1860.  
  1861.  
  1862.  
  1863.  
  1864.  
  1865.  
  1866.  
  1867.  
  1868.  
  1869.  
  1870.  
  1871.  
  1872.  
  1873.  
  1874.  
  1875.  
  1876.  
  1877.  
  1878.  
  1879.  
  1880.  
  1881.  
  1882.  
  1883.  
  1884.  
  1885.  
  1886.  
  1887.  
  1888.  
  1889. # 85 "/usr/local/gnu/lib/gcc-lib/romp-aos/2.3.3/include/stdarg.h" 3
  1890.  
  1891.  
  1892.  
  1893.  
  1894.  
  1895.  
  1896.  
  1897.  
  1898.  
  1899.  
  1900. # 137 "/usr/local/gnu/lib/gcc-lib/romp-aos/2.3.3/include/stdarg.h" 3
  1901.  
  1902.  
  1903.  
  1904.  
  1905.  
  1906. # 2 "/usr/local/gnu/lib/gcc-lib/romp-aos/2.3.3/include/stdio.h" 2 3
  1907.  
  1908.  
  1909.  
  1910.  
  1911.  
  1912.  
  1913.  
  1914.  
  1915.  
  1916.  
  1917.  
  1918.  
  1919.  
  1920.  
  1921.  
  1922.  
  1923.  
  1924.  
  1925.  
  1926.  
  1927.  
  1928. # 80 "/usr/local/gnu/lib/gcc-lib/romp-aos/2.3.3/include/stdio.h" 3
  1929.  
  1930. # 25 ".././include/bitmap.h" 2
  1931.  
  1932.  
  1933.  
  1934.  
  1935.  
  1936.  
  1937.  
  1938.  
  1939.  
  1940.  
  1941.  
  1942.  
  1943. typedef struct
  1944. {
  1945.   dimensions_type dimensions;
  1946.   one_byte *bitmap;
  1947. } bitmap_type;
  1948.  
  1949.  
  1950.  
  1951.  
  1952.  
  1953.  
  1954.  
  1955.  
  1956.  
  1957.  
  1958.  
  1959.  
  1960.  
  1961.  
  1962.  
  1963.  
  1964.  
  1965.  
  1966.  
  1967.  
  1968.  
  1969.  
  1970.  
  1971.  
  1972.  
  1973.  
  1974. # 78 ".././include/bitmap.h"
  1975.  
  1976.  
  1977.  
  1978. extern bitmap_type new_bitmap (dimensions_type);
  1979.  
  1980.  
  1981. extern void free_bitmap (bitmap_type *);
  1982.  
  1983.  
  1984. extern bitmap_type copy_bitmap (bitmap_type bitmap);
  1985.  
  1986.  
  1987.  
  1988. extern bitmap_type extract_subbitmap (bitmap_type b, bounding_box_type bb);
  1989.  
  1990.  
  1991.  
  1992.  
  1993.  
  1994.  
  1995. extern const bounding_box_type bitmap_to_bb (const bitmap_type);
  1996.  
  1997.  
  1998.  
  1999.  
  2000.  
  2001.  
  2002. extern unsigned *bitmap_find_transitions (const one_byte *row, unsigned width);
  2003.  
  2004.  
  2005. extern void print_bounded_bitmap (struct _iobuf  *, bitmap_type, bounding_box_type);
  2006. extern void/gcc-lib/romp-aos/2.3.3/include/stdarg.h" 3
  2007.  
  2008.  
  2009.  
  2010.  
  2011.  
  2012. # 2 "/usr/local/gnu/lib/gcc-lib/romp-aos/2.3.3/include/stdio.h" 2 3
  2013.  
  2014.  
  2015.  
  2016.  
  2017.  
  2018.  
  2019.  
  2020.  
  2021.  
  2022.  
  2023.  
  2024.  
  2025.  
  2026.  
  2027.  
  2028.  
  2029.  
  2030.  
  2031.  
  2032.  
  2033.  
  2034. # 80 "/usr/local/gnu/lib/gcc-lib/romp-aos/2.3.3/include/stdio.h" 3
  2035.  
  2036. # 22 ".././include/spline.h" 2
  2037.  
  2038.  
  2039.  
  2040.  
  2041.  
  2042.  
  2043. typedef enum
  2044. {
  2045.   LINEAR = 1, QUADRATIC = 2, CUBIC = 3
  2046. } polynomial_degree;
  2047.  
  2048.  
  2049.  
  2050.  
  2051.  
  2052.  
  2053.  
  2054. typedef struct
  2055. {
  2056.   real_coordinate_type v[4];     
  2057.   polynomial_degree degree;
  2058.   real linearity;
  2059. } spline_type;
  2060.  
  2061.  
  2062.  
  2063.  
  2064.  
  2065.  
  2066.  
  2067.  
  2068.  
  2069.  
  2070. extern spline_type new_spline (void);
  2071.  
  2072.  
  2073. extern void print_spline (struct _iobuf  *, spline_type);
  2074.  
  2075.  
  2076. extern real_coordinate_type evaluate_spline (spline_type spline, real t);
  2077.  
  2078.  
  2079.  
  2080.  
  2081.  
  2082. typedef struct
  2083. {
  2084.   spline_type *data;
  2085.   unsigned length;
  2086. } spline_list_type;
  2087.  
  2088.  
  2089.  
  2090.  
  2091.  
  2092.  
  2093.  
  2094.  
  2095.  
  2096.  
  2097.  
  2098.  
  2099.  
  2100.  
  2101.  
  2102.  
  2103.  
  2104.  
  2105.  
  2106.  
  2107.  
  2108.  
  2109.  
  2110. extern spline_list_type *new_spline_list (void);
  2111. extern spline_list_type *init_spline_list (spline_type);
  2112. extern void free_spline_list (spline_list_type *);
  2113.  
  2114.  
  2115. extern void append_spline (spline_list_type *s_list, spline_type s);
  2116.  
  2117.  
  2118. extern void concat_spline_lists (spline_list_type *s1, spline_list_type s2);
  2119.  
  2120.  
  2121.  
  2122.  
  2123.  
  2124. typedef struct
  2125. {
  2126.   spline_list_type *data;
  2127.   unsigned length;
  2128. } spline_list_array_type;
  2129.  
  2130.  
  2131.  
  2132.  
  2133.  
  2134.  
  2135.  
  2136.  
  2137.  
  2138. extern spline_list_array_type new_spline_list_array (void);
  2139. extern void free_spline_list_array (spline_list_array_type *);
  2140. extern void append_spline_list (spline_list_array_type *, spline_list_type);
  2141.  
  2142.  
  2143. # 27 ".././include/bzr.h" 2
  2144.  
  2145.  
  2146.  
  2147.  
  2148.  
  2149.  
  2150.  
  2151. extern boolean bzr_open_output_file (string filename);
  2152. extern boolean bzr_open_input_file (string filename);
  2153.  
  2154.  
  2155. extern void bzr_close_output_file (void);
  2156. extern void bzr_close_input_file (void);
  2157.  
  2158.  
  2159. typedef struct
  2160. {
  2161.   string comment;
  2162.   real design_size;
  2163. } bzr_preamble_type;
  2164.  
  2165.  
  2166.  
  2167.  
  2168.  
  2169.  
  2170.  
  2171.  
  2172.  
  2173.  
  2174. extern void bzr_put_preamble (bzr_preamble_type);
  2175.  
  2176.  
  2177.  
  2178.  
  2179.  
  2180.  
  2181. extern bzr_preamble_type bzr_get_preamble (void);
  2182.  
  2183.  
  2184.  
  2185. typedef struct
  2186. {
  2187.   charcode_type code;
  2188.   real set_width;
  2189.   real_bounding_box_type bb;
  2190.   spline_list_array_type shape;
  2191. } bzr_char_type;
  2192.  
  2193.  
  2194.  
  2195.  
  2196.  
  2197.  
  2198.  
  2199.  
  2200.  
  2201.  
  2202.  
  2203.  
  2204.  
  2205.  
  2206.  
  2207.  
  2208.  
  2209.  
  2210.  
  2211.  
  2212. extern void bzr_put_char (bzr_char_type);
  2213.  
  2214.  
  2215.  
  2216.  
  2217. extern bzr_char_type *bzr_get_next_char (void);
  2218.  
  2219.  
  2220.  
  2221.  
  2222. extern bzr_char_type *bzr_get_char (one_byte code);
  2223.  
  2224.  
  2225.  
  2226. typedef struct
  2227. {
  2228.   real_bounding_box_type font_bb;
  2229.   one_byte nchars;
  2230. } bzr_postamble_type;
  2231.  
  2232.  
  2233.  
  2234.  
  2235.  
  2236.  
  2237.  
  2238.  
  2239.  
  2240.  
  2241.  
  2242.  
  2243. extern void bzr_put_postamble (void);
  2244.  
  2245.  
  2246.  
  2247.  
  2248. extern bzr_postamble_type bzr_get_postamble (void);
  2249.  
  2250.  
  2251. # 21 "metafont.c" 2
  2252.  
  2253. # 1 ".././include/encoding.h" 1
  2254.  
  2255.  
  2256.  
  2257.  
  2258.  
  2259.  
  2260.  
  2261.  
  2262.  
  2263.  
  2264.  
  2265.  
  2266.  
  2267.  
  2268.  
  2269.  
  2270.  
  2271.  
  2272.  
  2273.  
  2274.  
  2275.  
  2276.  
  2277.  
  2278.  
  2279.  
  2280.  
  2281.  
  2282. typedef struct
  2283. {
  2284.   string name;
  2285.   list_type ligature;
  2286. } encoding_char_type;
  2287.  
  2288.  
  2289.  
  2290.  
  2291.  
  2292. typedef struct
  2293. {
  2294.   string coding_scheme;
  2295.   encoding_char_type encoding_char[ 256 ];
  2296. } encoding_info_type;
  2297.  
  2298.  
  2299.  
  2300.  
  2301.  
  2302.  
  2303.  
  2304.  
  2305.  
  2306.  
  2307.  
  2308.  
  2309.  
  2310.  
  2311.  
  2312.  
  2313.  
  2314.  
  2315.  
  2316.  
  2317.  
  2318.  
  2319.  
  2320. extern int encoding_number (encoding_info_type e_i, string name);
  2321.  
  2322.  
  2323.  
  2324.  
  2325.  
  2326.  
  2327.  
  2328. extern string coding_scheme_to_filename (string codingscheme);
  2329.  
  2330.  
  2331.  
  2332.  
  2333.  
  2334. extern encoding_info_type read_encoding_file (string filename);
  2335.  
  2336.  
  2337. # 22 "metafont.c" 2
  2338.  
  2339. # 1 ".././include/filename.h" 1
  2340.  
  2341.  
  2342.  
  2343.  
  2344.  
  2345.  
  2346.  
  2347.  
  2348.  
  2349.  
  2350.  
  2351.  
  2352.  
  2353.  
  2354.  
  2355.  
  2356.  
  2357.  
  2358.  
  2359.  
  2360.  
  2361.  
  2362.  
  2363.  
  2364.  
  2365.  
  2366.  
  2367.  
  2368. extern string find_pk_filename (string font_name, unsigned dpi);
  2369.  
  2370.  
  2371.  
  2372.  
  2373. extern string find_gf_filename (string font_name, unsigned dpi);
  2374.  
  2375.  
  2376.  
  2377.  
  2378. extern string find_tfm_filename (string font_name);
  2379.  
  2380.  
  2381. # 23 "metafont.c" 2
  2382.  
  2383.  
  2384.  
  2385.  
  2386. # 1 ".././include/vector.h" 1
  2387.  
  2388.  
  2389.  
  2390.  
  2391.  
  2392.  
  2393.  
  2394.  
  2395.  
  2396.  
  2397.  
  2398.  
  2399.  
  2400.  
  2401.  
  2402.  
  2403.  
  2404.  
  2405.  
  2406.  
  2407.  
  2408.  
  2409.  
  2410.  
  2411.  
  2412.  
  2413. typedef struct
  2414. {
  2415.   real dx, dy;
  2416. } vector_type;
  2417.  
  2418.  
  2419.  
  2420. extern const vector_type make_vector (const real_coordinate_type);
  2421.  
  2422.  
  2423. extern const real_coordinate_type vector_to_point (const vector_type);
  2424.  
  2425.  
  2426.  
  2427.  
  2428.  
  2429. extern const real magnitude (const vector_type);
  2430. extern const vector_type normalize (const vector_type);
  2431.  
  2432. extern const vector_type Vadd (const vector_type, const vector_type);
  2433. extern const real Vdot (const vector_type, const vector_type);
  2434. extern const vector_type Vmult_scalar (const vector_type, const real);
  2435. extern const real Vangle (const vector_type in, const vector_type out);
  2436.  
  2437.  
  2438.  
  2439.  
  2440. extern const real_coordinate_type Vadd_point
  2441.   (const real_coordinate_type, const vector_type);
  2442.  
  2443.  
  2444. extern const real_coordinate_type Vsubtract_point
  2445.   (const real_coordinate_type, const vector_type);
  2446.  
  2447.  
  2448.  
  2449. extern const coordinate_type Vadd_int_point
  2450.   (const coordinate_type, const vector_type);
  2451.  
  2452.  
  2453. extern const vector_type Vabs (const vector_type);
  2454.  
  2455.  
  2456.  
  2457.  
  2458.  
  2459.  
  2460. extern const vector_type Psubtract
  2461.   (const real_coordinate_type, const real_coordinate_type);
  2462.  
  2463.  
  2464.  
  2465.  
  2466.  
  2467.  
  2468.  
  2469.  
  2470.  
  2471.  
  2472.  
  2473.  
  2474.  
  2475.  
  2476.  
  2477.  
  2478. extern const vector_type IPsubtract
  2479.   (const coordinate_type, const coordinate_type);
  2480. extern const coordinate_type IPsubtractP
  2481.   (const coordinate_type, const coordinate_type);
  2482. extern const coordinate_type IPadd
  2483.   (const coordinate_type, const coordinate_type);
  2484. extern const coordinate_type IPmult_scalar (const coordinate_type, const int);
  2485. extern const real_coordinate_type IPmult_real
  2486.   (const coordinate_type, const real);
  2487. extern const boolean IPequal (const coordinate_type, const coordinate_type);
  2488.  
  2489.  
  2490. # 27 "metafont.c" 2
  2491.  
  2492.  
  2493. # 1 "char.h" 1
  2494.  
  2495.  
  2496.  
  2497.  
  2498.  
  2499.  
  2500.  
  2501.  
  2502.  
  2503.  
  2504.  
  2505.  
  2506.  
  2507.  
  2508.  
  2509.  
  2510.  
  2511.  
  2512.  
  2513.  
  2514.  
  2515.  
  2516. # 1 "input-ccc.h" 1
  2517.  
  2518.  
  2519.  
  2520.  
  2521.  
  2522.  
  2523.  
  2524.  
  2525.  
  2526.  
  2527.  
  2528.  
  2529.  
  2530.  
  2531.  
  2532.  
  2533.  
  2534.  
  2535.  
  2536.  
  2537.  
  2538.  
  2539.  
  2540.  
  2541.  
  2542.  
  2543.  
  2544. typedef struct
  2545. {
  2546.   real amount;
  2547.   boolean absolute;
  2548.   boolean valid;
  2549. } dimen_type;
  2550.  
  2551.  
  2552.  
  2553.  
  2554.  
  2555.  
  2556.  
  2557.  
  2558.  
  2559.  
  2560.  
  2561. typedef struct
  2562. {
  2563.   int opcode;
  2564.   boolean valid;
  2565.   union
  2566.   {
  2567.     charcode_type charcode;
  2568.     dimen_type dimen;
  2569.   } u;
  2570. } ccc_cmd_type;
  2571.  
  2572.  
  2573.  
  2574.  
  2575.  
  2576.  
  2577.  
  2578.  
  2579.  
  2580. typedef list_type ccc_cmd_list_type;
  2581.  
  2582.  
  2583. typedef ccc_cmd_list_type ccc_type;
  2584.  
  2585.  
  2586.  
  2587.  
  2588.  
  2589. typedef struct
  2590. {
  2591.   charcode_type code;
  2592.   string name;
  2593. } charname_type;
  2594.  
  2595.  
  2596.  
  2597.  
  2598. typedef struct
  2599. {
  2600.   int cap_height;
  2601.   int design_size;
  2602.   int em;
  2603.   int font_depth;
  2604.   int xheight;
  2605. } ccc_fontinfo_type;
  2606.  
  2607.  
  2608.  
  2609. extern struct _iobuf  *ccc_file;
  2610. extern string ccc_filename;
  2611. extern bzr_char_type **chars;
  2612. extern ccc_fontinfo_type ccc_fontinfo;
  2613. extern ccc_type *ccc_chars[];
  2614.  
  2615.  
  2616.  
  2617.  
  2618.  
  2619.  
  2620. extern ccc_type **parse_ccc_file
  2621.   (string name, bzr_char_type **chars, tfm_global_info_type *t,
  2622.    real design_size, boolean warn_p);
  2623.  
  2624.  
  2625. # 23 "char.h" 2
  2626.  
  2627.  
  2628. typedef enum { bzr_char_class, ccc_char_class } char_class_type;
  2629.  
  2630. typedef struct
  2631. {
  2632.   char_class_type tag;
  2633.   union
  2634.   {
  2635.     bzr_char_type *bzr_char;
  2636.     ccc_type *ccc_char;
  2637.   } u;
  2638. } char_type;
  2639.  
  2640.  
  2641.  
  2642.  
  2643.  
  2644.  
  2645.  
  2646. extern real oblique_angle;
  2647.  
  2648.  
  2649. extern spline_list_array_type oblique_splines (spline_list_array_type);
  2650.  
  2651.  
  2652.  
  2653.  
  2654. extern char_type **subr_chars (bzr_char_type *[], ccc_type *ccc_chars[],
  2655.                                charcode_type start, charcode_type end,
  2656.                                unsigned *subr_count);
  2657.  
  2658.  
  2659. extern void scale_char (bzr_char_type *, real scale_factor);
  2660.  
  2661.  
  2662. # 29 "metafont.c" 2
  2663.  
  2664.  
  2665. # 1 "main.h" 1
  2666.  
  2667.  
  2668.  
  2669.  
  2670.  
  2671.  
  2672.  
  2673.  
  2674.  
  2675.  
  2676.  
  2677.  
  2678.  
  2679.  
  2680.  
  2681.  
  2682.  
  2683.  
  2684.  
  2685.  
  2686.  
  2687.  
  2688.  
  2689.  
  2690.  
  2691. extern encoding_info_type encoding_info;
  2692.  
  2693.  
  2694. extern charcode_type starting_char;
  2695. extern charcode_type ending_char;
  2696.  
  2697.  
  2698.  
  2699. extern tfm_global_info_type *tfm_global_info;
  2700.  
  2701.  
  2702. # 31 "metafont.c" 2
  2703.  
  2704. # 1 "metafont.h" 1
  2705.  
  2706.  
  2707.  
  2708.  
  2709.  
  2710.  
  2711.  
  2712.  
  2713.  
  2714.  
  2715.  
  2716.  
  2717.  
  2718.  
  2719.  
  2720.  
  2721.  
  2722.  
  2723.  
  2724.  
  2725.  
  2726.  
  2727.  
  2728.  
  2729.  
  2730.  
  2731.  
  2732.  
  2733. extern void metafont_start_output (string output_name, bzr_preamble_type, 
  2734.                    tfm_global_info_type *);
  2735.  
  2736.  
  2737. extern void metafont_output_bzr_subr (bzr_char_type);
  2738. extern void metafont_output_ccc_subr (ccc_type, charcode_type, char_type *[]);
  2739.  
  2740.  
  2741. extern void metafont_output_bzr_char (bzr_char_type, char_type *[]);
  2742. extern void metafont_output_ccc_char (ccc_type, charcode_type, char_type *[]);
  2743.  
  2744.  
  2745. extern void metafont_finish_output (list_type, char_type **);
  2746.  
  2747.  
  2748. # 32 "metafont.c" 2
  2749.  
  2750.  
  2751. # 1 "ccc.h" 1
  2752. typedef union
  2753. {
  2754.   int int_val;
  2755.   real real_val;
  2756.   dimen_type dimen_val;
  2757.   charname_type charname_val;
  2758.   ccc_cmd_type cmd_val;
  2759.   ccc_cmd_list_type *cmd_list_val;
  2760. } YYSTYPE;
  2761.  
  2762.  
  2763.  
  2764.  
  2765.  
  2766.  
  2767.  
  2768.  
  2769.  
  2770.  
  2771.  
  2772.  
  2773.  
  2774.  
  2775.  
  2776.  
  2777.  
  2778.  
  2779.  
  2780.  
  2781.  
  2782. extern YYSTYPE yylval;
  2783. # 34 "metafont.c" 2
  2784.  
  2785.  
  2786.  
  2787.  
  2788. static struct _iobuf  *mf_file;
  2789. static string mf_filename;
  2790.  
  2791.  
  2792.  
  2793.  
  2794.  
  2795.  
  2796.  
  2797.  
  2798.  
  2799.  
  2800.  
  2801.  
  2802.  
  2803.  
  2804.  
  2805.  
  2806.  
  2807.  
  2808.  
  2809.  
  2810.  
  2811.  
  2812.  
  2813.  
  2814.  
  2815. static string charcode_to_subr_name (charcode_type);
  2816. static void out_bb_char (real_bounding_box_type *,
  2817.                          real_coordinate_type *, bzr_char_type);
  2818. static void out_move (real_coordinate_type *, real, real, boolean);
  2819. static void output_bzr_body (bzr_char_type);
  2820. static real_bounding_box_type output_ccc_body (ccc_type, char_type *[]);
  2821. static void output_char_title (charcode_type);
  2822. static void output_ligtable (list_type, char_type **);
  2823. static void output_subr_start (charcode_type code);
  2824. static tfm_char_type **read_tfm_files (list_type);
  2825. static void read_tfm_file (tfm_char_type *[], string);
  2826.  
  2827.  
  2828.  
  2829.  
  2830. void
  2831. metafont_start_output (string output_name, bzr_preamble_type pre, 
  2832.                tfm_global_info_type *info)
  2833. {
  2834.   unsigned this_param;
  2835.   string current_time = now ();
  2836.  
  2837.   mf_filename = extend_filename (output_name, "mf");
  2838.   mf_file = xfopen (mf_filename, "w");
  2839.  
  2840.    
  2841.         fprintf (mf_file, "%% This file defines the Metafont font %s.\n",  mf_filename) ;
  2842.         fprintf (mf_file, "%% {%s}\n",  ((pre).comment) ) ;
  2843.         fprintf (mf_file, "%% Generated %s.\n",  current_time) ;
  2844.              fprintf (mf_file, "%s\n",  "% This font is in the public domain.")  ;
  2845.   
  2846.    
  2847.  
  2848.         fprintf (mf_file, "true_design_size# := %.3fpt#;\n",  ((pre).design_size) ) ;
  2849.   
  2850.    
  2851.         fprintf (mf_file, "%s;\n",  "input bzrsetup")  ;
  2852.  
  2853.    
  2854.         fprintf (mf_file, "font_coding_scheme := \"%s\";\n", 
  2855.         ((encoding_info).coding_scheme) ) ;
  2856.         fprintf (mf_file, "font_identifier := \"%s\";\n",  output_name) ;
  2857.  
  2858.   if (info)
  2859.     for (this_param = 1; this_param <= ((*info).parameter_count) ;
  2860.          this_param++)
  2861.       if (((*info).parameters[( this_param) - 1])  != 0.0)
  2862.           fprintf (mf_file, "fontdimen %u: %.3fpt# * u#;\n",  this_param, 
  2863.               ((*info).parameters[( this_param) - 1]) ) ; 
  2864. }
  2865.  
  2866.  
  2867.  
  2868.  
  2869.  
  2870. static void
  2871. output_char_title (charcode_type code)
  2872. {
  2873.   string title = (((encoding_info).encoding_char[  code]) .name) ;
  2874.   
  2875.   if (title == 0 )
  2876.     title = concat ("character #", utoa (code));
  2877.     
  2878.         fprintf (mf_file, "  "  "\"%s\";\n",  title) ;
  2879. }
  2880.  
  2881.  
  2882.  
  2883.  
  2884.  
  2885.  
  2886.  
  2887.  
  2888. void
  2889. metafont_output_bzr_subr (bzr_char_type c)
  2890. {
  2891.   output_subr_start (((c).code) );
  2892.   output_bzr_body (c);
  2893.         fprintf (mf_file, "%s;\n",  "enddef")  ;
  2894. }
  2895.  
  2896.  
  2897. void
  2898. metafont_output_ccc_subr (ccc_type c, charcode_type code, char_type *subrs[])
  2899. {
  2900.   output_subr_start (code);
  2901.   output_ccc_body (c, subrs);
  2902.         fprintf (mf_file, "%s;\n",  "enddef")  ;
  2903. }
  2904.  
  2905.  
  2906.  
  2907.  
  2908.  
  2909.  
  2910. static void
  2911. output_subr_start (charcode_type code)
  2912. {
  2913.         fprintf (mf_file, "def %s = \n",  charcode_to_subr_name (code)) ;
  2914.   output_char_title (code);
  2915. }
  2916.  
  2917.  
  2918.  
  2919.  
  2920.  
  2921.  
  2922.  
  2923.  
  2924.  
  2925.  
  2926.  
  2927.  
  2928.  
  2929. static string
  2930. charcode_to_subr_name (charcode_type code)
  2931. {
  2932.   string subr_name;
  2933.   string name = (((encoding_info).encoding_char[  code]) .name) ;
  2934.  
  2935.   if (strspn (name, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")
  2936.       != strlen (name))
  2937.     {
  2938.       unsigned high = code >> 4;
  2939.       unsigned low = code - (high << 4);
  2940.       char alpha[3] = { high + 'a', low + 'a', 0 };
  2941.  
  2942.       subr_name = concat ("bzr_subr_" , alpha);
  2943.     }
  2944.   else
  2945.     subr_name = concat ("bzr_subr_" , name);
  2946.   
  2947.   return subr_name;
  2948. }
  2949.  
  2950.  
  2951.  
  2952.  
  2953.  
  2954.  
  2955.  
  2956. void
  2957. metafont_output_bzr_char (bzr_char_type c, char_type *subrs[])
  2958. {
  2959.   unsigned code = ((c).code) ;
  2960.   
  2961.   fprintf (mf_file, "\nbeginchar (%d, %.3fu#, %.3fu#, %.3fu#);\n",  
  2962.         code,  ((c).set_width) ,  ((((c).bb) ).max_row)  ,  (((((c).bb) ).min_row)   < 0 ? -((((c).bb) ).min_row)   : 0) ) ;
  2963.   
  2964.   if (subrs[code])
  2965.           fprintf (mf_file, "  "  "%s;\n",  charcode_to_subr_name (code))  ;
  2966.   else
  2967.     {
  2968.       output_char_title (code);
  2969.       output_bzr_body (c);
  2970.     }
  2971.   
  2972.         fprintf (mf_file, "%s;\n",  "endchar")  ;
  2973. }
  2974.  
  2975.  
  2976. void
  2977. metafont_output_ccc_char (ccc_type c, charcode_type code, char_type *subrs[])
  2978. {
  2979.   real_bounding_box_type bb;
  2980.   
  2981.   if (subrs[code])
  2982.     do { fputs ("warning: ", (&_iob[2]) ) ; fprintf ((&_iob[2]) , "%s", "Sorry, CCC characters can't be subroutines yet"); fputs (".\n", (&_iob[2]) ); fflush ((&_iob[2]) ); } while (0)  ;
  2983.   else
  2984.     {
  2985.             fprintf (mf_file, "\nbegin_no_dimen_char (%d);\n",  code) ;
  2986.  
  2987.       output_char_title (code);
  2988.       bb = output_ccc_body (c, subrs);
  2989.  
  2990.        
  2991.         fprintf (mf_file, "  "  "set_char_dimens (%.3fu#, %.3fu#, %.3fu#);\n", 
  2992.             (((bb).max_col)  - ((bb).min_col) ) ,  ((bb).max_row) ,  -((bb).min_row) ) ;
  2993.             fprintf (mf_file, "%s;\n",  "end_no_dimen_char")  ;
  2994.     }
  2995. }
  2996.  
  2997.  
  2998.  
  2999. static void
  3000. output_bzr_body (bzr_char_type c)
  3001. {
  3002.   unsigned this_list;
  3003.   charcode_type code = ((c).code) ;
  3004.   spline_list_array_type shape = ((c).shape) ;
  3005.   boolean was_output = false;
  3006.  
  3007.    
  3008.  
  3009.  
  3010.  
  3011.   for (this_list = 0; this_list < ((shape).length) ;
  3012.        this_list++)
  3013.     {
  3014.       unsigned this_spline;
  3015.       spline_list_type list = (((shape).data) [ this_list]) ;
  3016.  
  3017.       if (((list).length)  == 0)
  3018.         continue;
  3019.         
  3020.       was_output = true;
  3021.       
  3022.       do {      fprintf (mf_file, "  "  "z%u\\%u\\%us" " = ",   code,   this_list,   0) ;      fprintf (mf_file, "(%.3fu,%.3fu)",  
  3023.                        (((((list).data) [ 0]) ).v[0]) .x,                         (((((list).data) [ 0]) ).v[0]) .y)  ;             fprintf (mf_file, "%s",  ";\n")  ;    } while (0) ; 
  3024.  
  3025.       for (this_spline = 0; this_spline < ((list).length) ;
  3026.            this_spline++) 
  3027.         {
  3028.           spline_type s = (((list).data) [ this_spline]) ;
  3029.  
  3030.           if (((s).degree)  == CUBIC)
  3031.             {
  3032.               do {      fprintf (mf_file, "  "  "z%u\\%u\\%uc1" " = ",   code,   this_list,  
  3033.                    this_spline) ;      fprintf (mf_file, "(%.3fu,%.3fu)",       ((s).v[1]) .x,       ((s).v[1]) .y)  ;             fprintf (mf_file, "%s",  ";\n")  ;    } while (0) ; 
  3034.               do {      fprintf (mf_file, "  "  "z%u\\%u\\%uc2" " = ",   code,   this_list,  
  3035.                    this_spline) ;      fprintf (mf_file, "(%.3fu,%.3fu)",       ((s).v[2]) .x,       ((s).v[2]) .y)  ;             fprintf (mf_file, "%s",  ";\n")  ;    } while (0) ; 
  3036.             }
  3037.  
  3038.            
  3039.  
  3040.           if (this_spline < ((list).length)  - 1)
  3041.             do {      fprintf (mf_file, "  "  "z%u\\%u\\%u" " = ",   code,   this_list,  
  3042.                      this_spline) ;      fprintf (mf_file, "(%.3fu,%.3fu)",       ((s).v[3]) .x,       ((s).v[3]) .y)  ;             fprintf (mf_file, "%s",  ";\n")  ;    } while (0) ;
  3043.         }
  3044.     }
  3045.  
  3046.  
  3047.    
  3048.  
  3049.  
  3050.   for (this_list = 0; this_list < ((shape).length) ;
  3051.        this_list++)
  3052.     {
  3053.       unsigned this_spline;
  3054.       spline_list_type list = (((shape).data) [ this_list]) ;
  3055.  
  3056.       if (((list).length)  == 0)
  3057.         continue;
  3058.         
  3059.         fprintf (mf_file, "  "  "fill_or_unfill z%u\\%u\\%us\n",  code,  this_list,  0) ;
  3060.  
  3061.       for (this_spline = 0; this_spline < ((list).length) ;
  3062.            this_spline++)
  3063.         {
  3064.           spline_type s = (((list).data) [ this_spline]) ;
  3065.  
  3066.           if (((s).degree)  == LINEAR)
  3067.                      fprintf (mf_file, "%s",  "  "  "  "  "--")  ;
  3068.           else
  3069.             {
  3070.                        fprintf (mf_file, "%s",  "  "  "  "  "..controls ")  ;
  3071.                 fprintf (mf_file, "z%u\\%u\\%uc1 and ",  code,  this_list,  this_spline) ;
  3072.                 fprintf (mf_file, "z%u\\%u\\%uc2..",  code,  this_list,  this_spline) ;
  3073.             }
  3074.       
  3075.           if (this_spline < ((list).length)  - 1)
  3076.               fprintf (mf_file, "z%u\\%u\\%u\n",  code,  this_list,  this_spline) ;
  3077.         }
  3078.         
  3079.                fprintf (mf_file, "%s",  "cycle;\n")  ;
  3080.     }
  3081.   
  3082.    
  3083.  
  3084.  
  3085.  
  3086.  
  3087.      
  3088.   if (was_output)
  3089.                fprintf (mf_file, "%s\n",  "  "  "proof_labels (")  ;
  3090.   
  3091.   for (this_list = 0; this_list < ((shape).length) ;
  3092.        this_list++)
  3093.     {
  3094.       unsigned this_spline;
  3095.       spline_list_type list = (((shape).data) [ this_list]) ;
  3096.  
  3097.       for (this_spline = 0; this_spline < ((list).length) ;
  3098.            this_spline++)
  3099.           fprintf (mf_file, "  "  "  "  "%u\\%u\\%u,\n",  code,  this_list,  this_spline) ;
  3100.     }
  3101.  
  3102.   if (was_output)
  3103.              fprintf (mf_file, "%s",  ");\n")  ;
  3104. }
  3105.  
  3106.  
  3107.  
  3108.  
  3109.  
  3110.  
  3111.  
  3112.  
  3113. static real_bounding_box_type
  3114. output_ccc_body (ccc_type ccc_char, char_type *subrs[])
  3115. {
  3116.   unsigned this_cmd;
  3117.   real_coordinate_type current = (real_coordinate_type) { 0.0, 0.0 };
  3118.   real_bounding_box_type bb
  3119.     = (real_bounding_box_type) { 3.40282347e+38F , 1.17549435e-38F , 3.40282347e+38F , 1.17549435e-38F  };
  3120.  
  3121.   for (this_cmd = 0; this_cmd < ((ccc_char).size) ; this_cmd++)
  3122.     { 
  3123.       ccc_cmd_type cmd = *(ccc_cmd_type *) ((ccc_char).list) [ this_cmd] ;
  3124.       
  3125.       switch (((cmd).opcode) )
  3126.         {
  3127.         case 260 :
  3128.           {
  3129.             char_type subr = *subrs[((cmd).u.charcode) ];
  3130.  
  3131.             if (((subr).tag)  == bzr_char_class)
  3132.               {
  3133.                 bzr_char_type bzr_char = *((subr).u.bzr_char) ;
  3134.                 
  3135.                 update_real_bounding_box (&bb, current);
  3136.                 out_move (¤t, ((((bzr_char).bb) ).min_col)  , 0.0,  false) ;
  3137.  
  3138.                 out_bb_char (&bb, ¤t, bzr_char);
  3139.  
  3140.                 out_move (¤t, (((bzr_char).set_width)  - ((((bzr_char).bb) ).max_col)  ) , 0.0,  false) ;
  3141.                 update_real_bounding_box (&bb, current);
  3142.               }
  3143.             else
  3144.                
  3145.  
  3146.  
  3147.  
  3148.  
  3149.               do { fputs ("warning: ", (&_iob[2]) ) ; fprintf ((&_iob[2]) , "%s", "Sorry, I can't `setchar' a CCC char yet"); fputs (".\n", (&_iob[2]) ); fflush ((&_iob[2]) ); } while (0)  ;
  3150.           }
  3151.           break;
  3152.  
  3153.         case 261 :
  3154.           {
  3155.             char_type subr = *subrs[((cmd).u.charcode) ];
  3156.  
  3157.             if (((subr).tag)  == bzr_char_class)
  3158.               out_bb_char (&bb, ¤t, *((subr).u.bzr_char) );
  3159.             else
  3160.               do { fputs ("warning: ", (&_iob[2]) ) ; fprintf ((&_iob[2]) , "%s", "Sorry, I can't `setcharbb' a CCC char yet"); fputs (".\n", (&_iob[2]) ); fflush ((&_iob[2]) ); } while (0)  ;
  3161.           }
  3162.           break;
  3163.  
  3164.         case 262 :
  3165.           out_move (¤t, (((cmd).u.dimen).amount)  , 0.0,  (((cmd).u.dimen).absolute)  ) ;
  3166.           break;
  3167.  
  3168.         case 263 :
  3169.           out_move (¤t, 0.0, (((cmd).u.dimen).amount)  ,  (((cmd).u.dimen).absolute)  ) ;
  3170.           break;
  3171.  
  3172.         default:
  3173.           do { fputs ("fatal: ", (&_iob[2]) ) ; fprintf ((&_iob[2]) , "Bad command %d in CCC character",  ((cmd).opcode) ); fputs (".\n", (&_iob[2]) ); exit (1); } while (0)  ;
  3174.     }
  3175.     }
  3176.   
  3177.   return bb;
  3178. }
  3179.  
  3180.  
  3181.  
  3182.  
  3183.  
  3184. static void
  3185. out_move (real_coordinate_type *current, real h, real v, boolean absolute)
  3186. {
  3187.   string units = absolute ? "pt" : "u";
  3188.   
  3189.   fprintf (mf_file, "  "  "move (%.3f%s, %.3f%s);\n",  (real) h,  units,  (real) v,  units) ;
  3190.   current->x += h;
  3191.   current->y += v;
  3192. }
  3193.  
  3194.  
  3195.  
  3196.  
  3197.  
  3198.  
  3199.  
  3200.  
  3201.  
  3202.  
  3203.  
  3204. static void
  3205. out_bb_char (real_bounding_box_type *bb, real_coordinate_type *current,
  3206.              bzr_char_type bzr_char)
  3207. {
  3208.    
  3209.   update_real_bounding_box (bb, ((real_coordinate_type) { current->x, current->y + (((((bzr_char).bb) ).min_row)  ) }) );
  3210.  
  3211.    
  3212.         fprintf (mf_file, "  "  "%s;\n",  charcode_to_subr_name (((bzr_char).code) ))  ;
  3213.   
  3214.    
  3215.   out_move (current, (((((bzr_char).bb) ).max_col)  - ((((bzr_char).bb) ).min_col) ) , 0, false);
  3216.  
  3217.    
  3218.   update_real_bounding_box (bb, ((real_coordinate_type) { current->x, current->y + (((((bzr_char).bb) ).max_row)  ) }) );
  3219. }
  3220.  
  3221.  
  3222.  
  3223.  
  3224.  
  3225. void
  3226. metafont_finish_output (list_type bzr_names, char_type **chars)
  3227. {
  3228.   output_ligtable (bzr_names, chars);
  3229.   
  3230.              fprintf (mf_file, "%s\n",  "\nbye.")  ;
  3231.   xfclose (mf_file, mf_filename);
  3232. }
  3233.  
  3234.  
  3235.  
  3236.  
  3237.  
  3238.  
  3239.  
  3240.  
  3241.  
  3242.  
  3243.  
  3244.  
  3245.  
  3246.  
  3247.  
  3248.  
  3249.  
  3250.  
  3251.  
  3252.  
  3253. static void
  3254. output_ligtable (list_type bzr_names, char_type **chars)
  3255. {
  3256.   unsigned code;
  3257.   tfm_char_type **tfm_chars = read_tfm_files (bzr_names);
  3258.   
  3259.   for (code = starting_char; code <= ending_char; code++)
  3260.     {
  3261.       list_type kern_list, ligature_list;
  3262.       unsigned this_kern, this_lig;
  3263.       tfm_char_type *c;
  3264.       boolean output_something = false;
  3265.       
  3266.        
  3267.       if (!(tfm_chars[code] != 0 ) )
  3268.         continue;
  3269.  
  3270.       c = tfm_chars[code];
  3271.  
  3272.        
  3273.       kern_list = c->kern;
  3274.       for (this_kern = 0; this_kern < ((kern_list).size) ; this_kern++)
  3275.         {
  3276.           tfm_kern_type *kern = ((kern_list).list) [ this_kern] ;
  3277.  
  3278.           if ((tfm_chars[kern->character] != 0 ) )
  3279.             {
  3280.               if (output_something)               fprintf (mf_file, "%s\n",  ",")  ;    else    {    output_something = true;          fprintf (mf_file, "ligtable hex\"%x\":\n",  code) ;    } ;
  3281.                 fprintf (mf_file, "hex\"%x\" kern %.3fpt#",  kern->character,  kern->kern) ;
  3282.             }
  3283.         }
  3284.       
  3285.        
  3286.       ligature_list = c->ligature;
  3287.       for (this_lig = 0; this_lig < ((ligature_list).size) ; this_lig++)
  3288.         {
  3289.           tfm_ligature_type *lig = ((ligature_list).list) [ this_lig] ;
  3290.  
  3291.           if ((tfm_chars[lig->character] != 0 )  && (tfm_chars[lig->ligature] != 0 ) )
  3292.           {
  3293.           if (output_something)               fprintf (mf_file, "%s\n",  ",")  ;    else    {    output_something = true;          fprintf (mf_file, "ligtable hex\"%x\":\n",  code) ;    } ;
  3294.               fprintf (mf_file, "hex\"%x\" =: hex\"%x\"",  lig->character,  lig->ligature) ;
  3295.           }
  3296.         }
  3297.  
  3298.       if (output_something)
  3299.                    fprintf (mf_file, "%s\n",  ";")  ;
  3300.     }
  3301. }
  3302.  
  3303.  
  3304.  
  3305.  
  3306.  
  3307.  
  3308.  
  3309.  
  3310. static tfm_char_type **
  3311. read_tfm_files (list_type bzr_names)
  3312. {
  3313.   unsigned c, name;
  3314.   tfm_char_type **tfm_chars = ( tfm_char_type * *) xmalloc ((255  + 1) * sizeof ( tfm_char_type *)) ;
  3315.   
  3316.    
  3317.   for (c = 0; c <= 255 ; c++)
  3318.     tfm_chars[c] = 0 ;
  3319.  
  3320.    
  3321.   for (name = 0; name < ((bzr_names).size) ; name++)
  3322.     {
  3323.       string *bzr_name = ((bzr_names).list) [ name] ;
  3324.       
  3325.       read_tfm_file (tfm_chars, *bzr_name);
  3326.     }
  3327.  
  3328.   return tfm_chars;
  3329. }
  3330.  
  3331.  
  3332.  
  3333.  
  3334.  
  3335.  
  3336.  
  3337.  
  3338. static void
  3339. read_tfm_file (tfm_char_type *tfm_chars[], string bzr_name)
  3340. {
  3341.   string tfm_root = make_suffix (bzr_name, "tfm");
  3342.   string tfm_name = find_tfm_filename (tfm_root);
  3343.  
  3344.   if (tfm_name != 0  && tfm_open_input_file (tfm_name))
  3345.     {
  3346.       unsigned code;
  3347.       tfm_char_type *file_chars = tfm_get_chars ();
  3348.       
  3349.       for (code = 0; code <= 255 ; code++)
  3350.         {
  3351.           if (tfm_chars[code] == 0  && ((file_chars[code]).exists) )
  3352.             {
  3353.               tfm_chars[code] = ( tfm_char_type *) xmalloc ((1) * sizeof ( tfm_char_type))  ;
  3354.               *tfm_chars[code] = file_chars[code];
  3355.             }
  3356.         }
  3357.  
  3358.       free (file_chars);
  3359.       tfm_close_input_file ();
  3360.     }
  3361. }
  3362.  
  3363.     that uses <underscore><backspace><letter> to represent a bold
  3364.     <letter>
  3365.  
  3366. Ah yes.  I remember running into this when I looked at spiff before.  I
  3367. couldn't find any way to turn off this silly ``feature'', and I didn't
  3368. want to use spiff if it was going to mess up the output like that.  I
  3369. think that would be even harder to deal with than the unimportant diffs
  3370. that come out now!
  3371.  
  3372. At this point, I suppose the only solution would be to write some sed
  3373. command to strip out the garbage, as even if an improved spiff came out,
  3374. people might well have the old version.
  3375.  
  3376.     spiff -r5e-8 TeXtrip/trip.log trip.log
  3377.     warning -- to many tokens in file only first 50000 tokens will be used.
  3378.     parser got confused at end of file
  3379.     warning -- to many tokens in file only first 50000 tokens will be used.
  3380.     parser got confused at end of file
  3381.  
  3382. This doesn't look good -- it's not spiff'ing the entire file?
  3383.  
  3384. In any case, I think spiff could be useful for TeX, but I don't know
  3385. about Metafont.  There shouldn't be any numeric differences in the
  3386. Metafont output anyway.  At least I've never seen any.
  3387.  
  3388.  
  3389. Man pages: I picked up your man pages on Thursday.  They look vastly
  3390. improved.  Thanks much for doing this.  I changed the README trivially
  3391. (there's no site.h any more), incorporated the Makefile changes, and of
  3392. course, updated your man pages with the various changes I've made since
  3393. 5.851c -- one general change was I took out punctuation following all
  3394. the ``system default'' paths.  I thought they could be taken too easily
  3395. for an element of the path.
  3396.  
  3397. Incidentally, I mentioned math.utah.edu:pub/tex/bib in the man page for
  3398. BibTeX.  OK?
  3399.  
  3400. You can get my revised versions in ftp.cs.umb.edu:private/web2c.tar.Z.
  3401. It would be great if you could retrieve them so I can more easily
  3402. install any future updates you make ...
  3403.  
  3404.  
  3405. internal compiler error on the following file.  Only option is -g.
  3406.  
  3407. # 1 "display.c"
  3408.  
  3409.  
  3410.  
  3411.  
  3412.  
  3413.  
  3414.  
  3415.  
  3416.  
  3417.  
  3418.  
  3419.  
  3420.  
  3421.  
  3422.  
  3423.  
  3424.  
  3425.  
  3426. # 1 ".././include/config.h" 1
  3427.  
  3428.  
  3429.  
  3430.  
  3431.  
  3432.  
  3433.  
  3434.  
  3435.  
  3436.  
  3437.  
  3438.  
  3439.  
  3440.  
  3441.  
  3442.  
  3443.  
  3444.  
  3445.  
  3446.  
  3447.  
  3448.  
  3449.  
  3450. # 1 ".././include/c-auto.h" 1
  3451.  
  3452.  
  3453.  
  3454.  
  3455.  
  3456.  
  3457.  
  3458.  
  3459.  
  3460.  
  3461.  
  3462.  
  3463.  
  3464.  
  3465.  
  3466.  
  3467.  
  3468.  
  3469.  
  3470.  
  3471.  
  3472.  
  3473.  
  3474.  
  3475.  
  3476.  
  3477.  
  3478.  
  3479.  
  3480.  
  3481.  
  3482.  
  3483.  
  3484.  
  3485.  
  3486.  
  3487.  
  3488.  
  3489.  
  3490.  
  3491.  
  3492.  
  3493.  
  3494.  
  3495. # 24 ".././include/config.h" 2
  3496.  
  3497.  
  3498.  
  3499.  
  3500.  
  3501.  
  3502.  
  3503. # 1 ".././include/c-std.h" 1
  3504.  
  3505.  
  3506.  
  3507.  
  3508.  
  3509.  
  3510.  
  3511.  
  3512.  
  3513.  
  3514.  
  3515.  
  3516.  
  3517.  
  3518.  
  3519.  
  3520.  
  3521.  
  3522.  
  3523.  
  3524.  
  3525.  
  3526.  
  3527.  
  3528. # 1 "/usr/include/math.h" 1 3
  3529.  
  3530.  
  3531.  
  3532.  
  3533.  
  3534.  
  3535.  
  3536.  
  3537.  
  3538.  
  3539.  
  3540.  
  3541.  
  3542.  
  3543. extern double asinh(), acosh(), atanh();
  3544. extern double erf(), erfc();
  3545. extern double fabs(), floor(), ceil(); 
  3546. extern double modf(), ldexp(), frexp(), atof();
  3547. extern double sqrt(), cbrt();
  3548. extern double sin(), cos(), tan(), asin(), acos(), atan(), atan2();
  3549. extern double expm1(), log1p(), exp(), log(), log10(), pow();
  3550. extern double sinh(), cosh(), tanh();
  3551. extern double hypot(), cabs(), lgamma();
  3552. extern double j0(), j1(), jn(), y0(), y1(), yn();
  3553.  
  3554.  
  3555.  
  3556.  
  3557.  
  3558.  
  3559. # 25 ".././include/c-std.h" 2
  3560.  
  3561. # 1 "/usr/local/gnu/lib/gcc-lib/romp-aos/2.3.3/include/stdio.h" 1 3
  3562.  
  3563. # 1 "/usr/local/gnu/lib/gcc-lib/romp-aos/2.3.3/include/stdarg.h" 1 3
  3564.  
  3565.  
  3566.  
  3567.  
  3568.  
  3569.  
  3570.  
  3571.  
  3572.  
  3573.  
  3574.  
  3575.  
  3576.  
  3577.  
  3578.  
  3579.  
  3580.  
  3581.  
  3582.  
  3583.  
  3584.  
  3585.  
  3586.  
  3587.  
  3588.  
  3589.  
  3590.  
  3591.  
  3592.  
  3593.  
  3594.  
  3595.  
  3596.  
  3597.  
  3598.  
  3599.  
  3600.  
  3601.  
  3602.  
  3603.  
  3604.  
  3605.  
  3606.  
  3607.  
  3608.  
  3609.  
  3610.  
  3611. typedef void *__gnuc_va_list;
  3612.  
  3613.  
  3614.  
  3615.  
  3616.  
  3617. # 85 "/usr/local/gnu/lib/gcc-lib/romp-aos/2.3.3/include/stdarg.h" 3
  3618.  
  3619.  
  3620.  
  3621.  
  3622.  
  3623.  
  3624.  
  3625.  
  3626.  
  3627.  
  3628. # 137 "/usr/local/gnu/lib/gcc-lib/romp-aos/2.3.3/include/stdarg.h" 3
  3629.  
  3630.  
  3631.  
  3632.  
  3633.  
  3634. # 2 "/usr/local/gnu/lib/gcc-lib/romp-aos/2.3.3/include/stdio.h" 2 3
  3635.  
  3636.  
  3637.  
  3638.  
  3639.  
  3640.  
  3641.  
  3642.  
  3643.  
  3644.  
  3645.  
  3646.  
  3647.  
  3648.  
  3649.  
  3650.  
  3651.  
  3652.  
  3653.  
  3654.  
  3655.  
  3656.  
  3657.  
  3658. extern    struct    _iobuf {
  3659.     int    _cnt;
  3660.     char    *_ptr;         
  3661.     char    *_base;         
  3662.     int    _bufsiz;
  3663.     short    _flag;
  3664.     char    _file;         
  3665. } _iob[];
  3666.  
  3667.  
  3668.  
  3669.  
  3670.  
  3671.  
  3672.  
  3673.  
  3674.  
  3675.  
  3676.         
  3677.  
  3678.  
  3679.  
  3680.  
  3681.  
  3682.  
  3683.  
  3684.  
  3685.  
  3686.  
  3687.  
  3688.  
  3689.  
  3690.  
  3691.  
  3692.  
  3693.  
  3694.  
  3695.  
  3696.  
  3697.  
  3698.  
  3699.  
  3700.  
  3701.  
  3702.  
  3703. struct _iobuf     *fopen();
  3704. struct _iobuf     *fdopen();
  3705. struct _iobuf     *freopen();
  3706. struct _iobuf     *popen();
  3707. long    ftell();
  3708. char    *fgets();
  3709. char    *gets();
  3710.  
  3711.  
  3712.  
  3713.  
  3714. # 26 ".././include/c-std.h" 2
  3715.  
  3716.  
  3717.  
  3718. # 1 "/usr/local/gnu/lib/gcc-lib/romp-aos/2.3.3/include/sys/types.h" 1 3
  3719.  
  3720.  
  3721.  
  3722.  
  3723.  
  3724.  
  3725.  
  3726.  
  3727.  
  3728.  
  3729.  
  3730.  
  3731.  
  3732.  
  3733.  
  3734.  
  3735.  
  3736.  
  3737.  
  3738.  
  3739.  
  3740.  
  3741.  
  3742.  
  3743.  
  3744.  
  3745.  
  3746.  
  3747.  
  3748.  
  3749.  
  3750.  
  3751.  
  3752.  
  3753.  
  3754.  
  3755. typedef    unsigned char    u_char;
  3756. typedef    unsigned short    u_short;
  3757. typedef
  3758.  
  3759.