date and time created 80/11/30 15:56:31 by root
[unix-history] / usr / src / old / vpr / vpq.c
CommitLineData
c8c4b75c
BJ
1/*
2 * Varian and Versatec queue
3 */
4
5#include <sys/types.h>
6#include <dir.h>
7#include <stat.h>
8#include <stdio.h>
9#include <errno.h>
10#define MAXJOBS 100
11
12struct dir dirent;
13struct stat stbuf;
14int nextflag;
15int linecnt;
16FILE *df;
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;
65
66 printf("%s: ", devname);
67 vc = fopen(device, "w");
68 if (vc == NULL) {
69 if (errno == EIO)
70 printf("offline\n");
71 else if (errno == ENXIO)
72 printf("in use\n");
73 else
74 printf("not available\n");
75 } else {
76 printf("ready and idle.\n");
77 fclose(vc);
78 }
79 if (access(daemon, 1))
80 printf("Daemon is disabled.\n");
81 if (chdir(spooldir) < 0) {
82 perror(spooldir);
83 return;
84 }
85oloop:
86 df = fopen(".", "r");
87 if (df == NULL) {
88 perror(spooldir);
89 return;
90 }
91loop:
92 fseek(df, 0l, 0);
93 linecnt = 0;
94 cnt = 0;
95 while (fread(&dirent, sizeof dirent, 1, df) == 1) {
96 if (dirent.d_ino == 0)
97 continue;
98 if (dirent.d_name[0] != 'd')
99 continue;
100 if (dirent.d_name[1] != 'f')
101 continue;
102 if (stat(dirent.d_name, &stbuf) < 0)
103 continue;
104 if (cnt == 0)
105 printf("Owner\t Id Chars Filename\n");
106 cnt++;
107 process();
108 }
109 if (cnt == 0)
110 printf("Queue is empty.\n");
111 printf("\n");
112}
113
114process()
115{
116
117 jf = fopen(dirent.d_name, "r");
118 if (jf == NULL)
119 return;
120 while (getline()) {
121 switch (line[0]) {
122
123 case 'L':
124 strcpy(username, line+1);
125 break;
126
127 case 'B':
128 case 'F':
129 case 'G':
130 case 'P':
131 case 'T':
132 if (stat(line+1, &stbuf) < 0)
133 stbuf.st_size = 0;
134 printf("%-10s%5s%8d %s\n", username, dirent.d_name+3,
135 stbuf.st_size, line+1);
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}