mkfifo.c 948 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  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. USE_MKFIFO(NEWTOY(mkfifo, "<1"USE_MKFIFO_Z("Z:")"m:", TOYFLAG_USR|TOYFLAG_BIN))
  7. config MKFIFO
  8. bool "mkfifo"
  9. default y
  10. help
  11. usage: mkfifo [NAME...]
  12. Create FIFOs (named pipes).
  13. config MKFIFO_Z
  14. bool
  15. default y
  16. depends on MKFIFO && !TOYBOX_LSM_NONE
  17. help
  18. usage: mkfifo [-Z CONTEXT]
  19. -Z Security context
  20. */
  21. #define FOR_mkfifo
  22. #include "toys.h"
  23. GLOBALS(
  24. char *m;
  25. char *Z;
  26. mode_t mode;
  27. )
  28. void mkfifo_main(void)
  29. {
  30. char **s;
  31. TT.mode = 0666;
  32. if (toys.optflags & FLAG_m) TT.mode = string_to_mode(TT.m, 0);
  33. if (CFG_MKFIFO_Z && (toys.optflags&FLAG_Z))
  34. if (0>lsm_set_create(TT.Z))
  35. perror_exit("-Z '%s' failed", TT.Z);
  36. for (s = toys.optargs; *s; s++)
  37. if (mknod(*s, S_IFIFO | TT.mode, 0) < 0) perror_msg_raw(*s);
  38. }