1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
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
106
107
108
109
110
111
112
113
114
115
116
117
|
18-Feb-87 09:36:05-MST,4267;000000000001
Mail-From: BEEBE created at 18-Feb-87 09:36:02
Date: Wed 18 Feb 87 09:36:01-MST
From: "Nelson H.F. Beebe" <Beebe@UTAH-SCIENCE.ARPA>
Subject: DVI driver family update #1
To: $90%dhdurz1.bitnet@WISCVM.WISC.EDU, austins%ucbcmsa.edu@UTAH-CS.ARPA,
cel%cithex.caltech.edu@UTAH-CS.ARPA,
crawford-j%ohio_state.arpa@UTAH-CS.ARPA,
crm8701%tamvenus.bitnet@WISCVM.WISC.EDU,
gaspard%hroeur5.bitnet@WISCVM.WISC.EDU,
james%vaxe.coe.northeaster.edu@UTAH-CS.ARPA,
lamy%ai.toronto.edu@RELAY.CS.NET, mpc91b%dgogwd01.bitnet@WISCVM.WISC.EDU,
rjones%uwovax.bitnet@WISCVM.WISC.EDU, rs%gnome.cs.cmu.edu@UTAH-CS.ARPA,
stone%ruthep.rutgers.edu@UTAH-CS.ARPA,
system%uvphys.bitnet@WISCVM.WISC.EDU, thobe@EE.UCLA.EDU,
zeffi%finabo.bitnet@WISCVM.WISC.EDU
cc: BEEBE@UTAH-SCIENCE.ARPA
X-US-Mail: "Center for Scientific Computation, South Physics, University of Utah, Salt Lake City, UT 84112"
X-Telephone: (801) 581-5254
Message-ID: <12280054855.6.BEEBE@UTAH-SCIENCE.ARPA>
For those of you who supplied an EMAIL address, I have set
up a mailing list which I will use to announce changes in my
DVI driver family. All tapes and floppy disks received as
of 18-Feb-87 have now been shipped.
Since the TeXHaX announcement, ANONYMOUS FTP access for
Internet sites has become available. To use it, login with
ANONYMOUS FTP to UTAH-SCIENCE and get the file 00README.TXT.
It contains information on how to find things.
Here is part of the 00REVHST.TXT file:
-----------------------------------------------------------------
[10-Feb-87]
Yesterday I discovered that VAX VMS 4.4 printf()
wipes out the stack and kills the process if a
long string is printed. This turns out to be the
case in outline() in dvitos.c; the code has been
modified to use fputs() there instead.
[10-Feb-87]
Several debugging sessions on VAX VMS stepping
through the call chain fflush() -> _flsbuf() ->
_flsbuf_record() -> write_record() ->
write_buffer() -> write_imbed() -> write_output()
->signal() -> c$$translate() have made it clear
that the simple scheme in dvi*.c and lptops.c of
checking for a non-zero return value from
fflush() or ferror() is an unreliable way to
conclude a legitimate error (specifically, disk
storage exhausted) exists. Consequently, these
routines have been modified to call clearerr() at
the beginning of loadchar() and prtbmap(), then
to use a macro DISKFULL() to test for the error
condition. DISKFULL() is defined in machdefs.h,
and errno.h is now included by dvihead.h. This
regrettably introduces small changes in a number
of routines, but no other clean way of doing the
job appeared to be feasible.
[02-Feb-87]
Changed "pagecollation on" to "pagecollation off"
in dviimp.c. With version 3.3 of the Imagen
Image Processor software, there seems to be a bug
in that "pagecollation on" causes page reversal.
I have reported this to Imagen.
-----------------------------------------------------------------
Here are Unix diff output listings for the affected files.
All the dvi*.c routines have similar changes; the two listed
here are typical.
machdefs.h:
113a114
> #define DISKFULL(fp) (ferror(fp) && (errno == ENOSPC))
337a339
> #define DISKFULL(fp) ferror(fp) /* PCC-20 does not always set errno */
dvialw.c:
566a567,568
> clearerr(plotfp); /* VMS sets the error flag unexpectedly */
>
583c585,586
< if (ferror(plotfp) != 0)
---
>
> if (DISKFULL(plotfp))
dvitos.c:
104c104
< #define OUTFILE_EXT ".tos"
---
> #define OUTFILE_EXT ".dvi-tos"
333,335c333,337
< (void)fprintf(plotfp,"\033;%04d%s",
< len >> 2,pline); /* quadruple count ESC;nnnn */
<
---
> {
> (void)fprintf(plotfp,
> "\033;%04d",len >> 2); /* quadruple count ESC;nnnn */
> (void)fputs(pline,plotfp);
> }
362a365,366
> (void)clearerr(plotfp);
>
486,487c490,492
< if (fflush(plotfp) == EOF)
< (void)fatal("Output error -- disk storage probably full");
---
> (void)fflush(plotfp);
> if (DISKFULL(plotfp))
> (void)fatal("prtbmap(): Output error -- disk storage probably full");
-------
|