|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1990 Regents of the University of California. ! 3: * All rights reserved. ! 4: * ! 5: * Redistribution and use in source and binary forms are permitted ! 6: * provided that: (1) source distributions retain this entire copyright ! 7: * notice and comment, and (2) distributions including binaries display ! 8: * the following acknowledgement: ``This product includes software ! 9: * developed by the University of California, Berkeley and its contributors'' ! 10: * in the documentation or other materials provided with the distribution ! 11: * and in all advertising materials mentioning features or use of this ! 12: * software. Neither the name of the University nor the names of its ! 13: * contributors may be used to endorse or promote products derived ! 14: * from this software without specific prior written permission. ! 15: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR ! 16: * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED ! 17: * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ! 18: */ ! 19: ! 20: #ifndef lint ! 21: char copyright[] = ! 22: "@(#) Copyright (c) 1990 Regents of the University of California.\n\ ! 23: All rights reserved.\n"; ! 24: #endif /* not lint */ ! 25: ! 26: #ifndef lint ! 27: static char sccsid[] = "@(#)mkfifo.c 5.3 (Berkeley) 6/1/90"; ! 28: #endif /* not lint */ ! 29: ! 30: #include <sys/types.h> ! 31: #include <sys/stat.h> ! 32: #include <errno.h> ! 33: #include <stdio.h> ! 34: #include <string.h> ! 35: ! 36: main(argc, argv) ! 37: int argc; ! 38: char **argv; ! 39: { ! 40: extern int errno, optind; ! 41: int ch, exitval, pflag; ! 42: ! 43: pflag = 0; ! 44: while ((ch = getopt(argc, argv, "p")) != EOF) ! 45: switch(ch) { ! 46: case 'p': ! 47: pflag = 1; ! 48: break; ! 49: case '?': ! 50: default: ! 51: usage(); ! 52: } ! 53: ! 54: if (!*(argv += optind)) ! 55: usage(); ! 56: ! 57: for (exitval = 0; *argv; ++argv) { ! 58: if (pflag && build(*argv)) { ! 59: exitval |= 1; ! 60: continue; ! 61: } ! 62: if (mkfifo(*argv, 0777) < 0) { ! 63: (void)fprintf(stderr, "mkfifo: %s: %s\n", ! 64: *argv, strerror(errno)); ! 65: exitval |= 1; ! 66: } ! 67: } ! 68: exit(exitval); ! 69: } ! 70: ! 71: build(path) ! 72: char *path; ! 73: { ! 74: register char *p; ! 75: struct stat sb; ! 76: ! 77: for (p = path; *p; p++) { ! 78: if (*p != '/') ! 79: continue; ! 80: if (stat(path, &sb)) { ! 81: if (errno != ENOENT || mkdir(path, 0777) < 0) { ! 82: (void)fprintf(stderr, "mkdir: %s: %s\n", ! 83: path, strerror(errno)); ! 84: return(1); ! 85: } ! 86: } ! 87: *p = '/'; ! 88: } ! 89: return(0); ! 90: } ! 91: ! 92: usage() ! 93: { ! 94: (void)fprintf(stderr, "usage: mkfifo [-p] fifoname ...\n"); ! 95: exit(1); ! 96: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.