Mercurial > hg > toybox
changeset 168:14fa82969ea3
Tighten up error handling, add a umask() call so -m 123 actually works.
author | Rob Landley <rob@landley.net> |
---|---|
date | Mon, 19 Nov 2007 07:07:50 -0600 |
parents | f16c8e5e9435 |
children | 56034b162074 |
files | toys/mkfifo.c |
diffstat | 1 files changed, 6 insertions(+), 16 deletions(-) [+] |
line wrap: on
line diff
--- a/toys/mkfifo.c Mon Nov 19 01:51:00 2007 -0600 +++ b/toys/mkfifo.c Mon Nov 19 07:07:50 2007 -0600 @@ -1,6 +1,8 @@ /* vi: set sw=4 ts=4: */ /* * mkfifo.c: Create a named pipe. + * + * See http://www.opengroup.org/onlinepubs/009695399/utilities/mkfifo.html */ #include "toys.h" @@ -12,25 +14,13 @@ mode_t mode; if (toys.optflags) { - long temp; char *end; - int len = strlen(toy.mkfifo.mode); - temp = strtol(toy.mkfifo.mode, &end, 8); - switch (temp) { - case LONG_MAX: - case LONG_MIN: - case 0: - if (!errno) - break; - error_exit("Invalid mode"); - } - if (temp > 0777 || *end || len < 3 || len > 4) + mode = (mode_t)strtol(toy.mkfifo.mode, &end, 8); + if (end<=toy.mkfifo.mode || *end || mode<0 || mode>0777) error_exit("Invalid mode"); - mode = (mode_t)temp; - } else { - mode = 0644; - } + } else mode = 0644; + umask(0); for (i = 0; (arg = toys.optargs[i]); i++) if (mkfifo(arg, mode)) perror_exit(arg);