[comp.sources.misc] v07i119: Official patch to thack

allbery@uunet.UU.NET (Brandon S. Allbery - comp.sources.misc) (08/06/89)

Posting-number: Volume 7, Issue 119
Submitted-by: everson%compsci.bristol.ac.uk@NSFnet-Relay.AC.UK
Archive-name: thack.p3

[Also posted to comp.bugs.misc]

Most of the following patches are due to Paul Eggert
<eggert@twinsun.com> and should help with using thack on non-Sun
machines, also a font handling bugfix and a couple of font fixes,
notably the long dashes which looked so bad in manual pages.

Phill Everson
Medical Imaging
Dept Comp Sci
University of Bristol, UK

*** README.orig	Sat Aug  5 17:02:43 1989
--- README	Sat Aug  5 17:06:15 1989
***************
*** 1,7 ****
  
  Enclosed please find thack, a Troff C/A/T to Postscript filter, written
  by a colleague of mine, Gareth Waddell. Attempt to make output 
! Adobe-conformant Postscript by David R. Kaelbling (drk@twinkie.Rational.COM)
  
  Sample usage of thack is, say:
  
--- 1,8 ----
  
  Enclosed please find thack, a Troff C/A/T to Postscript filter, written
  by a colleague of mine, Gareth Waddell. Attempt to make output 
! Adobe-conformant Postscript by David R. Kaelbling (drk@twinkie.Rational.COM).
! Thanks to Paul Eggert <eggert@twinsun.com> for fixing a number of bugs.
  
  Sample usage of thack is, say:
  
***************
*** 20,26 ****
  on an Apple Laserwriter I and an Apple Laserwriter IINTX. It can also
  be previewed under Sunview with the Rutherford Postscript Interpreter.
  
! If you're using US paper check you have -GUSPAPERLENGTH set in the
  Makefile, then just make.
  
  Phill Everson
--- 21,27 ----
  on an Apple Laserwriter I and an Apple Laserwriter IINTX. It can also
  be previewed under Sunview with the Rutherford Postscript Interpreter.
  
! If you're using US paper check you have -DUSPAPERLENGTH set in the
  Makefile, then just make.
  
  Phill Everson
*** th.h.orig	Sat Aug  5 16:57:13 1989
--- th.h	Sat Aug  5 16:57:17 1989
***************
*** 1,4 ****
--- 1,9 ----
  #include <stdio.h>
+ #include <sys/types.h>
+ #include <time.h>
+ 
+ time_t time();
+ 
  char *table[2][2]=
  	{ /* FONT 0,1,2,4,5,6,7 */
  	 " htnmlizsdbxfjuk p ; a_c`e'o r v-wq/.g ,&y % QTOHNMLRGIPCVEZDBSY",
*** thack.c.orig	Sat Aug  5 16:57:07 1989
--- thack.c	Sat Aug  5 17:01:56 1989
***************
*** 5,13 ****
  int font, cfont, size, csize, tfont, tsize;
  char *pstr, *cstr();
  
  main()
  {
! 	int c, i;
  	int sflag;
  	int hdist, vdist;
  	int esc, lead;
--- 5,28 ----
  int font, cfont, size, csize, tfont, tsize;
  char *pstr, *cstr();
  
+ #ifndef Y_INITIAL
+ #ifndef PAGELENGTH
+ #ifdef USPAGELENGTH
+ #ifdef sun
+ #define PAGELENGTH 11.1875
+ #else
+ #define PAGELENGTH 11
+ #endif
+ #else
+ #define PAGELENGTH 11.75
+ #endif
+ #endif
+ #define Y_INITIAL ((int)(PAGELENGTH*144 + 0.5))
+ #endif
+ 
  main()
  {
! 	int c;
  	int sflag;
  	int hdist, vdist;
  	int esc, lead;
***************
*** 18,28 ****
  	tfont = font = 0;
  	tsize = size = 12;
  	esc = lead = 1;
! #ifdef USPAGELENGTH
! 	cy = ypos = 1584; /* represents 11 inches in troff vertical units */
! #else
! 	cy = ypos = 1692; /* represents 11.5 inches in troff vertical units */
! #endif
  	cx = xpos = 0;
  	sflag = 0;
  	prolog();
--- 33,39 ----
  	tfont = font = 0;
  	tsize = size = 12;
  	esc = lead = 1;
! 	cy = ypos = Y_INITIAL;
  	cx = xpos = 0;
  	sflag = 0;
  	prolog();
***************
*** 71,77 ****
  						else
  							switch (c & 0x3f) {
  							case 19:
! 								pstr = "\\320";
  								break;	/* \- */
  							case 20:
  								pstr = "\\256";
--- 82,88 ----
  						else
  							switch (c & 0x3f) {
  							case 19:
! 								pstr = "\\261";
  								break;	/* \- */
  							case 20:
  								pstr = "\\256";
***************
*** 483,490 ****
  fontps(f1, ps, str)
  char *str;
  {
! 	tfont = cfont;
! 	tsize = csize;
  	pstr = str;
  	size = ps;
  	font = f1;
--- 494,501 ----
  fontps(f1, ps, str)
  char *str;
  {
! 	tfont = font;
! 	tsize = size;
  	pstr = str;
  	size = ps;
  	font = f1;
***************
*** 516,528 ****
  
  newpage()
  {
! 	printf("%%%%Page: %d %d\n", npages, ++npages);
  	printf("save\n");
  }
  
  prolog()
  {
! 	long clock = time(0);
  	  
  	printf("%%!PS-Adobe-\n");
  	printf("%%%%Creator: (thack - contact <everson@cs.bris.ac.uk>)\n");
--- 527,540 ----
  
  newpage()
  {
! 	++npages;
! 	printf("%%%%Page: %d %d\n", npages, npages);
  	printf("save\n");
  }
  
  prolog()
  {
! 	time_t clock = time((time_t *)0);
  	  
  	printf("%%!PS-Adobe-\n");
  	printf("%%%%Creator: (thack - contact <everson@cs.bris.ac.uk>)\n");
***************
*** 530,538 ****
  	printf("%%%%CreationDate: %s", asctime (localtime (&clock)));
  	printf("%%%%Pages: (atend)\n");
  	printf("%%%%DocumentFonts: Times-Roman Times-Italic Times-Bold \
! 	            Symbol Helvetica Helvetica-Oblique Helvetica-Bold Courier \
! 		    Courier-Oblique Courier-Bold Times-BoldItalic Helvetica-BoldOblique \
! 		    Courier-BoldOblique\n");
  	printf("%%%%EndComments\n");
  
  	printf("/P {moveto show} def\n");
--- 542,550 ----
  	printf("%%%%CreationDate: %s", asctime (localtime (&clock)));
  	printf("%%%%Pages: (atend)\n");
  	printf("%%%%DocumentFonts: Times-Roman Times-Italic Times-Bold \
! Symbol Helvetica Helvetica-Oblique Helvetica-Bold Courier \
! Courier-Oblique Courier-Bold Times-BoldItalic Helvetica-BoldOblique \
! Courier-BoldOblique\n");
  	printf("%%%%EndComments\n");
  
  	printf("/P {moveto show} def\n");