mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-13 01:59:14 +03:00
touch: Don't bail immediately on error
Previously, touch would exit immediately if there was an error changing file permissions. We now print an error to stderr and continue when an error occurs.
This commit is contained in:
parent
05bc98a410
commit
16fcbe555e
Notes:
sideshowbarker
2024-07-17 03:16:02 +09:00
Author: https://github.com/tcl3 Commit: https://github.com/SerenityOS/serenity/commit/16fcbe555e Pull-request: https://github.com/SerenityOS/serenity/pull/19541 Reviewed-by: https://github.com/gmta ✅
@ -239,16 +239,28 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
||||
if (update_mtime && !update_atime)
|
||||
atime.tv_nsec = UTIME_OMIT;
|
||||
|
||||
auto has_errors = false;
|
||||
for (auto path : paths) {
|
||||
if (FileSystem::exists(path)) {
|
||||
if (utimensat(AT_FDCWD, path.characters(), times, 0) == -1)
|
||||
err("failed to touch '{}': {}", path, strerror(errno));
|
||||
if (utimensat(AT_FDCWD, path.characters(), times, 0) == -1) {
|
||||
warnln("failed to touch '{}': {}", path, strerror(errno));
|
||||
has_errors = true;
|
||||
}
|
||||
} else if (!no_create_file) {
|
||||
int fd = TRY(Core::System::open(path, O_CREAT, 0100644));
|
||||
if (futimens(fd, times) == -1)
|
||||
err("failed to touch '{}': {}", path, strerror(errno));
|
||||
TRY(Core::System::close(fd));
|
||||
auto error_or_fd = Core::System::open(path, O_CREAT, 0100644);
|
||||
if (error_or_fd.is_error()) {
|
||||
warnln("failed to open '{}': {}", path, strerror(error_or_fd.error().code()));
|
||||
has_errors = true;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (futimens(error_or_fd.value(), times) == -1) {
|
||||
warnln("failed to touch '{}': {}", path, strerror(errno));
|
||||
has_errors = true;
|
||||
continue;
|
||||
}
|
||||
(void)Core::System::close(error_or_fd.value());
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
return has_errors ? 1 : 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user