1/* mkfifo.c - Create FIFOs (named pipes)
2 *
3 * Copyright 2012 Georgi Chorbadzhiyski <georgi@unixsol.org>
4 *
5 * See http://opengroup.org/onlinepubs/9699919799/utilities/mkfifo.html
6
7USE_MKFIFO(NEWTOY(mkfifo, "<1"USE_MKFIFO_Z("Z:")"m:", TOYFLAG_USR|TOYFLAG_BIN))
8
9config MKFIFO
10  bool "mkfifo"
11  default y
12  help
13    usage: mkfifo [NAME...]
14
15    Create FIFOs (named pipes).
16
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
25*/
26
27#define FOR_mkfifo
28#include "toys.h"
29
30GLOBALS(
31  char *m_string;
32  char *Z;
33
34  mode_t mode;
35)
36
37void mkfifo_main(void)
38{
39  char **s;
40
41  TT.mode = 0666;
42  if (toys.optflags & FLAG_m) TT.mode = string_to_mode(TT.m_string, 0);
43
44  if (CFG_MKFIFO_Z && (toys.optflags&FLAG_Z))
45    if (0>lsm_set_create(TT.Z))
46      perror_exit("-Z '%s' failed", TT.Z);
47
48  for (s = toys.optargs; *s; s++)
49    if (mknod(*s, S_IFIFO | TT.mode, 0) < 0) perror_msg_raw(*s);
50}
51