mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 01:17:34 +00:00
LibCore: Make Core::File::open() return OSError in case of failure
This commit is contained in:
parent
1474a537b6
commit
13f4890c38
8 changed files with 15 additions and 15 deletions
|
@ -13,7 +13,7 @@ TEST_CASE(file_readline)
|
||||||
auto path = "long_lines.txt";
|
auto path = "long_lines.txt";
|
||||||
auto file_or_error = Core::File::open(path, Core::OpenMode::ReadOnly);
|
auto file_or_error = Core::File::open(path, Core::OpenMode::ReadOnly);
|
||||||
if (file_or_error.is_error()) {
|
if (file_or_error.is_error()) {
|
||||||
warnln("Failed to open {}: {}", path, strerror(errno));
|
warnln("Failed to open {}: {}", path, file_or_error.error());
|
||||||
VERIFY_NOT_REACHED();
|
VERIFY_NOT_REACHED();
|
||||||
}
|
}
|
||||||
auto file = file_or_error.release_value();
|
auto file = file_or_error.release_value();
|
||||||
|
|
|
@ -18,7 +18,7 @@ TESTJS_GLOBAL_FUNCTION(read_binary_wasm_file, readBinaryWasmFile)
|
||||||
return {};
|
return {};
|
||||||
auto file = Core::File::open(filename, Core::OpenMode::ReadOnly);
|
auto file = Core::File::open(filename, Core::OpenMode::ReadOnly);
|
||||||
if (file.is_error()) {
|
if (file.is_error()) {
|
||||||
vm.throw_exception<JS::TypeError>(global_object, file.error());
|
vm.throw_exception<JS::TypeError>(global_object, file.error().string());
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
auto contents = file.value()->read_all();
|
auto contents = file.value()->read_all();
|
||||||
|
|
|
@ -98,7 +98,7 @@ Result<NonnullRefPtr<Image>, String> Image::try_create_from_pixel_paint_path(Str
|
||||||
{
|
{
|
||||||
auto file_or_error = Core::File::open(file_path, Core::OpenMode::ReadOnly);
|
auto file_or_error = Core::File::open(file_path, Core::OpenMode::ReadOnly);
|
||||||
if (file_or_error.is_error())
|
if (file_or_error.is_error())
|
||||||
return file_or_error.error();
|
return String { file_or_error.error().string() };
|
||||||
|
|
||||||
return try_create_from_pixel_paint_file(*file_or_error.value(), file_path);
|
return try_create_from_pixel_paint_file(*file_or_error.value(), file_path);
|
||||||
}
|
}
|
||||||
|
@ -256,7 +256,7 @@ Result<void, String> Image::write_to_file(const String& file_path) const
|
||||||
|
|
||||||
auto file_or_error = Core::File::open(file_path, (Core::OpenMode)(Core::OpenMode::WriteOnly | Core::OpenMode::Truncate));
|
auto file_or_error = Core::File::open(file_path, (Core::OpenMode)(Core::OpenMode::WriteOnly | Core::OpenMode::Truncate));
|
||||||
if (file_or_error.is_error())
|
if (file_or_error.is_error())
|
||||||
return file_or_error.error();
|
return String { file_or_error.error().string() };
|
||||||
|
|
||||||
if (!file_or_error.value()->write(builder.string_view()))
|
if (!file_or_error.value()->write(builder.string_view()))
|
||||||
return String { file_or_error.value()->error_string() };
|
return String { file_or_error.value()->error_string() };
|
||||||
|
|
|
@ -232,7 +232,7 @@ Result<Vector<Color>, String> PaletteWidget::load_palette_path(String const& fil
|
||||||
{
|
{
|
||||||
auto file_or_error = Core::File::open(file_path, Core::OpenMode::ReadOnly);
|
auto file_or_error = Core::File::open(file_path, Core::OpenMode::ReadOnly);
|
||||||
if (file_or_error.is_error())
|
if (file_or_error.is_error())
|
||||||
return file_or_error.error();
|
return String { file_or_error.error().string() };
|
||||||
|
|
||||||
auto& file = *file_or_error.value();
|
auto& file = *file_or_error.value();
|
||||||
return load_palette_file(file);
|
return load_palette_file(file);
|
||||||
|
|
|
@ -51,7 +51,7 @@ Result<bool, String> Workbook::load(const StringView& filename)
|
||||||
sb.append("Failed to open ");
|
sb.append("Failed to open ");
|
||||||
sb.append(filename);
|
sb.append(filename);
|
||||||
sb.append(" for reading. Error: ");
|
sb.append(" for reading. Error: ");
|
||||||
sb.append(file_or_error.error());
|
sb.append(file_or_error.error().string());
|
||||||
|
|
||||||
return sb.to_string();
|
return sb.to_string();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
|
* Copyright (c) 2018-2021, Andreas Kling <kling@serenityos.org>
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: BSD-2-Clause
|
* SPDX-License-Identifier: BSD-2-Clause
|
||||||
*/
|
*/
|
||||||
|
@ -27,11 +27,11 @@
|
||||||
|
|
||||||
namespace Core {
|
namespace Core {
|
||||||
|
|
||||||
Result<NonnullRefPtr<File>, String> File::open(String filename, OpenMode mode, mode_t permissions)
|
Result<NonnullRefPtr<File>, OSError> File::open(String filename, OpenMode mode, mode_t permissions)
|
||||||
{
|
{
|
||||||
auto file = File::construct(move(filename));
|
auto file = File::construct(move(filename));
|
||||||
if (!file->open_impl(mode, permissions))
|
if (!file->open_impl(mode, permissions))
|
||||||
return String(file->error_string());
|
return OSError(file->error());
|
||||||
return file;
|
return file;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
|
* Copyright (c) 2018-2021, Andreas Kling <kling@serenityos.org>
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: BSD-2-Clause
|
* SPDX-License-Identifier: BSD-2-Clause
|
||||||
*/
|
*/
|
||||||
|
@ -19,7 +19,7 @@ class File final : public IODevice {
|
||||||
public:
|
public:
|
||||||
virtual ~File() override;
|
virtual ~File() override;
|
||||||
|
|
||||||
static Result<NonnullRefPtr<File>, String> open(String filename, OpenMode, mode_t = 0644);
|
static Result<NonnullRefPtr<File>, OSError> open(String filename, OpenMode, mode_t = 0644);
|
||||||
|
|
||||||
String filename() const { return m_filename; }
|
String filename() const { return m_filename; }
|
||||||
void set_filename(const String filename) { m_filename = move(filename); }
|
void set_filename(const String filename) { m_filename = move(filename); }
|
||||||
|
|
|
@ -20,7 +20,7 @@ public:
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
static Result<InputFileStream, String> open(StringView filename, OpenMode mode = OpenMode::ReadOnly, mode_t permissions = 0644)
|
static Result<InputFileStream, OSError> open(StringView filename, OpenMode mode = OpenMode::ReadOnly, mode_t permissions = 0644)
|
||||||
{
|
{
|
||||||
VERIFY(has_flag(mode, OpenMode::ReadOnly));
|
VERIFY(has_flag(mode, OpenMode::ReadOnly));
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@ public:
|
||||||
return InputFileStream { file_result.value() };
|
return InputFileStream { file_result.value() };
|
||||||
}
|
}
|
||||||
|
|
||||||
static Result<Buffered<InputFileStream>, String> open_buffered(StringView filename, OpenMode mode = OpenMode::ReadOnly, mode_t permissions = 0644)
|
static Result<Buffered<InputFileStream>, OSError> open_buffered(StringView filename, OpenMode mode = OpenMode::ReadOnly, mode_t permissions = 0644)
|
||||||
{
|
{
|
||||||
VERIFY(has_flag(mode, OpenMode::ReadOnly));
|
VERIFY(has_flag(mode, OpenMode::ReadOnly));
|
||||||
|
|
||||||
|
@ -89,7 +89,7 @@ public:
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
static Result<OutputFileStream, String> open(StringView filename, OpenMode mode = OpenMode::WriteOnly, mode_t permissions = 0644)
|
static Result<OutputFileStream, OSError> open(StringView filename, OpenMode mode = OpenMode::WriteOnly, mode_t permissions = 0644)
|
||||||
{
|
{
|
||||||
VERIFY(has_flag(mode, OpenMode::WriteOnly));
|
VERIFY(has_flag(mode, OpenMode::WriteOnly));
|
||||||
|
|
||||||
|
@ -101,7 +101,7 @@ public:
|
||||||
return OutputFileStream { file_result.value() };
|
return OutputFileStream { file_result.value() };
|
||||||
}
|
}
|
||||||
|
|
||||||
static Result<Buffered<OutputFileStream>, String> open_buffered(StringView filename, OpenMode mode = OpenMode::WriteOnly, mode_t permissions = 0644)
|
static Result<Buffered<OutputFileStream>, OSError> open_buffered(StringView filename, OpenMode mode = OpenMode::WriteOnly, mode_t permissions = 0644)
|
||||||
{
|
{
|
||||||
VERIFY(has_flag(mode, OpenMode::WriteOnly));
|
VERIFY(has_flag(mode, OpenMode::WriteOnly));
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue