1*cf5a6c84SAndroid Build Coastguard Worker /* mkfifo.c - Create FIFOs (named pipes) 2*cf5a6c84SAndroid Build Coastguard Worker * 3*cf5a6c84SAndroid Build Coastguard Worker * Copyright 2012 Georgi Chorbadzhiyski <[email protected]> 4*cf5a6c84SAndroid Build Coastguard Worker * 5*cf5a6c84SAndroid Build Coastguard Worker * See http://opengroup.org/onlinepubs/9699919799/utilities/mkfifo.html 6*cf5a6c84SAndroid Build Coastguard Worker 7*cf5a6c84SAndroid Build Coastguard Worker USE_MKFIFO(NEWTOY(mkfifo, "<1"USE_MKFIFO_Z("Z:")"m:", TOYFLAG_USR|TOYFLAG_BIN)) 8*cf5a6c84SAndroid Build Coastguard Worker 9*cf5a6c84SAndroid Build Coastguard Worker config MKFIFO 10*cf5a6c84SAndroid Build Coastguard Worker bool "mkfifo" 11*cf5a6c84SAndroid Build Coastguard Worker default y 12*cf5a6c84SAndroid Build Coastguard Worker help 13*cf5a6c84SAndroid Build Coastguard Worker usage: mkfifo [NAME...] 14*cf5a6c84SAndroid Build Coastguard Worker 15*cf5a6c84SAndroid Build Coastguard Worker Create FIFOs (named pipes). 16*cf5a6c84SAndroid Build Coastguard Worker 17*cf5a6c84SAndroid Build Coastguard Worker config MKFIFO_Z 18*cf5a6c84SAndroid Build Coastguard Worker bool 19*cf5a6c84SAndroid Build Coastguard Worker default y 20*cf5a6c84SAndroid Build Coastguard Worker depends on MKFIFO && !TOYBOX_LSM_NONE 21*cf5a6c84SAndroid Build Coastguard Worker help 22*cf5a6c84SAndroid Build Coastguard Worker usage: mkfifo [-Z CONTEXT] 23*cf5a6c84SAndroid Build Coastguard Worker 24*cf5a6c84SAndroid Build Coastguard Worker -Z Security context 25*cf5a6c84SAndroid Build Coastguard Worker */ 26*cf5a6c84SAndroid Build Coastguard Worker 27*cf5a6c84SAndroid Build Coastguard Worker #define FOR_mkfifo 28*cf5a6c84SAndroid Build Coastguard Worker #include "toys.h" 29*cf5a6c84SAndroid Build Coastguard Worker 30*cf5a6c84SAndroid Build Coastguard Worker GLOBALS( 31*cf5a6c84SAndroid Build Coastguard Worker char *m, *Z; 32*cf5a6c84SAndroid Build Coastguard Worker 33*cf5a6c84SAndroid Build Coastguard Worker mode_t mode; 34*cf5a6c84SAndroid Build Coastguard Worker ) 35*cf5a6c84SAndroid Build Coastguard Worker mkfifo_main(void)36*cf5a6c84SAndroid Build Coastguard Workervoid mkfifo_main(void) 37*cf5a6c84SAndroid Build Coastguard Worker { 38*cf5a6c84SAndroid Build Coastguard Worker char **s; 39*cf5a6c84SAndroid Build Coastguard Worker 40*cf5a6c84SAndroid Build Coastguard Worker TT.mode = 0666; 41*cf5a6c84SAndroid Build Coastguard Worker if (FLAG(m)) TT.mode = string_to_mode(TT.m, 0); 42*cf5a6c84SAndroid Build Coastguard Worker 43*cf5a6c84SAndroid Build Coastguard Worker if (CFG_MKFIFO_Z && FLAG(Z)) 44*cf5a6c84SAndroid Build Coastguard Worker if (0>lsm_set_create(TT.Z)) 45*cf5a6c84SAndroid Build Coastguard Worker perror_exit("-Z '%s' failed", TT.Z); 46*cf5a6c84SAndroid Build Coastguard Worker 47*cf5a6c84SAndroid Build Coastguard Worker for (s = toys.optargs; *s; s++) 48*cf5a6c84SAndroid Build Coastguard Worker if (mknod(*s, S_IFIFO | TT.mode, 0) < 0) perror_msg_raw(*s); 49*cf5a6c84SAndroid Build Coastguard Worker } 50