|
|
1.1 ! root 1: #ifndef lint ! 2: static char sccsid[] = "@(#)lprm.c 4.5 (Berkeley) 7/17/83"; ! 3: #endif ! 4: ! 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: */ ! 21: char *user[MAXUSERS]; /* users to process */ ! 22: int users; /* # of users in user array */ ! 23: int requ[MAXREQUESTS]; /* job number of spool entries */ ! 24: int requests; /* # of spool requests */ ! 25: char *person; /* name of person doing lprm */ ! 26: ! 27: static char luser[16]; /* buffer for person */ ! 28: ! 29: struct passwd *getpwuid(); ! 30: ! 31: main(argc, argv) ! 32: char *argv[]; ! 33: { ! 34: register char *arg; ! 35: struct passwd *p; ! 36: struct direct **files; ! 37: int nitems, assasinated = 0; ! 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': ! 51: if (arg[2]) ! 52: printer = &arg[2]; ! 53: else if (argc > 1) { ! 54: argc--; ! 55: printer = *++argv; ! 56: } ! 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: ! 86: static ! 87: usage() ! 88: { ! 89: printf("usage: lprm [-] [-Pprinter] [[job #] [user] ...]\n"); ! 90: exit(2); ! 91: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.