|
|
1.1 ! root 1: /* ! 2: * Cause the line printer daemon to ! 3: * skip the current listing. ! 4: * With `-r' option, make it restart the ! 5: * current listing. ! 6: * SIGTRAP is used for skipping; SIGREST for restarting. ! 7: * (NOTE: this should be setuid to daemon). ! 8: */ ! 9: ! 10: #include <stdio.h> ! 11: #include <signal.h> ! 12: ! 13: #ifdef LASER ! 14: char lockfile[] = "/usr/spool/hpd/dpid"; ! 15: #else ! 16: char lockfile[] = "/usr/spool/lpd/dpid"; ! 17: #endif ! 18: char *argv0; ! 19: ! 20: main(argc, argv) ! 21: char *argv[]; ! 22: { ! 23: int pid; ! 24: register int fd; ! 25: register int sig = SIGTRAP; ! 26: ! 27: argv0 = argv[0]; ! 28: if (argc>1 && *argv[1]=='-') { ! 29: if (argv[1][1]=='r' && argv[1][2]=='\0') ! 30: sig = SIGREST; ! 31: else ! 32: usage(); ! 33: } ! 34: if ((fd = open(lockfile, 0)) < 0 ! 35: || read(fd, &pid, sizeof pid) != sizeof (pid) ! 36: || kill(pid, sig) < 0) { ! 37: fprintf(stderr, "Line printer daemon not active\n"); ! 38: exit(1); ! 39: } ! 40: } ! 41: ! 42: usage() ! 43: { ! 44: fprintf(stderr, "Usage: %s [-r]\n", argv0); ! 45: exit(1); ! 46: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.