projects
/
unix-history
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
tags
|
clone url
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
date and time created 83/08/11 20:49:31 by sam
[unix-history]
/
usr
/
src
/
old
/
vpr
/
vpd.c
diff --git
a/usr/src/old/vpr/vpd.c
b/usr/src/old/vpr/vpd.c
index
1536d6d
..
e1cf166
100644
(file)
--- a/
usr/src/old/vpr/vpd.c
+++ b/
usr/src/old/vpr/vpd.c
@@
-1,10
+1,13
@@
#define CONSOLE "/dev/console"
#define dprcons if (debug) prcons
/*
#define CONSOLE "/dev/console"
#define dprcons if (debug) prcons
/*
+ * vpd.c updated %G%
* Varian or Versatec printer daemon
*/
* Varian or Versatec printer daemon
*/
+char vpdSCCSid[] = "@(#)vpd.c 1.4\t%G%";
+
#include <stdio.h>
#include <stdio.h>
-#include <sys/
types
.h>
+#include <sys/
param
.h>
#include <dir.h>
#include <signal.h>
#include <stat.h>
#include <dir.h>
#include <signal.h>
#include <stat.h>
@@
-17,6
+20,8
@@
int debug;
extern int errno;
#define VRAST "/usr/local/lib/vrast"
extern int errno;
#define VRAST "/usr/local/lib/vrast"
+#define VDMP "/usr/lib/vdmp"
+#define VPLTDMP "/usr/lib/vpltdmp"
#ifdef VARIAN
#define DEVICE "/dev/va0"
#ifdef VARIAN
#define DEVICE "/dev/va0"
@@
-37,12
+42,12
@@
int prtmode[] = {VPRINT, 0, 0};
char line[128];
char linep[127];
char banbuf[64];
char line[128];
char linep[127];
char banbuf[64];
+char banner[512];
char printflag;
int linel;
FILE *dfb;
char dfname[33] = DFNAME;
int waittm = 6;
char printflag;
int linel;
FILE *dfb;
char dfname[33] = DFNAME;
int waittm = 6;
-struct dir dbuf;
int onalrm ();
char tmplock[] = "lockXXXXXX";
char fonts[4][50] = {
int onalrm ();
char tmplock[] = "lockXXXXXX";
char fonts[4][50] = {
@@
-53,14
+58,34
@@
char fonts[4][50] = {
};
main(argc, argv)
};
main(argc, argv)
+ int argc;
+ char **argv;
{
{
- char
dp,
n;
+ char n;
register char *p1, *p2;
register int df;
register char *p1, *p2;
register int df;
+ register struct direct *dirp;
+ DIR *dp;
struct stat stb;
int offline = 0;
int i, okreque = 1;
struct stat stb;
int offline = 0;
int i, okreque = 1;
+ while (argc > 1) {
+ argc--;
+ argv++;
+ if (argv[0][0] != '-')
+ continue;
+ switch (argv[0][1]) {
+ case 'n':
+ if (argc < 2)
+ break;
+ argv++;
+ argc--;
+ nice(atol(argv[0]));
+ break;
+ }
+ }
+ setuid(getuid());
signal(SIGHUP, SIG_IGN);
signal(SIGINT, SIG_IGN);
signal(SIGQUIT, SIG_IGN);
signal(SIGHUP, SIG_IGN);
signal(SIGINT, SIG_IGN);
signal(SIGQUIT, SIG_IGN);
@@
-119,14
+144,14
@@
reopen:
}
sleep(10);
}
}
sleep(10);
}
- dp = open
(".", 0
);
+ dp = open
dir("."
);
search:
dprcons("search\n");
if (okreque == 1) {
search:
dprcons("search\n");
if (okreque == 1) {
-
lseek(dp, 0, 0
);
+
rewinddir(dp
);
do {
do {
-
n = read(dp, &dbuf, sizeof dbuf
);
- if (
n <= 0
) {
+
dirp = readdir(dp
);
+ if (
dirp == NULL
) {
if (printflag)
lastpage();
unlink("lock");
if (printflag)
lastpage();
unlink("lock");
@@
-138,13
+163,13
@@
search:
dprcons("one last time\n");
printflag = 0;
close(3);
dprcons("one last time\n");
printflag = 0;
close(3);
+ closedir(dp);
sleep(30);
goto begin;
}
sleep(30);
goto begin;
}
- } while (!dbuf.d_ino
- || dbuf.d_name[0] != 'd' || dbuf.d_name[1] != 'f');
- strcpy(&dfname[15], dbuf.d_name);
- dprcons("found %s\n", dbuf.d_name);
+ } while (dirp->d_name[0] != 'd' || dirp->d_name[1] != 'f');
+ strcpy(&dfname[15], dirp->d_name);
+ dprcons("found %s\n", dirp->d_name);
}
dprcons("trying %s\n", dfname);
printflag = 1;
}
dprcons("trying %s\n", dfname);
printflag = 1;
@@
-152,7
+177,7
@@
search:
feedpage();
if (trysend(dfname, okreque)) {
okreque = 0;
feedpage();
if (trysend(dfname, okreque)) {
okreque = 0;
- close(dp);
+ close
dir
(dp);
printf("reque %s\n", dfname);
close(3);
goto reopen;
printf("reque %s\n", dfname);
close(3);
goto reopen;
@@
-177,12
+202,22
@@
int okreque;
unlink(file);
return (0);
}
unlink(file);
return (0);
}
- for (*banbuf = plot = 0; getline (); ) switch (line[0]) {
+ banner[0] = '\0';
+ for(*banbuf= plot= 0; getline();) switch(line[0]) {
case 'L':
strcpy(banbuf, line + 1);
continue;
case 'L':
strcpy(banbuf, line + 1);
continue;
+ case 'B': /* banner */
+ if(banner[0] == '\0')
+ strcat(banner, line + 1);
+ else {
+ strcat(banner,"\n");
+ strcat(banner, line+1);
+ }
+ continue;
+
case '1':
case '2':
case '3':
case '1':
case '2':
case '3':
@@
-190,6
+225,8
@@
int okreque;
strcpy(fonts[line[0]-'1'], line + 1);
continue;
strcpy(fonts[line[0]-'1'], line + 1);
continue;
+ case 'C': /* called by cifplot */
+ case 'V': /* called by vplot */
case 'F':
case 'G': /* Like f, but invoke vpf with -l flag. */
case 'T':
case 'F':
case 'G': /* Like f, but invoke vpf with -l flag. */
case 'T':
@@
-412,6
+449,20
@@
char c;
#endif
"-v", line+1, linep, 0);
break;
#endif
"-v", line+1, linep, 0);
break;
+ case 'C':
+ execl(VDMP,"vdmp","-n",banbuf,"-b",banner,
+#ifdef VERSATEC
+ "-W",
+#endif
+ line+1,0);
+ break;
+ case 'V':
+ execl(VPLTDMP,"vpltdmp","-n",banbuf,"-b",banner,
+#ifdef VERSATEC
+ "-W",
+#endif
+ line+1,0);
+ break;
}
exit(2); /* execl failed or not one of above cases. */
}
}
exit(2); /* execl failed or not one of above cases. */
}