diff --git a/Userland/Utilities/mkfifo.cpp b/Userland/Utilities/mkfifo.cpp index 6b683c3c0f..3cd722997e 100644 --- a/Userland/Utilities/mkfifo.cpp +++ b/Userland/Utilities/mkfifo.cpp @@ -5,6 +5,7 @@ */ #include +#include #include #include #include @@ -13,14 +14,21 @@ ErrorOr serenity_main(Main::Arguments arguments) { TRY(Core::System::pledge("stdio dpath")); + String mode_string; + mode_t mask_reference_mode = 0777; mode_t mode = 0666; Vector paths; Core::ArgsParser args_parser; - // FIXME: add -m for file modes + args_parser.add_option(mode_string, "Set FIFO permissions", "mode", 'm', "mode"); args_parser.add_positional_argument(paths, "Paths of FIFOs to create", "paths"); args_parser.parse(arguments); + if (!mode_string.is_empty()) { + auto mask = TRY(Core::FilePermissionsMask::parse(mode_string)); + mode = mask.apply(mask_reference_mode); + } + int exit_code = 0; for (auto path : paths) { auto error_or_void = Core::System::mkfifo(path, mode);