⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vpltdmp.c

📁 <B>Digital的Unix操作系统VAX 4.2源码</B>
💻 C
字号:
#ifndef lintstatic char sccsid[] = "@(#)vpltdmp.c	4.5 (Berkeley) 7/16/83";#endif/* * Copyright (C) 1981, Regents of the University of California *	All rights reserved * *  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. */#include <stdio.h>#include <sys/vcmd.h>#define IN	0#define OUT	1static	char *Sid = "@(#)vpltdmp.c	4.5\t7/16/83";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;main(argc, argv)	int argc;	char *argv[];{	register int n;	while (--argc) {		if (**++argv == '-') {			switch (argv[0][1]) {			case 'x':				BYTES_PER_LINE = atoi(&argv[0][2]) / 8;				varian = BYTES_PER_LINE == 264;				break;			case 'y':				PAGE_LINES = atoi(&argv[0][2]);				break;			case 'n':				argc--;				name = *++argv;				break;			case 'h':				argc--;				host = *++argv;			}		} else			acctfile = *argv;	}	n = putplot();	ioctl(OUT, VSETSTATE, prtmd);	if (varian)		write(OUT, "\f", 2);	else		write(OUT, "\n\n\n\n\n", 6);	account(name, host, *argv);	exit(n);}putplot(){	register char *cp;	register int bytes, n;	cp = buf;	bytes = 0;	ioctl(OUT, VSETSTATE, plotmd);	while ((n = read(IN, cp, sizeof(buf))) > 0) {		if (write(OUT, cp, n) != n)			return(1);		bytes += n;	}	/*	 * Make sure we send complete raster lines.	 */	if ((n = bytes % BYTES_PER_LINE) > 0) {		n = BYTES_PER_LINE - n;		for (cp = &buf[n]; cp > buf; )			*--cp = 0;		if (write(OUT, cp, n) != n)			return(1);		bytes += n;	}	lines += bytes / BYTES_PER_LINE;	return(0);}account(who, from, acctfile)	char *who, *from, *acctfile;{	register FILE *a;	if (who == NULL || acctfile == NULL)		return;	if (access(acctfile, 02) || (a = fopen(acctfile, "a")) == NULL)		return;	/*	 * 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);	if (from != NULL)		fprintf(a, "%s:", from);	fprintf(a, "%s\n", who);	fclose(a);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -