date and time created 90/06/17 13:51:15 by bostic
[unix-history] / usr / src / old / vpr / vpq.c
CommitLineData
36b073d4 1/* vpq.c %G%
c8c4b75c
BJ
2 * Varian and Versatec queue
3 */
4
2afc3750 5static char vpqSCCSid[] = "@(#)vpq.c 1.4\t%G%";
36b073d4 6
cff28806 7#include <sys/param.h>
2afc3750
KB
8#include <sys/dir.h>
9#include <sys/stat.h>
c8c4b75c
BJ
10#include <stdio.h>
11#include <errno.h>
12#define MAXJOBS 100
13
c8c4b75c
BJ
14struct stat stbuf;
15int nextflag;
16int linecnt;
c8c4b75c
BJ
17FILE *jf;
18char line[100];
19char username[10];
20int cnt;
21extern int errno;
22extern char _sobuf[];
23
24main(argc, argv)
25int argc;
26char **argv;
27{
28 int varian = 1;
29 int versatec = 1;
30
31 setbuf(stdout, _sobuf);
32
33 argc--, argv++;
34 while (argc > 0 && argv[0][0] == '-') {
35 switch (argv[0][1]) {
36
37 case 'W': /* Wide: the versatec. */
38 varian = 0;
39 versatec++;
40 break;
41
42 case 'b':
43 varian++;
44 versatec++;
45 break;
46
47 default:
48 fprintf(stderr, "usage: vpq [ -W ] [ -b ]\n");
49 exit(1);
50 }
51 argc--, argv++;
52 }
53 if (varian)
54 queue("/dev/va0", "Varian", "/usr/spool/vad", "/usr/lib/vad");
55 if (versatec)
56 queue("/dev/vp0", "Versatec", "/usr/spool/vpd", "/usr/lib/vpd");
57 exit(0);
58}
59
60
61queue(device, devname, spooldir, daemon)
62char *device, *devname, *spooldir, *daemon;
63{
64 FILE *vc;
cff28806
KM
65 DIR *df;
66 register struct direct *dirp;
c8c4b75c
BJ
67
68 printf("%s: ", devname);
69 vc = fopen(device, "w");
70 if (vc == NULL) {
71 if (errno == EIO)
72 printf("offline\n");
73 else if (errno == ENXIO)
74 printf("in use\n");
75 else
76 printf("not available\n");
77 } else {
78 printf("ready and idle.\n");
79 fclose(vc);
80 }
81 if (access(daemon, 1))
82 printf("Daemon is disabled.\n");
83 if (chdir(spooldir) < 0) {
84 perror(spooldir);
85 return;
86 }
cff28806 87 df = opendir(".");
c8c4b75c
BJ
88 if (df == NULL) {
89 perror(spooldir);
90 return;
91 }
c8c4b75c
BJ
92 linecnt = 0;
93 cnt = 0;
cff28806
KM
94 while ((dirp = readdir(df)) != NULL) {
95 if (dirp->d_name[0] != 'd')
c8c4b75c 96 continue;
cff28806 97 if (dirp->d_name[1] != 'f')
c8c4b75c 98 continue;
cff28806 99 if (stat(dirp->d_name, &stbuf) < 0)
c8c4b75c
BJ
100 continue;
101 if (cnt == 0)
102 printf("Owner\t Id Chars Filename\n");
103 cnt++;
cff28806 104 process(dirp);
c8c4b75c 105 }
cff28806 106 closedir(df);
c8c4b75c
BJ
107 if (cnt == 0)
108 printf("Queue is empty.\n");
109 printf("\n");
110}
111
cff28806
KM
112process(dirp)
113 register struct direct *dirp;
c8c4b75c
BJ
114{
115
cff28806 116 jf = fopen(dirp->d_name, "r");
c8c4b75c
BJ
117 if (jf == NULL)
118 return;
119 while (getline()) {
120 switch (line[0]) {
121
122 case 'L':
123 strcpy(username, line+1);
124 break;
125
36b073d4
DH
126 case 'C':
127 case 'V':
c8c4b75c
BJ
128 case 'F':
129 case 'G':
130 case 'P':
131 case 'T':
132 if (stat(line+1, &stbuf) < 0)
133 stbuf.st_size = 0;
cff28806
KM
134 printf("%-10s%5s%8d %s\n", username,
135 &(dirp->d_name[3]), stbuf.st_size, line+1);
c8c4b75c
BJ
136 break;
137 }
138 }
139 fclose(jf);
140}
141
142getline()
143{
144 register int i, c;
145
146 i = 0;
147 while ((c = getc(jf)) != '\n') {
148 if (c <= 0)
149 return(0);
150 if (i < 100)
151 line[i++] = c;
152 }
153 line[i++] = 0;
154 return (1);
155}