Browse Source

LibCore: Make Core::File::open() return OSError in case of failure

Andreas Kling 3 năm trước cách đây
mục cha
commit
13f4890c38

+ 1 - 1
Tests/LibCore/TestLibCoreIODevice.cpp

@@ -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();

+ 1 - 1
Tests/LibWasm/test-wasm.cpp

@@ -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();

+ 2 - 2
Userland/Applications/PixelPaint/Image.cpp

@@ -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() };

+ 1 - 1
Userland/Applications/PixelPaint/PaletteWidget.cpp

@@ -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);

+ 1 - 1
Userland/Applications/Spreadsheet/Workbook.cpp

@@ -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();
     }
     }

+ 3 - 3
Userland/Libraries/LibCore/File.cpp

@@ -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;
 }
 }
 
 

+ 2 - 2
Userland/Libraries/LibCore/File.h

@@ -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); }

+ 4 - 4
Userland/Libraries/LibCore/FileStream.h

@@ -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));