* Copyright (c) 1981 Regents of the University of California.
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
"@(#) Copyright (c) 1981 Regents of the University of California.\n\
static char sccsid
[] = "@(#)vpltdmp.c 5.4 (Berkeley) 6/1/90";
* 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 5.4\t6/1/90";
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", (double)lines
/ (double)PAGE_LINES
);