From cad5364599eb5062d59e0c397ed638ddd61a8d5d Mon Sep 17 00:00:00 2001 From: Manuel Novoa III Date: Wed, 19 Mar 2003 09:13:01 +0000 Subject: Major coreutils update. --- coreutils/mkfifo.c | 53 ++++++++++++++++++++++------------------------------- 1 file changed, 22 insertions(+), 31 deletions(-) (limited to 'coreutils/mkfifo.c') diff --git a/coreutils/mkfifo.c b/coreutils/mkfifo.c index ca217fa..77e0e6d 100644 --- a/coreutils/mkfifo.c +++ b/coreutils/mkfifo.c @@ -1,8 +1,8 @@ /* vi: set sw=4 ts=4: */ /* - * Mini mkfifo implementation for busybox + * mkfifo implementation for busybox * - * Copyright (C) 1999 by Randolph Chung + * Copyright (C) 2003 Manuel Novoa III * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -20,41 +20,32 @@ * */ -#include -#include -#include +/* BB_AUDIT SUSv3 compliant */ +/* http://www.opengroup.org/onlinepubs/007904975/utilities/mkfifo.html */ + #include +#include +#include #include "busybox.h" +#include "libcoreutils/coreutils.h" extern int mkfifo_main(int argc, char **argv) { - char *thisarg; - mode_t mode = 0666; + mode_t mode; + int retval = EXIT_SUCCESS; - argc--; - argv++; + mode = getopt_mk_fifo_nod(argc, argv); - /* Parse any options */ - while (argc > 1) { - if (**argv != '-') - show_usage(); - thisarg = *argv; - thisarg++; - switch (*thisarg) { - case 'm': - argc--; - argv++; - parse_mode(*argv, &mode); - break; - default: - show_usage(); - } - argc--; - argv++; + if (!*(argv += optind)) { + bb_show_usage(); } - if (argc < 1 || *argv[0] == '-') - show_usage(); - if (mkfifo(*argv, mode) < 0) - perror_msg_and_die("mkfifo"); - return EXIT_SUCCESS; + + do { + if (mkfifo(*argv, mode) < 0) { + bb_perror_msg("%s", *argv); /* Avoid multibyte problems. */ + retval = EXIT_FAILURE; + } + } while (*++argv); + + return retval; } -- cgit v1.1