X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=coreutils%2Fmkfifo.c;h=77e0e6dd8fdb02c6cea84bdbe2d4f2f9204207b6;hb=0a7c8ef6e220b5f8fff4f2cb0af630255a2a6a58;hp=c74402d4c992d14f4e02d0422a1f0c9f3c3729f5;hpb=e49d5ecbbe51718fa925b6890a735e5937cc2aa2;p=oweals%2Fbusybox.git diff --git a/coreutils/mkfifo.c b/coreutils/mkfifo.c index c74402d4c..77e0e6dd8 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,50 +20,32 @@ * */ -#include "internal.h" -#include -#include -#include -#include - -static const char mkfifo_usage[] = "mkfifo [OPTIONS] name\n\n" - "Create the named fifo\n\n" +/* BB_AUDIT SUSv3 compliant */ +/* http://www.opengroup.org/onlinepubs/007904975/utilities/mkfifo.html */ - "Options:\n" - "\t-m\tcreate the fifo with the specified mode; default = a=rw-umask\n"; +#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 != '-') - usage(mkfifo_usage); - thisarg = *argv; - thisarg++; - switch (*thisarg) { - case 'm': - argc--; - argv++; - parse_mode(*argv, &mode); - break; - default: - usage(mkfifo_usage); - } - argc--; - argv++; - } - if (argc < 1) - usage(mkfifo_usage); - if (mkfifo(*argv, mode) < 0) { - perror("mkfifo"); - exit(255); - } else { - exit(TRUE); + if (!*(argv += optind)) { + bb_show_usage(); } + + do { + if (mkfifo(*argv, mode) < 0) { + bb_perror_msg("%s", *argv); /* Avoid multibyte problems. */ + retval = EXIT_FAILURE; + } + } while (*++argv); + + return retval; }