blob: 942dfdc5b21847f5204f395ad3806fde1ff35b4f [file] [log] [blame]
Rob Landley7aa651a2012-11-13 17:14:08 -06001/* mkfifo.c - Create FIFOs (named pipes)
Georgi Chorbadzhiyskif656fc92012-03-06 20:58:13 -06002 *
3 * Copyright 2012 Georgi Chorbadzhiyski <georgi@unixsol.org>
4 *
Rob Landleyf91b7c82012-08-25 18:08:51 -05005 * See http://opengroup.org/onlinepubs/9699919799/utilities/mkfifo.html
Georgi Chorbadzhiyskif656fc92012-03-06 20:58:13 -06006
Sameer Pradhan666b89d2015-07-09 17:19:03 -05007USE_MKFIFO(NEWTOY(mkfifo, "<1"USE_MKFIFO_Z("Z:")"m:", TOYFLAG_USR|TOYFLAG_BIN))
Georgi Chorbadzhiyskif656fc92012-03-06 20:58:13 -06008
9config MKFIFO
Rob Landley7aa651a2012-11-13 17:14:08 -060010 bool "mkfifo"
11 default y
12 help
Rob Landley5ea91672015-06-29 01:31:34 -050013 usage: mkfifo [NAME...]
Georgi Chorbadzhiyskif656fc92012-03-06 20:58:13 -060014
Rob Landley7aa651a2012-11-13 17:14:08 -060015 Create FIFOs (named pipes).
Rob Landley5ea91672015-06-29 01:31:34 -050016
17config 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 Chorbadzhiyskif656fc92012-03-06 20:58:13 -060025*/
26
Rob Landleyc0e56ed2012-10-08 00:02:30 -050027#define FOR_mkfifo
Georgi Chorbadzhiyskif656fc92012-03-06 20:58:13 -060028#include "toys.h"
29
Rob Landleyc0e56ed2012-10-08 00:02:30 -050030GLOBALS(
Rob Landley7aa651a2012-11-13 17:14:08 -060031 char *m_string;
Rob Landley5ea91672015-06-29 01:31:34 -050032 char *Z;
33
Rob Landley7aa651a2012-11-13 17:14:08 -060034 mode_t mode;
Rob Landleye430db22012-03-06 21:19:57 -060035)
36
Georgi Chorbadzhiyskif656fc92012-03-06 20:58:13 -060037void mkfifo_main(void)
38{
Rob Landley7aa651a2012-11-13 17:14:08 -060039 char **s;
Rob Landleye430db22012-03-06 21:19:57 -060040
Rob Landley7aa651a2012-11-13 17:14:08 -060041 TT.mode = 0666;
Felix Jandad0d0f402012-12-27 17:52:14 +010042 if (toys.optflags & FLAG_m) TT.mode = string_to_mode(TT.m_string, 0);
Rob Landleye430db22012-03-06 21:19:57 -060043
Rob Landley5ea91672015-06-29 01:31:34 -050044 if (CFG_MKFIFO_Z && (toys.optflags&FLAG_Z))
45 if (0>lsm_set_create(TT.Z))
Elliott Hughes8c0d2d22015-07-01 14:56:07 -050046 perror_exit("-Z '%s' failed", TT.Z);
Rob Landley5ea91672015-06-29 01:31:34 -050047
Rob Landley662a2672013-01-02 02:00:35 -060048 for (s = toys.optargs; *s; s++)
Rob Landleyd3a435e2016-01-05 22:26:58 -060049 if (mknod(*s, S_IFIFO | TT.mode, 0) < 0) perror_msg_raw(*s);
Georgi Chorbadzhiyskif656fc92012-03-06 20:58:13 -060050}