mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 05:48:12 +00:00
LibCore: Remove the force
parameter from File::remove
About half of the usages were not using `force` anyways, and the other half presumably just got confused about what "force" really means in this context (which is "ignore nonexistent files"). The only 'legitimate' user, which is `rm`, instead now handles this completely internally instead.
This commit is contained in:
parent
355e761a02
commit
9805f73704
10 changed files with 22 additions and 20 deletions
|
@ -135,7 +135,7 @@ static TitleAndText build_cpu_registers(const ELF::Core::ThreadInfo& thread_info
|
||||||
|
|
||||||
static void unlink_coredump(StringView const& coredump_path)
|
static void unlink_coredump(StringView const& coredump_path)
|
||||||
{
|
{
|
||||||
if (Core::File::remove(coredump_path, Core::File::RecursionMode::Disallowed, false).is_error())
|
if (Core::File::remove(coredump_path, Core::File::RecursionMode::Disallowed).is_error())
|
||||||
dbgln("Failed deleting coredump file");
|
dbgln("Failed deleting coredump file");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -364,7 +364,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
||||||
while (try_again) {
|
while (try_again) {
|
||||||
try_again = false;
|
try_again = false;
|
||||||
|
|
||||||
auto deletion_result = Core::File::remove(selected_node_path, Core::File::RecursionMode::Allowed, true);
|
auto deletion_result = Core::File::remove(selected_node_path, Core::File::RecursionMode::Allowed);
|
||||||
if (deletion_result.is_error()) {
|
if (deletion_result.is_error()) {
|
||||||
auto retry_message_result = GUI::MessageBox::show(window,
|
auto retry_message_result = GUI::MessageBox::show(window,
|
||||||
DeprecatedString::formatted("Failed to delete \"{}\": {}. Retry?",
|
DeprecatedString::formatted("Failed to delete \"{}\": {}. Retry?",
|
||||||
|
|
|
@ -681,7 +681,7 @@ NonnullRefPtr<GUI::Action> HackStudioWidget::create_delete_action()
|
||||||
}
|
}
|
||||||
|
|
||||||
bool is_directory = S_ISDIR(st.st_mode);
|
bool is_directory = S_ISDIR(st.st_mode);
|
||||||
if (auto result = Core::File::remove(file, Core::File::RecursionMode::Allowed, false); result.is_error()) {
|
if (auto result = Core::File::remove(file, Core::File::RecursionMode::Allowed); result.is_error()) {
|
||||||
auto& error = result.error();
|
auto& error = result.error();
|
||||||
if (is_directory) {
|
if (is_directory) {
|
||||||
GUI::MessageBox::show(window(),
|
GUI::MessageBox::show(window(),
|
||||||
|
|
|
@ -133,7 +133,7 @@ ErrorOr<void> ProjectBuilder::initialize_build_directory()
|
||||||
|
|
||||||
auto cmake_file_path = LexicalPath::join(build_directory(), "CMakeLists.txt"sv).string();
|
auto cmake_file_path = LexicalPath::join(build_directory(), "CMakeLists.txt"sv).string();
|
||||||
if (Core::File::exists(cmake_file_path))
|
if (Core::File::exists(cmake_file_path))
|
||||||
MUST(Core::File::remove(cmake_file_path, Core::File::RecursionMode::Disallowed, false));
|
MUST(Core::File::remove(cmake_file_path, Core::File::RecursionMode::Disallowed));
|
||||||
|
|
||||||
auto cmake_file = TRY(Core::Stream::File::open(cmake_file_path, Core::Stream::OpenMode::Write));
|
auto cmake_file = TRY(Core::Stream::File::open(cmake_file_path, Core::Stream::OpenMode::Write));
|
||||||
TRY(cmake_file->write_entire_buffer(generate_cmake_file_content().bytes()));
|
TRY(cmake_file->write_entire_buffer(generate_cmake_file_content().bytes()));
|
||||||
|
|
|
@ -549,14 +549,11 @@ ErrorOr<void> File::link_file(DeprecatedString const& dst_path, DeprecatedString
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
ErrorOr<void> File::remove(DeprecatedString const& path, RecursionMode mode, bool force)
|
ErrorOr<void> File::remove(DeprecatedString const& path, RecursionMode mode)
|
||||||
{
|
{
|
||||||
struct stat path_stat;
|
struct stat path_stat;
|
||||||
if (lstat(path.characters(), &path_stat) < 0) {
|
if (lstat(path.characters(), &path_stat) < 0)
|
||||||
if (!force)
|
return Error::from_errno(errno);
|
||||||
return Error::from_errno(errno);
|
|
||||||
return {};
|
|
||||||
}
|
|
||||||
|
|
||||||
if (S_ISDIR(path_stat.st_mode) && mode == RecursionMode::Allowed) {
|
if (S_ISDIR(path_stat.st_mode) && mode == RecursionMode::Allowed) {
|
||||||
auto di = DirIterator(path, DirIterator::SkipParentAndBaseDir);
|
auto di = DirIterator(path, DirIterator::SkipParentAndBaseDir);
|
||||||
|
@ -564,15 +561,15 @@ ErrorOr<void> File::remove(DeprecatedString const& path, RecursionMode mode, boo
|
||||||
return Error::from_errno(di.error());
|
return Error::from_errno(di.error());
|
||||||
|
|
||||||
while (di.has_next()) {
|
while (di.has_next()) {
|
||||||
auto result = remove(di.next_full_path(), RecursionMode::Allowed, true);
|
auto result = remove(di.next_full_path(), RecursionMode::Allowed);
|
||||||
if (result.is_error())
|
if (result.is_error())
|
||||||
return result.error();
|
return result.error();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rmdir(path.characters()) < 0 && !force)
|
if (rmdir(path.characters()) < 0)
|
||||||
return Error::from_errno(errno);
|
return Error::from_errno(errno);
|
||||||
} else {
|
} else {
|
||||||
if (unlink(path.characters()) < 0 && !force)
|
if (unlink(path.characters()) < 0)
|
||||||
return Error::from_errno(errno);
|
return Error::from_errno(errno);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -93,7 +93,7 @@ public:
|
||||||
static ErrorOr<DeprecatedString> read_link(DeprecatedString const& link_path);
|
static ErrorOr<DeprecatedString> read_link(DeprecatedString const& link_path);
|
||||||
static ErrorOr<void> link_file(DeprecatedString const& dst_path, DeprecatedString const& src_path);
|
static ErrorOr<void> link_file(DeprecatedString const& dst_path, DeprecatedString const& src_path);
|
||||||
|
|
||||||
static ErrorOr<void> remove(DeprecatedString const& path, RecursionMode, bool force);
|
static ErrorOr<void> remove(DeprecatedString const& path, RecursionMode);
|
||||||
|
|
||||||
virtual bool open(OpenMode) override;
|
virtual bool open(OpenMode) override;
|
||||||
|
|
||||||
|
|
|
@ -49,7 +49,7 @@ TempFile::~TempFile()
|
||||||
if (m_type == Type::Directory)
|
if (m_type == Type::Directory)
|
||||||
recursion_allowed = File::RecursionMode::Allowed;
|
recursion_allowed = File::RecursionMode::Allowed;
|
||||||
|
|
||||||
auto rc = File::remove(m_path.characters(), recursion_allowed, false);
|
auto rc = File::remove(m_path.characters(), recursion_allowed);
|
||||||
if (rc.is_error()) {
|
if (rc.is_error()) {
|
||||||
warnln("File::remove failed: {}", rc.error().string_literal());
|
warnln("File::remove failed: {}", rc.error().string_literal());
|
||||||
}
|
}
|
||||||
|
|
|
@ -687,7 +687,7 @@ static void load_page_for_screenshot_and_exit(HeadlessBrowserPageClient& page_cl
|
||||||
dbgln("Saving to {}", output_file_path);
|
dbgln("Saving to {}", output_file_path);
|
||||||
|
|
||||||
if (Core::File::exists(output_file_path))
|
if (Core::File::exists(output_file_path))
|
||||||
MUST(Core::File::remove(output_file_path, Core::File::RecursionMode::Disallowed, true));
|
MUST(Core::File::remove(output_file_path, Core::File::RecursionMode::Disallowed));
|
||||||
|
|
||||||
auto output_file = MUST(Core::Stream::File::open(output_file_path, Core::Stream::OpenMode::Write));
|
auto output_file = MUST(Core::Stream::File::open(output_file_path, Core::Stream::OpenMode::Write));
|
||||||
|
|
||||||
|
|
|
@ -25,7 +25,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
||||||
|
|
||||||
Core::ArgsParser args_parser;
|
Core::ArgsParser args_parser;
|
||||||
args_parser.add_option(recursive, "Delete directories recursively", "recursive", 'r');
|
args_parser.add_option(recursive, "Delete directories recursively", "recursive", 'r');
|
||||||
args_parser.add_option(force, "Force", "force", 'f');
|
args_parser.add_option(force, "Ignore nonexistent files", "force", 'f');
|
||||||
args_parser.add_option(verbose, "Verbose", "verbose", 'v');
|
args_parser.add_option(verbose, "Verbose", "verbose", 'v');
|
||||||
args_parser.add_option(no_preserve_root, "Do not consider '/' specially", "no-preserve-root", 0);
|
args_parser.add_option(no_preserve_root, "Do not consider '/' specially", "no-preserve-root", 0);
|
||||||
args_parser.add_positional_argument(paths, "Path(s) to remove", "path", Core::ArgsParser::Required::No);
|
args_parser.add_positional_argument(paths, "Path(s) to remove", "path", Core::ArgsParser::Required::No);
|
||||||
|
@ -43,10 +43,15 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto result = Core::File::remove(path, recursive ? Core::File::RecursionMode::Allowed : Core::File::RecursionMode::Disallowed, force);
|
auto result = Core::File::remove(path, recursive ? Core::File::RecursionMode::Allowed : Core::File::RecursionMode::Disallowed);
|
||||||
|
|
||||||
if (result.is_error()) {
|
if (result.is_error()) {
|
||||||
warnln("rm: cannot remove '{}': {}", path, static_cast<Error const&>(result.error()));
|
auto error = result.error();
|
||||||
|
|
||||||
|
if (force && error.is_errno() && error.code() == ENOENT)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
warnln("rm: cannot remove '{}': {}", path, error);
|
||||||
had_errors = true;
|
had_errors = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -76,7 +76,7 @@ static bool unpack_zip_member(Archive::ZipMember zip_member, bool quiet)
|
||||||
|
|
||||||
if (checksum.digest() != zip_member.crc32) {
|
if (checksum.digest() != zip_member.crc32) {
|
||||||
warnln("Failed decompressing file {}: CRC32 mismatch", zip_member.name);
|
warnln("Failed decompressing file {}: CRC32 mismatch", zip_member.name);
|
||||||
MUST(new_file->remove(zip_member.name, Core::File::RecursionMode::Disallowed, true));
|
MUST(Core::File::remove(zip_member.name, Core::File::RecursionMode::Disallowed));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue