Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Posting-Version: version B 2.10.2 9/18/84; site ut-ngp.UTEXAS
Path: utzoo!watmath!clyde!burl!ulysses!allegra!mit-eddie!genrad!panda!talcott!harvard!seismo!ut-sally!ut-ngp!jjhnsn
From: jjhnsn@ut-ngp.UTEXAS (J. Lee Johnson)
Newsgroups: net.text
Subject: TranScript bug (psdit)
Message-ID: <2539@ut-ngp.UTEXAS>
Date: Mon, 28-Oct-85 18:23:46 EST
Article-I.D.: ut-ngp.2539
Posted: Mon Oct 28 18:23:46 1985
Date-Received: Wed, 30-Oct-85 06:31:11 EST
Distribution: net
Organization: UTexas Computation Center, Austin, Texas
Lines: 143

In laser-lovers, ned%UPenn-Grasp%upenn.csnet@CSNET-RELAY.arpa says:
> 
> We've just started using TranScript here, and we seem to have found an
> annoying bug in psdit. The last word in the file isn't output! ...
> It seems like a buffer flushing problem, and we could probably fix it, but
> we're pretty surprised to have found it.

He's correct, there is a buffer flushing problem in psdit. There are also
some integer divisions where psdit truncates rather than rounds. The
following is a diff file to correct these problems. Use "patch" to
apply it to psdit.c.
--
James Lee Johnson, U.T. Computation Center, Austin, Texas 78712
ARPA:  jjhnsn@ut-ngp.UTEXAS.EDU
UUCP:  ihnp4!ut-ngp!jjhnsn  allegra!ut-ngp!jjhnsn  gatech!ut-ngp!jjhnsn
       seismo!ut-sally!jjhnsn  harvard!ut-sally!jjhnsn
#
#	This is a shell archive.
#	Remove everything above and including the cut line.
#	Then run the rest of the file through sh.
-----cut here-----cut here-----cut here-----cut here-----
#!/bin/sh
# shar:	Shell Archiver
#	Run the following text with /bin/sh to create:
#	psdit.patch
# This archive created: Mon Oct 28 13:33:19 1985
echo shar: extracting psdit.patch '(2393 characters)'
sed 's/^XX//' << \SHAR_EOF > psdit.patch
XX*** psdit.c.dist	Fri Jul  5 11:28:57 1985
XX--- psdit.c	Mon Oct 28 12:35:24 1985
XX***************
XX*** 85,90
XX  #define ErrorTolerance 100
XX  #define PSWID 0x00000FFF
XX  #define ISPSPROC 0x000FF000
XX  
XX  /* we maintain PS coords with 16 times the precision */
XX  /* current PS state is: */
XX
XX--- 85,91 -----
XX  #define ErrorTolerance 100
XX  #define PSWID 0x00000FFF
XX  #define ISPSPROC 0x000FF000
XX+ #define PSscale(x)	((x)+2250)/4500  /* equiv. to  ( x*16 / 72000 ) +0.5 */
XX  
XX  /* we maintain PS coords with 16 times the precision */
XX  /* current PS state is: */
XX***************
XX*** 816,821
XX  
XX  private t_trailer()
XX  {
XX      printf("\n%%%%Trailer\n");
XX      printf("xt\n");
XX  }
XX
XX--- 817,823 -----
XX  
XX  private t_trailer()
XX  {
XX+     FlushShow();FlushFont();MoveTo();DoMove();
XX      printf("\n%%%%Trailer\n");
XX      printf("xt\n");
XX  }
XX***************
XX*** 905,911
XX  	pswid = psinfo & PSWID;
XX  	if ((psinfo & ISPSPROC) && (psinfo != -1)) {
XX  	    showspecial (s, code, pswid);
XX! 	    PSx += (pswid * fontsize * 16 * dres) / (72 * 1000);
XX  	}
XX  	else {
XX  	    showchar (code);
XX
XX--- 907,913 -----
XX  	pswid = psinfo & PSWID;
XX  	if ((psinfo & ISPSPROC) && (psinfo != -1)) {
XX  	    showspecial (s, code, pswid);
XX! 	    PSx += PSscale(pswid * fontsize * dres);
XX  	}
XX  	else {
XX  	    showchar (code);
XX***************
XX*** 910,916
XX  	else {
XX  	    showchar (code);
XX  	    if (pswid > 0) {
XX! 		PSshowlen += (pswid * fontsize * 16 * dres) / (72 * 1000);
XX  	    }
XX  	}
XX      }
XX
XX--- 912,918 -----
XX  	else {
XX  	    showchar (code);
XX  	    if (pswid > 0) {
XX! 	        PSshowlen += PSscale(pswid * fontsize * dres);
XX  	    }
XX  	}
XX      }
XX***************
XX*** 919,925
XX  	pswid = psinfo & PSWID;
XX  	if ((psinfo & ISPSPROC) && (psinfo != -1)) {
XX  	    showspecial (s, code, pswid);
XX! 	    PSx += (pswid * fontsize * 16 * dres) / (72 * 1000);
XX  	}
XX  	else {
XX  	    showchar (code);
XX
XX--- 921,927 -----
XX  	pswid = psinfo & PSWID;
XX  	if ((psinfo & ISPSPROC) && (psinfo != -1)) {
XX  	    showspecial (s, code, pswid);
XX! 	    PSx += PSscale(pswid * fontsize * dres);
XX  	}
XX  	else {
XX  	    showchar (code);
XX***************
XX*** 924,930
XX  	else {
XX  	    showchar (code);
XX  	    if (pswid > 0) {
XX! 		PSshowlen += (pswid * fontsize * 16 * dres) / (72 * 1000);
XX  	    }
XX  	}
XX      }
XX
XX--- 926,932 -----
XX  	else {
XX  	    showchar (code);
XX  	    if (pswid > 0) {
XX! 	        PSshowlen += PSscale(pswid * fontsize * dres);
XX  	    }
XX  	}
XX      }
SHAR_EOF
if test 2393 -ne "`wc -c psdit.patch`"
then
echo shar: error transmitting psdit.patch '(should have been 2393 characters)'
fi
#	End of shell archive
exit 0