manual page distributed with 4.1BSD
[unix-history] / usr / src / usr.sbin / lpr / lprm / lprm.c
CommitLineData
5f84f8f0
SL
1#ifndef lint
2static char sccsid[] = "@(#)lprm.c 4.5 (Berkeley) %G%";
3#endif
4
2a4e9264
RC
5/*
6 * lprm - remove the current user's spool entry
7 *
8 * lprm [-] [[job #] [user] ...]
9 *
10 * Using information in the lock file, lprm will kill the
11 * currently active daemon (if necessary), remove the associated files,
12 * and startup a new daemon. Priviledged users may remove anyone's spool
13 * entries, otherwise one can only remove their own.
14 */
15
16#include "lp.h"
17
18/*
19 * Stuff for handling job specifications
20 */
54266d1f
RC
21char *user[MAXUSERS]; /* users to process */
22int users; /* # of users in user array */
23int requ[MAXREQUESTS]; /* job number of spool entries */
24int requests; /* # of spool requests */
25char *person; /* name of person doing lprm */
2a4e9264 26
54266d1f 27static char luser[16]; /* buffer for person */
2a4e9264
RC
28
29struct passwd *getpwuid();
30
31main(argc, argv)
32 char *argv[];
33{
34 register char *arg;
35 struct passwd *p;
36 struct direct **files;
37 int nitems, assasinated = 0;
2a4e9264
RC
38
39 name = argv[0];
40 gethostname(host, sizeof(host));
41 if ((p = getpwuid(getuid())) == NULL)
42 fatal("Who are you?");
43 if (strlen(p->pw_name) >= sizeof(luser))
44 fatal("Your name is too long");
45 strcpy(luser, p->pw_name);
46 person = luser;
47 while (--argc) {
48 if ((arg = *++argv)[0] == '-')
49 switch (arg[1]) {
50 case 'P':
e5be50e6
RC
51 if (arg[2])
52 printer = &arg[2];
53 else if (argc > 1) {
54 argc--;
55 printer = *++argv;
56 }
2a4e9264
RC
57 break;
58 case '\0':
59 if (!users) {
60 users = -1;
61 break;
62 }
63 default:
64 usage();
65 }
66 else {
67 if (users < 0)
68 usage();
69 if (isdigit(arg[0])) {
70 if (requests >= MAXREQUESTS)
71 fatal("Too many requests");
72 requ[requests++] = atoi(arg);
73 } else {
74 if (users >= MAXUSERS)
75 fatal("Too many users");
76 user[users++] = arg;
77 }
78 }
79 }
80 if (printer == NULL && (printer = getenv("PRINTER")) == NULL)
81 printer = DEFLP;
82
83 rmjob();
84}
85
54266d1f 86static
2a4e9264
RC
87usage()
88{
89 printf("usage: lprm [-] [-Pprinter] [[job #] [user] ...]\n");
90 exit(2);
91}