summaryrefslogtreecommitdiff
path: root/src/mkfifo.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mkfifo.c')
-rw-r--r--src/mkfifo.c11
1 files changed, 4 insertions, 7 deletions
diff --git a/src/mkfifo.c b/src/mkfifo.c
index a579dbe33..5a9b7efab 100644
--- a/src/mkfifo.c
+++ b/src/mkfifo.c
@@ -75,7 +75,6 @@ int
main (int argc, char **argv)
{
mode_t newmode;
- struct mode_change *change;
const char *specified_mode;
int exit_status = EXIT_SUCCESS;
int optc;
@@ -116,13 +115,11 @@ main (int argc, char **argv)
newmode = (S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);
if (specified_mode)
{
- change = mode_compile (specified_mode, MODE_MASK_ALL);
- if (change == MODE_INVALID)
+ struct mode_change *change = mode_compile (specified_mode);
+ if (!change)
error (EXIT_FAILURE, 0, _("invalid mode"));
- else if (change == MODE_MEMORY_EXHAUSTED)
- xalloc_die ();
- newmode = mode_adjust (newmode, change);
- umask (0);
+ newmode = mode_adjust (newmode, change, umask (0));
+ mode_free (change);
}
for (; optind < argc; ++optind)