home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume24 / psroff3.0 / patch1 < prev    next >
Text File  |  1991-10-09  |  29KB  |  1,040 lines

  1. Subject:  v24i115:  psroff, troff to PostScript filter, Patch1
  2. Newsgroups: comp.sources.unix
  3. Approved: rsalz@uunet.UU.NET
  4.  
  5. Submitted-by: Chris Lewis <clewis@ferret.ocunix.on.ca>
  6. Posting-number: Volume 24, Issue 115
  7. Archive-name: psroff3.0/patch1
  8.  
  9.     This is official patch 01 for Psroff 3.0.
  10.     Please apply it by:
  11.     cd <psroff source directory>
  12.     patch -N -p < <this file>
  13.  
  14. Fixes:
  15.     - My Post Office decided to go commercial only, so I had to
  16.       change my address to the new one.  Grrrrr.  Second change
  17.       in 6 months.
  18.     - Implemented -Gs (troff2ps.1.S, troff2.c, dit.c, DITROFF,
  19.       psrofflib.S) to handle groff sizescale stuff.
  20.     - Dumb mistake in declarations in psxlate.c (why didn't AIX 3.1
  21.       catch it?)
  22.     - Omitted array subscript in asc2ps.c
  23.     - Remark about eqn/"|" botch in TROUBLE and MISC.
  24.  
  25. Index: ./man/troff2ps.1.S
  26. *** /tmp/PATCHold/./man/troff2ps.1.S    Fri May 10 03:13:20 1991
  27. --- ./man/troff2ps.1.S    Fri May 10 03:13:23 1991
  28. ***************
  29. *** 1,4 ****
  30. ! .\"Copyright 1988 by Chris Lewis 2.11 91/03/26
  31.   .TH TROFF2PS %%MANEXT%% "Psroff %%T2VERSION%%"
  32.   .SH NAME
  33.   troff2ps, troff2lj, troff2xx \- convert troff output to Postscript, HP etc.
  34. --- 1,4 ----
  35. ! .\"Copyright 1988 by Chris Lewis 2.12 91/04/26
  36.   .TH TROFF2PS %%MANEXT%% "Psroff %%T2VERSION%%"
  37.   .SH NAME
  38.   troff2ps, troff2lj, troff2xx \- convert troff output to Postscript, HP etc.
  39. ***************
  40. *** 18,23 ****
  41. --- 18,24 ----
  42.   .B "[\-V]"
  43.   .B "[\-M]"
  44.   .B "[\-S]"
  45. + .BI "[\-G" ss "]"
  46.   .SH DESCRIPTION
  47.   .I Troff2ps
  48.   takes
  49. ***************
  50. *** 172,184 ****
  51.   .B \-Z
  52.   is specified.
  53.   .PP
  54. ! The optimizer is quite good, but it is known that columns of text separated
  55. ! by a leader made up of periods can fool it.
  56. ! At the present time, it is unknown whether it's a width table or
  57. ! printer or troff wierdness.
  58.   .PP
  59.   The \-S option indicates that Postscript jobs should be terminated
  60.   with the directive "stop" instead of a control-D.
  61.   .SH "SPECIAL REQUESTS"
  62.   .BI troff2 xx
  63.   supports a number of additional features over and above bare
  64. --- 173,186 ----
  65.   .B \-Z
  66.   is specified.
  67.   .PP
  68. ! The optimizer is quite good provided that the fonts scale uniformly.
  69.   .PP
  70.   The \-S option indicates that Postscript jobs should be terminated
  71.   with the directive "stop" instead of a control-D.
  72. + .PP
  73. + If you are using \f3groff\fP to drive troff2ps
  74. + use the \-Gss option to specify the sizescale value from the groff
  75. + DESC files.
  76.   .SH "SPECIAL REQUESTS"
  77.   .BI troff2 xx
  78.   supports a number of additional features over and above bare
  79. Index: ./lib/psrofflib.S
  80. *** /tmp/PATCHold/./lib/psrofflib.S    Fri May 10 03:13:37 1991
  81. --- ./lib/psrofflib.S    Fri May 10 03:13:39 1991
  82. ***************
  83. *** 1,4 ****
  84. ! #    2.17 91/04/05
  85.   #    This file controls psroff, you can insert additional printer
  86.   #    types here.  These are eval'd *late* in processing, so that
  87.   #    you can insert $copies etc.
  88. --- 1,4 ----
  89. ! #    2.18 91/04/25
  90.   #    This file controls psroff, you can insert additional printer
  91.   #    types here.  These are eval'd *late* in processing, so that
  92.   #    you can insert $copies etc.
  93. ***************
  94. *** 44,49 ****
  95. --- 44,52 ----
  96.   #                Some postscript printers differ in location.
  97.   #        -N        The troff is actually ditroff.  (You have to
  98.   #                have ditroff widths installed for this!)
  99. + #        -G<sizescale>    If you're driving with groff, and the sizescale
  100. + #                parameter is specified in the DESC file, you
  101. + #                have to supply the sizescale parameter here.
  102.   #        -Z        optimizer
  103.   #        -S        Use "stop" to terminate Postscript instead
  104.   #                of control-D
  105. Index: ./widths/dit2catwid.c
  106. *** /tmp/PATCHold/./widths/dit2catwid.c    Fri May 10 03:13:50 1991
  107. --- ./widths/dit2catwid.c    Fri May 10 03:13:51 1991
  108. ***************
  109. *** 10,16 ****
  110.   
  111.   #ifndef    lint
  112.   static char SCCSID[] =
  113. !     "@(#)dit2catwid.c 2.7 Copyright 91/02/20 09:33:05 Chris Lewis";
  114.   #endif
  115.   
  116.   #include <stdio.h>
  117. --- 10,16 ----
  118.   
  119.   #ifndef    lint
  120.   static char SCCSID[] =
  121. !     "@(#)dit2catwid.c 2.8 Copyright 91/04/25 17:29:41 Chris Lewis";
  122.   #endif
  123.   
  124.   #include <stdio.h>
  125. ***************
  126. *** 73,79 ****
  127.       FILE *in1, *in2, *out;
  128.       char *fin1, *fin2, *fout;
  129.   
  130. !     progname = argv[0];
  131.   
  132.       while ((c = getopt(argc, argv, "evsr:u:chH:")) != EOF)
  133.       switch(c) {
  134. --- 73,83 ----
  135.       FILE *in1, *in2, *out;
  136.       char *fin1, *fin2, *fout;
  137.   
  138. !     progname = strrchr(argv[0], '/');
  139. !     if (progname)
  140. !     progname++;
  141. !     else
  142. !     progname = argv[0];
  143.   
  144.       while ((c = getopt(argc, argv, "evsr:u:chH:")) != EOF)
  145.       switch(c) {
  146. ***************
  147. *** 393,403 ****
  148.       exit(1);
  149.       }
  150.       while(fgets(buffer, sizeof(buffer), f)) {
  151. !     char str[3];
  152.       if (commentsok && buffer[0] == '#')
  153.           continue;
  154.       if (strlen(buffer) > 1 && buffer[0] == '#' && !isspace(buffer[1]))
  155.           continue;
  156.       commentsok = 0;
  157.   #ifdef    DEBUG
  158.       printf("buffer: %s\n", buffer);
  159. --- 397,411 ----
  160.       exit(1);
  161.       }
  162.       while(fgets(buffer, sizeof(buffer), f)) {
  163. !     char str[31];
  164.       if (commentsok && buffer[0] == '#')
  165.           continue;
  166.       if (strlen(buffer) > 1 && buffer[0] == '#' && !isspace(buffer[1]))
  167.           continue;
  168. +     sv = strchr(buffer, '\n');
  169. +     if (sv) *sv = '\0';
  170. +     
  171.       commentsok = 0;
  172.   #ifdef    DEBUG
  173.       printf("buffer: %s\n", buffer);
  174. ***************
  175. *** 405,414 ****
  176.       tok = gettoken(buffer, NULL);
  177.       if (!tok)
  178.           continue;
  179. !     if (strlen(tok) > 2) {
  180. !         fprintf(stderr, "%s: %s bad format on line %s\n",
  181. !         progname, filename, buffer);
  182. !         exit(1);
  183.       }
  184.       strcpy(str, tok);
  185.       tok = gettoken(buffer, 1);
  186. --- 413,422 ----
  187.       tok = gettoken(buffer, NULL);
  188.       if (!tok)
  189.           continue;
  190. !     if (strlen(tok) > 30) {
  191. !         if (verbose)
  192. !         printf("%s: %s skipping entry %s\n",
  193. !             progname, filename, buffer);
  194.       }
  195.       strcpy(str, tok);
  196.       tok = gettoken(buffer, 1);
  197. ***************
  198. *** 426,434 ****
  199. --- 434,447 ----
  200.           widval = oldwidval;
  201.           eval = oldeval;
  202.       } else {
  203. +         /* atoi will truncate tok if it contains non-numeric characters.
  204. +            Which is just fine for groff's wid,a,b,c,... format */
  205.           widval = ((double) TROFFUWID * TROFFRESOLUTION * atoi(tok) /
  206.           (unitwid * res)) + .5;
  207.           widval = max(widval, 1);
  208. +         if (widval > 63)
  209. +         printf("%s: width value too big for %s (%d)\n",
  210. +             progname, str, widval);
  211.           tok = gettoken(buffer, 1);
  212.           if (!tok) {
  213.           fprintf(stderr, "%s: %s bad format on line %s\n",
  214. Index: ./widths/genext.S
  215. *** /tmp/PATCHold/./widths/genext.S    Fri May 10 03:14:04 1991
  216. --- ./widths/genext.S    Fri May 10 03:14:05 1991
  217. ***************
  218. *** 5,11 ****
  219.   #    See the LICENSE file for a full description of the restrictions
  220.   #    under which this software is provided.
  221.   #
  222. ! #    2.6 91/03/10 Generate extension list of characters for troff2ps.
  223.   if [ $# != 1 ]
  224.   then
  225.       echo "usage: genext <ditroff font width directory>" >&2
  226. --- 5,11 ----
  227.   #    See the LICENSE file for a full description of the restrictions
  228.   #    under which this software is provided.
  229.   #
  230. ! #    2.7 91/04/25 Generate extension list of characters for troff2ps.
  231.   if [ $# != 1 ]
  232.   then
  233.       echo "usage: genext <ditroff font width directory>" >&2
  234. ***************
  235. *** 47,80 ****
  236.       catcodes[ch] = 1
  237.       next
  238.       }
  239.   $1 ~ /^name/ {
  240.       curfont = $2
  241.       next
  242.       }
  243. ! /faked/    { next }
  244. ! NF >= 4 && $2 ~ /^[0-9]*$/ && $3 ~ /^[0-9]*$/    {
  245. !     if (catcodes[$1] || $1 == "\\|" || $1 == "\\^")
  246.           next
  247.       if (seen[$1]) {
  248. !         if (seen[$1] != $4)
  249.           printf "Duplicate %s, but different codes! (%s/%s)\n", \
  250. !             $1, seen[$1], $4 > "/tmp/errors"
  251.           next
  252.       }
  253. !     seen[$1] = $4
  254.       if (curfont == "S")
  255.           flag = "S"
  256. !     else if (curfont == "S2")
  257.           flag = 4
  258.       else
  259.           flag = "N"
  260.       code = $4
  261.       if (length(code) > 3)
  262.           code = substr(code, length(code) - 2, 3)
  263.       while(length(code) < 3) {
  264.           code = "0" code
  265.       }
  266. !     printf("%s    %s    \\%s\n", $1, flag, code)
  267.       }
  268.   
  269.   ' ../utils/ljtab.c $files
  270. --- 47,115 ----
  271.       catcodes[ch] = 1
  272.       next
  273.       }
  274.   $1 ~ /^name/ {
  275.       curfont = $2
  276.       next
  277.       }
  278. ! /charset/ {
  279. !     incharset = 1
  280. !     }
  281. ! NF == 2 && $2 == "\"" {
  282. !     if (catcodes[$1] || $1 == "\\|" || $1 == "\\^" || $1 == "---")
  283.           next
  284.       if (seen[$1]) {
  285. !         if (seen[$1] != code)
  286.           printf "Duplicate %s, but different codes! (%s/%s)\n", \
  287. !             $1, seen[$1], code > "/tmp/errors"
  288.           next
  289.       }
  290. !     seen[$1] = code
  291.       if (curfont == "S")
  292.           flag = "S"
  293. !     else if (curfont ~ /S[0-9]/)
  294.           flag = 4
  295.       else
  296.           flag = "N"
  297. +     printf("%s    %s    %s\n", $1, flag, code);
  298. +     }
  299. +     
  300. + /faked/    { next }
  301. + NF >= 4 && $2 ~ /^[0-9,]*$/ && $3 ~ /^[0-9]*$/    {
  302. +     if (!incharset)
  303. +         next
  304. +     if (catcodes[$1] || $1 == "\\|" || $1 == "\\^" || $1 == "---")
  305. +         next
  306.       code = $4
  307.       if (length(code) > 3)
  308.           code = substr(code, length(code) - 2, 3)
  309.       while(length(code) < 3) {
  310.           code = "0" code
  311.       }
  312. !     code = "\\" code
  313. !     if (seen[$1]) {
  314. !         if (seen[$1] != code)
  315. !         printf "Duplicate %s, but different codes! (%s/%s)\n", \
  316. !             $1, seen[$1], code > "/tmp/errors"
  317. !         next
  318. !     }
  319. !     seen[$1] = code
  320. !     if (curfont == "S")
  321. !         flag = "S"
  322. !     else if (curfont ~ /S[0-9]/)
  323. !         flag = 4
  324. !     else
  325. !         flag = "N"
  326. !     printf("%s    %s    %s\n", $1, flag, code)
  327.       }
  328.   
  329.   ' ../utils/ljtab.c $files
  330. Index: ./widths/gfnttab.S
  331. *** /tmp/PATCHold/./widths/gfnttab.S    Fri May 10 03:14:14 1991
  332. --- ./widths/gfnttab.S    Fri May 10 03:14:16 1991
  333. ***************
  334. *** 5,11 ****
  335.   #    See the LICENSE file for a full description of the restrictions
  336.   #    under which this software is provided.
  337.   #
  338. ! #@(#)gfnttab.sh 2.7 91/04/02
  339.   #    Set this to something non-null in the Makefile if you need
  340.   #    a.out.h/COFF headers on your width files, and the COFF/HEADERSIZE
  341.   #    defines cause dit2catwid to generate width tables that
  342. --- 5,11 ----
  343.   #    See the LICENSE file for a full description of the restrictions
  344.   #    under which this software is provided.
  345.   #
  346. ! #@(#)gfnttab.sh 2.8 91/04/25
  347.   #    Set this to something non-null in the Makefile if you need
  348.   #    a.out.h/COFF headers on your width files, and the COFF/HEADERSIZE
  349.   #    defines cause dit2catwid to generate width tables that
  350. ***************
  351. *** 45,52 ****
  352.   rm -f /tmp/S
  353.   if [ ! -r R ]
  354.   then
  355. !     echo "Creating Dummy R font width table"
  356. !     touch R
  357.   fi
  358.   if [ -r S ]
  359.   then
  360. --- 45,59 ----
  361.   rm -f /tmp/S
  362.   if [ ! -r R ]
  363.   then
  364. !     if [ -r TR ]
  365. !     then
  366. !     R=TR
  367. !     else
  368. !     echo "Creating Dummy R font width table"
  369. !     touch R
  370. !     fi
  371. ! else
  372. !     R=R
  373.   fi
  374.   if [ -r S ]
  375.   then
  376. ***************
  377. *** 72,77 ****
  378. --- 79,91 ----
  379.       echo "WARNING: no 'res' command in DESC - assuming 300"
  380.       res="-r 300"
  381.       else
  382. +     ss=`sed -n \
  383. +         -e 's/^[     ]*sizescale[     ][     ]*\([0-9][0-9]*\).*/\1/p' $DESC`
  384. +     if [ -n "$ss" ]
  385. +     then
  386. +         echo "INFO: Found sizescale of $ss (probably groff)"
  387. +         res=`expr $res / $ss`
  388. +     fi
  389.       res="-r $res"
  390.       fi
  391.       unit=`sed -n -e 's/^[     ]*unitwidth[     ][     ]*\([0-9][0-9]*\).*/\1/p' $DESC`
  392. ***************
  393. *** 105,114 ****
  394.       esac
  395.       case $i in
  396.       S)
  397. !         args="-s R /tmp/S"
  398.           ;;
  399.       SU)
  400. !         args="-s R $i"
  401.           ;;
  402.       S[0-9] | SI | ST )
  403.           continue
  404. --- 119,128 ----
  405.       esac
  406.       case $i in
  407.       S)
  408. !         args="-s $R /tmp/S"
  409.           ;;
  410.       SU)
  411. !         args="-s $R $i"
  412.           ;;
  413.       S[0-9] | SI | ST )
  414.           continue
  415. Index: ./utils/psxlate.c
  416. *** /tmp/PATCHold/./utils/psxlate.c    Fri May 10 03:14:27 1991
  417. --- ./utils/psxlate.c    Fri May 10 03:14:30 1991
  418. ***************
  419. *** 23,29 ****
  420.    */
  421.   #ifndef    lint
  422.   static char SCCSid[] =
  423. !     "@(#)psxlate.c: 2.11 Copyright 91/03/26 00:13:16 Chris Lewis";
  424.   #endif
  425.   
  426.   #ifdef    ALONE
  427. --- 23,29 ----
  428.    */
  429.   #ifndef    lint
  430.   static char SCCSid[] =
  431. !     "@(#)psxlate.c: 2.13 Copyright 91/04/24 22:07:02 Chris Lewis";
  432.   #endif
  433.   
  434.   #ifdef    ALONE
  435. ***************
  436. *** 33,41 ****
  437.   #include "defs.h"
  438.   #endif
  439.   
  440. ! int    xlate = 0;
  441. ! extern int    italic = 0;
  442. ! int    needd = 0;
  443.   #define    BUFFERSIZE    512
  444.   
  445.   int    half = 0;    /*    Controls emitter, 0: whole file, 1: first half,
  446. --- 33,41 ----
  447.   #include "defs.h"
  448.   #endif
  449.   
  450. ! int    xlate;
  451. ! int    italic;
  452. ! int    needd;
  453.   #define    BUFFERSIZE    512
  454.   
  455.   int    half = 0;    /*    Controls emitter, 0: whole file, 1: first half,
  456. ***************
  457. *** 220,225 ****
  458. --- 220,226 ----
  459.       long offset;
  460.       int state = PROLOG;
  461.       int seen;
  462. +     int nest = 0;
  463.   
  464.       magicstr = malloc(strlen(buffer) + 1);
  465.       strcpy(magicstr, buffer);
  466. ***************
  467. *** 232,244 ****
  468.   
  469.       if (!buffer)
  470.           seen = S_EOF;
  471. !     else if (buffer[0] == '%') {
  472. !         if (strncmp(buffer, "%%Page:", 7) == 0)
  473.           seen = S_PAGE;
  474. !         else if (strncmp(buffer, "%%Trailer", 9) == 0)
  475.           seen = S_EPI;
  476. !         else
  477.           seen = S_NONE;
  478.       } else
  479.           seen = S_NONE;
  480.       switch(seen) {
  481. --- 233,254 ----
  482.   
  483.       if (!buffer)
  484.           seen = S_EOF;
  485. !     else if (buffer[0] == '%' && buffer[1] == '%') {
  486. !         if (!nest && strncmp(buffer, "%%Page:", 7) == 0)
  487.           seen = S_PAGE;
  488. !         else if (!nest && isspace(buffer[9]) &&
  489. !         strncmp(buffer, "%%Trailer", 9) == 0)
  490.           seen = S_EPI;
  491. !         else {
  492. !         if (strncmp(buffer, "%%BeginDocument:", 16) == 0)
  493. !             nest++;
  494. !         else if (isspace(buffer[13]) &&
  495. !             strncmp(buffer, "%%EndDocument", 13) == 0)
  496. !             nest--;
  497.           seen = S_NONE;
  498. +         }
  499.       } else
  500.           seen = S_NONE;
  501.       switch(seen) {
  502. ***************
  503. *** 295,300 ****
  504. --- 305,314 ----
  505.           break;
  506.       }
  507.       }
  508. +     if (nest) {
  509. +     fprintf(stderr, "%s: misnested BeginDocument/EndDocument\n",
  510. +         progname);
  511. +     }
  512.   }
  513.   
  514.   cleanup() {
  515. ***************
  516. *** 501,507 ****
  517.       thru *count;
  518.    */
  519.   #define    CHUNK    512
  520. ! char *mygets(in, out, count)
  521.   FILE *in, *out; long *count; {
  522.       static char *buffer = NULL;
  523.       static long buflimit;
  524. --- 515,522 ----
  525.       thru *count;
  526.    */
  527.   #define    CHUNK    512
  528. ! char *
  529. ! mygets(in, out, count)
  530.   FILE *in, *out; long *count; {
  531.       static char *buffer = NULL;
  532.       static long buflimit;
  533. Index: ./utils/asc2ps.c
  534. *** /tmp/PATCHold/./utils/asc2ps.c    Fri May 10 03:14:43 1991
  535. --- ./utils/asc2ps.c    Fri May 10 03:14:45 1991
  536. ***************
  537. *** 14,20 ****
  538.   
  539.   #ifndef    lint
  540.   static char SCCSid[] =
  541. !     "@(#)asc2ps.c: 2.3 Copyright 91/03/26 20:46:04 Chris Lewis";
  542.   #endif
  543.   
  544.   #include "defs.h"
  545. --- 14,20 ----
  546.   
  547.   #ifndef    lint
  548.   static char SCCSid[] =
  549. !     "@(#)asc2ps.c: 2.4 Copyright 91/04/10 19:48:00 Chris Lewis";
  550.   #endif
  551.   
  552.   #include "defs.h"
  553. ***************
  554. *** 369,375 ****
  555.           if    (outbufs[NORMAL][linepos] == *buffer) {
  556.               outbufs[BOLD][linepos] = *buffer;
  557.               maxpos[BOLD] = max(maxpos[BOLD], linepos+1);
  558. !         } else if (*buffer == '_' && outbufs[NORMAL] != ' ' ||
  559.               outbufs[NORMAL][linepos] == '_') {
  560.   
  561.               if (*buffer != '_')
  562. --- 369,376 ----
  563.           if    (outbufs[NORMAL][linepos] == *buffer) {
  564.               outbufs[BOLD][linepos] = *buffer;
  565.               maxpos[BOLD] = max(maxpos[BOLD], linepos+1);
  566. !         } else if (*buffer == '_' &&
  567. !             outbufs[NORMAL][linepos] != ' ' ||
  568.               outbufs[NORMAL][linepos] == '_') {
  569.   
  570.               if (*buffer != '_')
  571. Index: ./tests/testtab.m
  572. *** /tmp/PATCHold/./tests/testtab.m    Fri May 10 03:14:56 1991
  573. --- ./tests/testtab.m    Fri May 10 03:14:57 1991
  574. ***************
  575. *** 1,4 ****
  576. ! .\" 2.3 91/03/25
  577.   .po .25i
  578.   .in 0
  579.   .fp 1 R
  580. --- 1,4 ----
  581. ! .\" 2.5 91/05/03
  582.   .po .25i
  583.   .in 0
  584.   .fp 1 R
  585. ***************
  586. *** 9,19 ****
  587.   .vs 14
  588.   .sp |.3i
  589.   .ce 4
  590. ! PSROFF TEST SHEET (2.3)
  591.   .br
  592. ! Please fill out and mail to: BOX 13215
  593.   .br
  594. ! Kanata PO, Kanata, Ontario, Canada K2K 1X4
  595.   .br
  596.   \*(2d \*(2v \*(pt
  597.   .ps 10
  598. --- 9,19 ----
  599.   .vs 14
  600.   .sp |.3i
  601.   .ce 4
  602. ! PSROFF TEST SHEET (2.5)
  603.   .br
  604. ! Please fill out and mail to: Chris Lewis
  605.   .br
  606. ! P.O. Box 124, Dunrobin, Ontario, Canada K0A 1T0
  607.   .br
  608.   \*(2d \*(2v \*(pt
  609.   .ps 10
  610. Index: ./dit.c
  611. *** /tmp/PATCHold/./dit.c    Fri May 10 03:15:11 1991
  612. --- ./dit.c    Fri May 10 03:15:13 1991
  613. ***************
  614. *** 12,18 ****
  615.   
  616.   #ifndef    lint
  617.   static char SCCSid[] =
  618. !     "@(#)dit.c: 91/03/26 Copyright 91/03/26 00:13:12 Chris Lewis";
  619.   #endif
  620.   
  621.   extern struct cattab tabN[], tabS[], *extidx;
  622. --- 12,18 ----
  623.   
  624.   #ifndef    lint
  625.   static char SCCSid[] =
  626. !     "@(#)dit.c: 91/04/24 Copyright 91/04/24 21:48:46 Chris Lewis";
  627.   #endif
  628.   
  629.   extern struct cattab tabN[], tabS[], *extidx;
  630. ***************
  631. *** 132,137 ****
  632. --- 132,139 ----
  633.   }
  634.   
  635.   #ifdef    DIT
  636. + int sizescale = 1;
  637.   int indtres;
  638.   
  639.   int points, font, ch, i;
  640. ***************
  641. *** 150,155 ****
  642. --- 152,158 ----
  643.           goto finish;
  644.           case 's':
  645.           points = getnum();
  646. +         points /= sizescale;
  647.           DBP((D_CAT, "Pointsize %d\n", points));
  648.           break;
  649.           case 'f':
  650. Index: ./README
  651. *** /tmp/PATCHold/./README    Fri May 10 03:15:27 1991
  652. --- ./README    Fri May 10 03:15:32 1991
  653. ***************
  654. *** 1,4 ****
  655. !         PSROFF RELEASE 3.0 README 2.17 91/04/02
  656.   
  657.               Feb 19, 1991
  658.               Chris Lewis
  659. --- 1,4 ----
  660. !         PSROFF RELEASE 3.0 README 2.19 91/04/24
  661.   
  662.               Feb 19, 1991
  663.               Chris Lewis
  664. ***************
  665. *** 149,159 ****
  666.         gfnttab (discussed later).
  667.   
  668.       - The ditroff *input* handler is quite new, and hasn't been
  669. !       tested all that extensively.  Preliminary results seem to
  670. !       suggest that it does work, but documentation is scanty,
  671. !       and there's not much in the way of automated install or
  672. !       configuration checking for real ditroff.  See the DITROFF
  673. !       file for additional information.
  674.   
  675.       - Fonts:
  676.       - postscript driving - psroff uses what's on the printer - the
  677. --- 149,159 ----
  678.         gfnttab (discussed later).
  679.   
  680.       - The ditroff *input* handler is quite new, and hasn't been
  681. !       tested all that extensively.  See the DITROFF file for
  682. !       additional information.
  683. !     
  684. !     - This software should work with groff, see the DITROFF file for
  685. !       further details.
  686.   
  687.       - Fonts:
  688.       - postscript driving - psroff uses what's on the printer - the
  689. ***************
  690. *** 432,443 ****
  691.   
  692.       Chris Lewis
  693.       Elegant Communications Inc.
  694. !     Box 13215, Kanata PO
  695. !     Kanata, Ontario, K2K 1X4
  696.       Voice Phone: Canada (613) 832-0541
  697.       Userid's for e-mail contact:
  698.       Psroff enquiries/help: psroff-request
  699.       Non-psroff mail only: clewis
  700. !     UUCP routing: uunet!mitel!cunews!latour!ecicrl!<userid>
  701. !     Possible internet routing: <userid>@ferret.ocunix.on.ca
  702.       Alternate: <user>@eci386.uucp
  703. --- 432,444 ----
  704.   
  705.       Chris Lewis
  706.       Elegant Communications Inc.
  707. !     P.O. Box 124
  708. !     Dunrobin, Ontario,
  709. !     Canada K0A 1T0
  710.       Voice Phone: Canada (613) 832-0541
  711.       Userid's for e-mail contact:
  712.       Psroff enquiries/help: psroff-request
  713.       Non-psroff mail only: clewis
  714. !     Address: <userid>@ferret.ocunix.on.ca
  715. !     Alternate UUCP routing: uunet!mnetor!lsuc!eci386!ecicrl!<userid>
  716.       Alternate: <user>@eci386.uucp
  717. Index: ./troff2.c
  718. *** /tmp/PATCHold/./troff2.c    Fri May 10 03:15:49 1991
  719. --- ./troff2.c    Fri May 10 03:15:51 1991
  720. ***************
  721. *** 12,18 ****
  722.   
  723.   #ifndef    lint
  724.   static char SCCSid[] =
  725. !     "@(#)troff2.c: 2.15 Copyright 91/03/25 23:20:47 Chris Lewis";
  726.   #endif
  727.   
  728.   #define    ESC    0x80
  729. --- 12,18 ----
  730.   
  731.   #ifndef    lint
  732.   static char SCCSid[] =
  733. !     "@(#)troff2.c: 2.17 Copyright 91/05/03 10:41:03 Chris Lewis";
  734.   #endif
  735.   
  736.   #define    ESC    0x80
  737. ***************
  738. *** 86,94 ****
  739.   int optimize = 0;
  740.   #endif
  741.   
  742.   extern char *realloc();
  743.   
  744. ! #define    OPTLIST    "d:O:Y:T:VD:l:MR:P::zp:W:ZNS"
  745.   
  746.   /*    On 386/ix 1.0.6 profiling has a bug in it that leaves
  747.       two extra longs on the stack between the stack frame and
  748. --- 86,98 ----
  749.   int optimize = 0;
  750.   #endif
  751.   
  752. + #ifdef    DIT
  753. + int    sizescale;
  754. + #endif
  755.   extern char *realloc();
  756.   
  757. ! #define    OPTLIST    "d:O:Y:T:VD:l:MR:P::zp:W:ZNSG:"
  758.   
  759.   /*    On 386/ix 1.0.6 profiling has a bug in it that leaves
  760.       two extra longs on the stack between the stack frame and
  761. ***************
  762. *** 214,220 ****
  763. --- 218,228 ----
  764.   #ifdef    DIT
  765.               ditroff = 1;
  766.               break;
  767. +         case 'G':
  768. +             sizescale = atoi(optarg);
  769. +             break;
  770.   #else
  771. +         case 'S':
  772.               fprintf(stderr, "%s: ditroff frontend not configured\n");
  773.               exit(1);
  774.   #endif
  775. Index: ./MISC
  776. *** /tmp/PATCHold/./MISC    Fri May 10 03:16:04 1991
  777. --- ./MISC    Fri May 10 03:16:06 1991
  778. ***************
  779. *** 1,6 ****
  780.           Miscellaneous Tuning/Customization
  781. !             2.9 91/03/26
  782.   
  783.       - Postscript spooling:  Theoretically speaking, it is better
  784.         to have psxlate in your Postscript printer spooler interface
  785.         than as a pipeline in psroff.  For System V, you might want
  786. --- 1,26 ----
  787.           Miscellaneous Tuning/Customization
  788. !             2.10 91/05/10
  789.   
  790. +     - Vertical bars in eqn may not be vertical.  This is a botch
  791. +       in some versions of eqn - namely, eqn is asking for "|"
  792. +       in italic.  You see this by:
  793. +     .EQ
  794. +     left nothing {d f(x)} over {d x} right |
  795. +     .EN
  796. +       Which may (depending on your eqn) look like:
  797. +     df(x) /
  798. +     ----- /
  799. +     dx    /
  800. +       Fix by appending:
  801. +     normal
  802. +     | 0
  803. +       to the appropriate *.lib file.  Then all "|" will be
  804. +       from the Times-Roman font.  Ugly, but the only way to
  805. +       fix eqn vertical bars.
  806.       - Postscript spooling:  Theoretically speaking, it is better
  807.         to have psxlate in your Postscript printer spooler interface
  808.         than as a pipeline in psroff.  For System V, you might want
  809. Index: ./defs.h
  810. *** /tmp/PATCHold/./defs.h    Fri May 10 03:16:18 1991
  811. --- ./defs.h    Fri May 10 03:16:22 1991
  812. ***************
  813. *** 9,15 ****
  814.    */
  815.   
  816.   /*    Official Release and Patch level:    */
  817. ! #define    T2VERSION    "@(#)PSROFF Copyright 91/03/25 Chris Lewis - R3 PL0"
  818.   
  819.   /*    Configuration parameters:
  820.    */
  821. --- 9,15 ----
  822.    */
  823.   
  824.   /*    Official Release and Patch level:    */
  825. ! #define    T2VERSION    "@(#)PSROFF Copyright 91/04/26 Chris Lewis - R3 PL1"
  826.   
  827.   /*    Configuration parameters:
  828.    */
  829. Index: ./TROUBLE
  830. *** /tmp/PATCHold/./TROUBLE    Fri May 10 03:16:34 1991
  831. --- ./TROUBLE    Fri May 10 03:16:36 1991
  832. ***************
  833. *** 1,4 ****
  834. !         Psroff 3.0 Trouble Shooting.... 2.11 91/04/02
  835.   
  836.   (psroff 1.0 users can use this to a certain extent.  This is relatively
  837.   unchanged from Psroff 2.0 except for the ditroff input capability)
  838. --- 1,4 ----
  839. !         Psroff 3.0 Trouble Shooting.... 2.13 91/05/10
  840.   
  841.   (psroff 1.0 users can use this to a certain extent.  This is relatively
  842.   unchanged from Psroff 2.0 except for the ditroff input capability)
  843. ***************
  844. *** 22,28 ****
  845.   you run "make check" first and correct any "ERROR"'s it reports
  846.   that apply to the configuration (driver/printer) you wish to use.
  847.   If you encounter problems you cannot solve and wish to ask me for
  848. ! help, I will want you to send me a copy of "make check"'s output....
  849.   
  850.   Definitions:
  851.       - LIBDIR - default /usr/lib/troff2 (config option in Makefile)
  852. --- 22,29 ----
  853.   you run "make check" first and correct any "ERROR"'s it reports
  854.   that apply to the configuration (driver/printer) you wish to use.
  855.   If you encounter problems you cannot solve and wish to ask me for
  856. ! help, I will want you to send me a copy of "make check"'s output.
  857. ! But don't send it to me unless I ask for it.
  858.   
  859.   Definitions:
  860.       - LIBDIR - default /usr/lib/troff2 (config option in Makefile)
  861. ***************
  862. *** 228,233 ****
  863. --- 229,238 ----
  864.       Run psroff debug.  Check for and correct troff error messages (eg:
  865.       line too long) in your document.  This could even be troff not being
  866.       able to find a file you specified to psroff.
  867. + Vertical lines in EQN are made up of slashes rather than a vertical line.
  868. +     See MISC file for details.
  869.   
  870.   Character widths wildly and inconsistently off:
  871.   
  872. Index: ./DITROFF
  873. *** /tmp/PATCHold/./DITROFF    Fri May 10 03:16:54 1991
  874. --- ./DITROFF    Fri May 10 03:16:56 1991
  875. ***************
  876. *** 1,8 ****
  877. !         Ditroff input configuration notes
  878. !             2.3 91/02/20
  879.   
  880.   This document attempts to describe some of the issues of using
  881. ! psroff with ditroff instead of CAT troff.
  882.   
  883.   The heart of the whole issue is the use of the -N option
  884.   to troff2ps (see lib/psrofflib.S).  Which permits the translation
  885. --- 1,10 ----
  886. !         Ditroff/Groff input configuration notes
  887. !             2.4 91/04/17
  888.   
  889.   This document attempts to describe some of the issues of using
  890. ! psroff with ditroff or groff instead of CAT troff.  Some of the
  891. ! general issues about ditroff apply to groff as well.  There is,
  892. ! however, a groff specific section at the end of this file.
  893.   
  894.   The heart of the whole issue is the use of the -N option
  895.   to troff2ps (see lib/psrofflib.S).  Which permits the translation
  896. ***************
  897. *** 31,36 ****
  898. --- 33,40 ----
  899.   only installs CAT-compatible width tables in FONTDIR/<widthname>/ft*,
  900.   yet, ditroff will insist upon a FONTDIR/dev<widthname>/*.out format.
  901.   
  902. + Groff width tables are somewhat different - see the end of this file.
  903.   The supplied lj3 and ps widths (widths/width???) files are designed to
  904.   operate with full ditroff.  To use them, copy widths/widthlj3/[A-Z]* to
  905.   FONTDIR/devlj3 or widths/widthps/[A-Z]* to FONTDIR/devpsc.  Then,
  906. ***************
  907. *** 61,67 ****
  908.   Macro Adapters & Page offsets:
  909.   -----------------------------
  910.   
  911. ! When you specify "-mm", tsroff goes and looks for a file called
  912.   "tmac.m" in the macro library area, namely, /usr/lib/tmac.
  913.   In order to support CAT troff, psroff looks in LIBDIR/adapters
  914.   for a file called tmac.m, which includes LIBDIR/adapters/cmn.pre
  915. --- 65,71 ----
  916.   Macro Adapters & Page offsets:
  917.   -----------------------------
  918.   
  919. ! When you specify "-mm", psroff goes and looks for a file called
  920.   "tmac.m" in the macro library area, namely, /usr/lib/tmac.
  921.   In order to support CAT troff, psroff looks in LIBDIR/adapters
  922.   for a file called tmac.m, which includes LIBDIR/adapters/cmn.pre
  923. ***************
  924. *** 85,87 ****
  925. --- 89,135 ----
  926.   Also, you'll probably want to override the default 1/2 inch offset
  927.   that troff2ps implements by specifying -O0 in the t2arg entry of
  928.   lib/psrofflib.S.
  929. + You should test this stuff first, because the -N option overrides
  930. + part of the adapter file search.
  931. + Groff
  932. + -----
  933. + Groff is a complete implementation of ditroff, plus several different
  934. + output drivers (Postscript, tty, DVI).  Generally speaking, you
  935. + won't need psroff if you have groff, but there are a few places
  936. + where groff and psroff can be used together to advantage.
  937. + First of all, groff doesn't support HP Laserjet or LJIII output.
  938. + In this case, you can drive troff2ps -N with gtroff output.  For
  939. + width tables, you would copy the psroff's
  940. + widthps/width[lj,lj3,lj3u]*/[A-Z]* files to the appropriate
  941. + places in /usr/lib/font/dev<type> and modify the groff shell
  942. + script to call troff2ps (you will need to specify the -N option,
  943. + plus set the -p and -T values).  You will probably have to build
  944. + up a proper DESC file for widthlj if you aren't driving a LJ3.
  945. + Secondly, if you want to drive DVI interfaces from CAT troff, you
  946. + can use the ditroff-2-dvi converter with psroff's ditroff output
  947. + option (-Tdt).  I'm not entirely sure why you'd want to do this
  948. + if you have all of groff loaded - but it might be useful.
  949. + The fundamental differences between ditroff and groff (as far as
  950. + *we* are concerned) is the differing width table format.  First,
  951. + groff does not need to compile the width table format into
  952. + a binary format - the ASCII versions are used in the
  953. + /usr/lib/font/dev<type> directory directly.  Psroff doesn't
  954. + copy these files (eg: R, I, B, S etc.) into this directory,
  955. + so you'll have to do it yourself, tho, groff installation
  956. + probably has already done that.  Secondly, there is the
  957. + "sizescale" DESC parameter, which prescales the unitwidth
  958. + and character widths values, as well as the point size selection
  959. + in the gtroff output.  At present, troff2ps does not support
  960. + a sizescale other than 1 (psroff will try to emit glyphs
  961. + sizescale times larger than actually desired).
  962. + The width tables that come with psroff should work with groff.
  963. + The groff width tables can also be used with psroff, but this
  964. + should not be necessary - unless you're trying to use groff's
  965. + tty or dvi output filters.
  966. Index: ./LICENSE
  967. *** /tmp/PATCHold/./LICENSE    Fri May 10 03:17:08 1991
  968. --- ./LICENSE    Fri May 10 03:17:09 1991
  969. ***************
  970. *** 1,5 ****
  971. !             Psroff 3.0 Licensing Information
  972. !                 2.2 91/02/20
  973.   
  974.    1) All code, except where noted, is:
  975.       Copyright 1985, 1986, 1987, 1988, 1989, 1990, 1991 Chris Lewis,
  976. --- 1,5 ----
  977. !             Psroff 3.0 Licensing Information
  978. !                 2.3 91/04/24
  979.   
  980.    1) All code, except where noted, is:
  981.       Copyright 1985, 1986, 1987, 1988, 1989, 1990, 1991 Chris Lewis,
  982. ***************
  983. *** 12,19 ****
  984.       a non-source package in their software releases should contact me:
  985.   
  986.       Chris Lewis
  987. !     Box 13215, Kanata PO
  988. !     Kanata, Ontario, K2K 1X4
  989.       Voice Phone: Canada (613) 832-0541
  990.   
  991.    2) psdtwid and some of the character drawing and spacing
  992. --- 12,20 ----
  993.       a non-source package in their software releases should contact me:
  994.   
  995.       Chris Lewis
  996. !     P.O. Box 124
  997. !     Dunrobin, Ontario,
  998. !     Canada K0A 1T0
  999.       Voice Phone: Canada (613) 832-0541
  1000.   
  1001.    2) psdtwid and some of the character drawing and spacing
  1002.  
  1003. -- 
  1004. Chris Lewis, Phone: (613) 832-0541, Domain: clewis@ferret.ocunix.on.ca
  1005. UUCP: ...!cunews!latour!ecicrl!clewis; Ferret Mailing List:
  1006. ferret-request@eci386; Psroff (not Adobe Transcript) enquiries:
  1007. psroff-request@eci386 or Canada 416-832-0541.  Psroff 3.0 in c.s.u soon!
  1008.  
  1009.  
  1010. exit 0 # Just in case...
  1011.