1/* vi: set sw=4 ts=4: */ 2/* 3 * mkfifo implementation for busybox 4 * 5 * Copyright (C) 2003 Manuel Novoa III <mjn3@codepoet.org> 6 * 7 * Licensed under GPLv2 or later, see file LICENSE in this source tree. 8 */ 9 10/* BB_AUDIT SUSv3 compliant */ 11/* http://www.opengroup.org/onlinepubs/007904975/utilities/mkfifo.html */ 12 13//usage:#define mkfifo_trivial_usage 14//usage: "[-m MODE] " IF_SELINUX("[-Z] ") "NAME" 15//usage:#define mkfifo_full_usage "\n\n" 16//usage: "Create named pipe\n" 17//usage: "\n -m MODE Mode (default a=rw)" 18//usage: IF_SELINUX( 19//usage: "\n -Z Set security context" 20//usage: ) 21 22#include "libbb.h" 23#include "libcoreutils/coreutils.h" 24 25/* This is a NOEXEC applet. Be very careful! */ 26 27int mkfifo_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; 28int mkfifo_main(int argc UNUSED_PARAM, char **argv) 29{ 30 mode_t mode; 31 int retval = EXIT_SUCCESS; 32 33 mode = getopt_mk_fifo_nod(argv); 34 35 argv += optind; 36 if (!*argv) { 37 bb_show_usage(); 38 } 39 40 do { 41 if (mkfifo(*argv, mode) < 0) { 42 bb_simple_perror_msg(*argv); /* Avoid multibyte problems. */ 43 retval = EXIT_FAILURE; 44 } 45 } while (*++argv); 46 47 return retval; 48} 49