LibCore: Add File::open_file_or_standard_stream()

This commit is contained in:
demostanis 2022-08-22 13:24:56 +02:00 committed by Sam Atkins
parent b66ceafaba
commit 1c5f6003d7
Notes: sideshowbarker 2024-07-17 07:19:53 +09:00
2 changed files with 17 additions and 0 deletions

View file

@ -153,6 +153,21 @@ bool File::exists(StringView filename)
return !Core::System::stat(filename).is_error();
}
ErrorOr<NonnullOwnPtr<File>> File::open_file_or_standard_stream(StringView filename, OpenMode mode)
{
if (!filename.is_empty() && filename != "-"sv)
return File::open(filename, mode);
switch (mode) {
case OpenMode::Read:
return File::adopt_fd(STDIN_FILENO, mode);
case OpenMode::Write:
return File::adopt_fd(STDOUT_FILENO, mode);
default:
VERIFY_NOT_REACHED();
}
}
int File::open_mode_to_options(OpenMode mode)
{
int flags = 0;

View file

@ -185,6 +185,8 @@ public:
static ErrorOr<NonnullOwnPtr<File>> adopt_fd(int fd, OpenMode);
static bool exists(StringView filename);
static ErrorOr<NonnullOwnPtr<File>> open_file_or_standard_stream(StringView filename, OpenMode mode);
File(File&& other) { operator=(move(other)); }
File& operator=(File&& other)