Rob Landley | 7aa651a | 2012-11-13 17:14:08 -0600 | [diff] [blame] | 1 | /* mkfifo.c - Create FIFOs (named pipes) |
Georgi Chorbadzhiyski | f656fc9 | 2012-03-06 20:58:13 -0600 | [diff] [blame] | 2 | * |
| 3 | * Copyright 2012 Georgi Chorbadzhiyski <georgi@unixsol.org> |
| 4 | * |
Rob Landley | f91b7c8 | 2012-08-25 18:08:51 -0500 | [diff] [blame] | 5 | * See http://opengroup.org/onlinepubs/9699919799/utilities/mkfifo.html |
Georgi Chorbadzhiyski | f656fc9 | 2012-03-06 20:58:13 -0600 | [diff] [blame] | 6 | |
Sameer Pradhan | 666b89d | 2015-07-09 17:19:03 -0500 | [diff] [blame] | 7 | USE_MKFIFO(NEWTOY(mkfifo, "<1"USE_MKFIFO_Z("Z:")"m:", TOYFLAG_USR|TOYFLAG_BIN)) |
Georgi Chorbadzhiyski | f656fc9 | 2012-03-06 20:58:13 -0600 | [diff] [blame] | 8 | |
| 9 | config MKFIFO |
Rob Landley | 7aa651a | 2012-11-13 17:14:08 -0600 | [diff] [blame] | 10 | bool "mkfifo" |
| 11 | default y |
| 12 | help |
Rob Landley | 5ea9167 | 2015-06-29 01:31:34 -0500 | [diff] [blame] | 13 | usage: mkfifo [NAME...] |
Georgi Chorbadzhiyski | f656fc9 | 2012-03-06 20:58:13 -0600 | [diff] [blame] | 14 | |
Rob Landley | 7aa651a | 2012-11-13 17:14:08 -0600 | [diff] [blame] | 15 | Create FIFOs (named pipes). |
Rob Landley | 5ea9167 | 2015-06-29 01:31:34 -0500 | [diff] [blame] | 16 | |
| 17 | config MKFIFO_Z |
| 18 | bool |
| 19 | default y |
| 20 | depends on MKFIFO && !TOYBOX_LSM_NONE |
| 21 | help |
| 22 | usage: mkfifo [-Z CONTEXT] |
| 23 | |
| 24 | -Z Security context |
Georgi Chorbadzhiyski | f656fc9 | 2012-03-06 20:58:13 -0600 | [diff] [blame] | 25 | */ |
| 26 | |
Rob Landley | c0e56ed | 2012-10-08 00:02:30 -0500 | [diff] [blame] | 27 | #define FOR_mkfifo |
Georgi Chorbadzhiyski | f656fc9 | 2012-03-06 20:58:13 -0600 | [diff] [blame] | 28 | #include "toys.h" |
| 29 | |
Rob Landley | c0e56ed | 2012-10-08 00:02:30 -0500 | [diff] [blame] | 30 | GLOBALS( |
Rob Landley | 7aa651a | 2012-11-13 17:14:08 -0600 | [diff] [blame] | 31 | char *m_string; |
Rob Landley | 5ea9167 | 2015-06-29 01:31:34 -0500 | [diff] [blame] | 32 | char *Z; |
| 33 | |
Rob Landley | 7aa651a | 2012-11-13 17:14:08 -0600 | [diff] [blame] | 34 | mode_t mode; |
Rob Landley | e430db2 | 2012-03-06 21:19:57 -0600 | [diff] [blame] | 35 | ) |
| 36 | |
Georgi Chorbadzhiyski | f656fc9 | 2012-03-06 20:58:13 -0600 | [diff] [blame] | 37 | void mkfifo_main(void) |
| 38 | { |
Rob Landley | 7aa651a | 2012-11-13 17:14:08 -0600 | [diff] [blame] | 39 | char **s; |
Rob Landley | e430db2 | 2012-03-06 21:19:57 -0600 | [diff] [blame] | 40 | |
Rob Landley | 7aa651a | 2012-11-13 17:14:08 -0600 | [diff] [blame] | 41 | TT.mode = 0666; |
Felix Janda | d0d0f40 | 2012-12-27 17:52:14 +0100 | [diff] [blame] | 42 | if (toys.optflags & FLAG_m) TT.mode = string_to_mode(TT.m_string, 0); |
Rob Landley | e430db2 | 2012-03-06 21:19:57 -0600 | [diff] [blame] | 43 | |
Rob Landley | 5ea9167 | 2015-06-29 01:31:34 -0500 | [diff] [blame] | 44 | if (CFG_MKFIFO_Z && (toys.optflags&FLAG_Z)) |
| 45 | if (0>lsm_set_create(TT.Z)) |
Elliott Hughes | 8c0d2d2 | 2015-07-01 14:56:07 -0500 | [diff] [blame] | 46 | perror_exit("-Z '%s' failed", TT.Z); |
Rob Landley | 5ea9167 | 2015-06-29 01:31:34 -0500 | [diff] [blame] | 47 | |
Rob Landley | 662a267 | 2013-01-02 02:00:35 -0600 | [diff] [blame] | 48 | for (s = toys.optargs; *s; s++) |
Rob Landley | d3a435e | 2016-01-05 22:26:58 -0600 | [diff] [blame] | 49 | if (mknod(*s, S_IFIFO | TT.mode, 0) < 0) perror_msg_raw(*s); |
Georgi Chorbadzhiyski | f656fc9 | 2012-03-06 20:58:13 -0600 | [diff] [blame] | 50 | } |