static char sccsid
[] = "@(#)vpltdmp.c 4.5 (Berkeley) %G%";
* Copyright (C) 1981, Regents of the University of California
* reads raster file created by vplot and dumps it onto the
* Varian or Versatec plotter.
* Input comes from file descriptor 0, output is to file descriptor 1.
static char *Sid
= "@(#)vpltdmp.c 4.5\t%G%";
int plotmd
[] = { VPLOT
};
int prtmd
[] = { VPRINT
};
char buf
[BUFSIZ
]; /* output buffer */
int lines
; /* number of raster lines printed */
int varian
; /* 0 for versatec, 1 for varian. */
int BYTES_PER_LINE
; /* number of bytes per raster line. */
int PAGE_LINES
; /* number of raster lines per page. */
char *name
, *host
, *acctfile
;
BYTES_PER_LINE
= atoi(&argv
[0][2]) / 8;
varian
= BYTES_PER_LINE
== 264;
PAGE_LINES
= atoi(&argv
[0][2]);
ioctl(OUT
, VSETSTATE
, prtmd
);
write(OUT
, "\n\n\n\n\n", 6);
account(name
, host
, *argv
);
ioctl(OUT
, VSETSTATE
, plotmd
);
while ((n
= read(IN
, cp
, sizeof(buf
))) > 0) {
if (write(OUT
, cp
, n
) != n
)
* Make sure we send complete raster lines.
if ((n
= bytes
% BYTES_PER_LINE
) > 0) {
for (cp
= &buf
[n
]; cp
> buf
; )
if (write(OUT
, cp
, n
) != n
)
lines
+= bytes
/ BYTES_PER_LINE
;
account(who
, from
, acctfile
)
char *who
, *from
, *acctfile
;
if (who
== NULL
|| acctfile
== NULL
)
if (access(acctfile
, 02) || (a
= fopen(acctfile
, "a")) == NULL
)
* Varian accounting is done by 8.5 inch pages;
* Versatec accounting is by the (12 inch) foot.
fprintf(a
, "t%6.2f\t", (lines
/ 200.0) / PAGE_LINES
);