|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1983 Regents of the University of California. ! 3: * All rights reserved. ! 4: * ! 5: * Redistribution and use in source and binary forms are permitted provided ! 6: * that: (1) source distributions retain this entire copyright notice and ! 7: * comment, and (2) distributions including binaries display the following ! 8: * acknowledgement: ``This product includes software developed by the ! 9: * University of California, Berkeley and its contributors'' in the ! 10: * documentation or other materials provided with the distribution and in ! 11: * all advertising materials mentioning features or use of this software. ! 12: * Neither the name of the University nor the names of its contributors may ! 13: * be used to endorse or promote products derived from this software without ! 14: * specific prior written permission. ! 15: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED ! 16: * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF ! 17: * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ! 18: */ ! 19: ! 20: #ifndef lint ! 21: static char sccsid[] = "@(#)startdaemon.c 5.6 (Berkeley) 6/1/90"; ! 22: #endif /* not lint */ ! 23: ! 24: /* ! 25: * Tell the printer daemon that there are new files in the spool directory. ! 26: */ ! 27: ! 28: #include <sys/types.h> ! 29: #include <sys/socket.h> ! 30: #include <sys/un.h> ! 31: #include <stdio.h> ! 32: #include "lp.local.h" ! 33: #include "pathnames.h" ! 34: ! 35: startdaemon(printer) ! 36: char *printer; ! 37: { ! 38: struct sockaddr_un sun; ! 39: register int s, n; ! 40: char buf[BUFSIZ]; ! 41: ! 42: s = socket(AF_UNIX, SOCK_STREAM, 0); ! 43: if (s < 0) { ! 44: perr("socket"); ! 45: return(0); ! 46: } ! 47: sun.sun_family = AF_UNIX; ! 48: strcpy(sun.sun_path, _PATH_SOCKETNAME); ! 49: if (connect(s, &sun, strlen(sun.sun_path) + 2) < 0) { ! 50: perr("connect"); ! 51: (void) close(s); ! 52: return(0); ! 53: } ! 54: (void) sprintf(buf, "\1%s\n", printer); ! 55: n = strlen(buf); ! 56: if (write(s, buf, n) != n) { ! 57: perr("write"); ! 58: (void) close(s); ! 59: return(0); ! 60: } ! 61: if (read(s, buf, 1) == 1) { ! 62: if (buf[0] == '\0') { /* everything is OK */ ! 63: (void) close(s); ! 64: return(1); ! 65: } ! 66: putchar(buf[0]); ! 67: } ! 68: while ((n = read(s, buf, sizeof(buf))) > 0) ! 69: fwrite(buf, 1, n, stdout); ! 70: (void) close(s); ! 71: return(0); ! 72: } ! 73: ! 74: static ! 75: perr(msg) ! 76: char *msg; ! 77: { ! 78: extern int errno; ! 79: extern char *name; ! 80: char *strerror(); ! 81: ! 82: (void)printf("%s: %s: %s\n", name, msg, strerror(errno)); ! 83: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.