diff --git a/Userland/Utilities/mkdir.cpp b/Userland/Utilities/mkdir.cpp index d464aa2a36..82dd016c92 100644 --- a/Userland/Utilities/mkdir.cpp +++ b/Userland/Utilities/mkdir.cpp @@ -2,6 +2,7 @@ * Copyright (c) 2018-2020, Andreas Kling * Copyright (c) 2020-2021, Linus Groh * Copyright (c) 2021, Xavier Defrang + * Copyright (c) 2023, Tim Ledbetter * * SPDX-License-Identifier: BSD-2-Clause */ @@ -12,17 +13,14 @@ #include #include #include -#include -#include -#include ErrorOr serenity_main(Main::Arguments arguments) { TRY(Core::System::pledge("stdio cpath rpath")); bool create_parents = false; - DeprecatedString mode_string; - Vector directories; + StringView mode_string; + Vector directories; Core::ArgsParser args_parser; args_parser.add_option(create_parents, "Create parent directories if they don't exist", "parents", 'p'); @@ -46,8 +44,9 @@ ErrorOr serenity_main(Main::Arguments arguments) for (auto& directory : directories) { LexicalPath lexical_path(directory); if (!create_parents) { - if (mkdir(lexical_path.string().characters(), mask.apply(mask_reference_mode)) < 0) { - perror("mkdir"); + auto maybe_error = Core::System::mkdir(lexical_path.string(), mask.apply(mask_reference_mode)); + if (maybe_error.is_error()) { + warnln("mkdir: {}", strerror(maybe_error.error().code())); has_errors = true; } continue; @@ -63,12 +62,12 @@ ErrorOr serenity_main(Main::Arguments arguments) auto& part = parts[idx]; path_builder.append(part); - auto path = path_builder.to_deprecated_string(); + auto path = path_builder.string_view(); - struct stat st; - if (stat(path.characters(), &st) < 0) { - if (errno != ENOENT) { - perror("stat"); + auto stat_or_error = Core::System::stat(path); + if (stat_or_error.is_error()) { + if (stat_or_error.error().code() != ENOENT) { + warnln("mkdir: {}", strerror(stat_or_error.error().code())); has_errors = true; break; } @@ -76,13 +75,14 @@ ErrorOr serenity_main(Main::Arguments arguments) bool is_final = (idx == (num_parts - 1)); mode_t mode = is_final ? mask.apply(mask_reference_mode) : default_mode; - if (mkdir(path.characters(), mode) < 0) { - perror("mkdir"); + auto maybe_error = Core::System::mkdir(path, mode); + if (maybe_error.is_error()) { + warnln("mkdir: {}", strerror(maybe_error.error().code())); has_errors = true; break; } } else { - if (!S_ISDIR(st.st_mode)) { + if (!S_ISDIR(stat_or_error.value().st_mode)) { warnln("mkdir: cannot create directory '{}': not a directory", path); has_errors = true; break;