mkfifo.c (757B)
1 /* See LICENSE file for copyright and license details. */ 2 #include <sys/stat.h> 3 4 #include <stdlib.h> 5 6 #include "util.h" 7 8 static void 9 usage(void) 10 { 11 eprintf("usage: %s [-m mode] name ...\n", argv0); 12 } 13 14 int 15 main(int argc, char *argv[]) 16 { 17 mode_t mode = 0, mask; 18 int mflag = 0, ret = 0; 19 20 ARGBEGIN { 21 case 'm': 22 mflag = 1; 23 mask = getumask(); 24 mode = parsemode(EARGF(usage()), mode, mask); 25 break; 26 default: 27 usage(); 28 } ARGEND 29 30 if (!argc) 31 usage(); 32 33 for (; *argv; argc--, argv++) { 34 if (mkfifo(*argv, S_IRUSR | S_IWUSR | S_IRGRP | 35 S_IWGRP | S_IROTH | S_IWOTH) < 0) { 36 weprintf("mkfifo %s:", *argv); 37 ret = 1; 38 } else if (mflag) { 39 if (chmod(*argv, mode) < 0) { 40 weprintf("chmod %s:", *argv); 41 ret = 1; 42 } 43 } 44 } 45 46 return ret; 47 }