Przeglądaj źródła

Shell: Prefer File::read_until_eof over DeprecatedFile::read_all

Ben Wiederhake 2 lat temu
rodzic
commit
f0ee630ee9
2 zmienionych plików z 16 dodań i 9 usunięć
  1. 14 6
      Userland/Shell/Shell.cpp
  2. 2 3
      Userland/Shell/main.cpp

+ 14 - 6
Userland/Shell/Shell.cpp

@@ -1077,18 +1077,26 @@ bool Shell::run_file(DeprecatedString const& filename, bool explicitly_invoked)
     TemporaryChange interactive_change { m_is_interactive, false };
     TemporaryChange<Optional<SourcePosition>> source_change { m_source_position, SourcePosition { .source_file = filename, .literal_source_text = {}, .position = {} } };
 
-    auto file_result = Core::DeprecatedFile::open(filename, Core::OpenMode::ReadOnly);
-    if (file_result.is_error()) {
-        auto error = DeprecatedString::formatted("'{}': {}", escape_token_for_single_quotes(filename), file_result.error());
+    auto file_or_error = Core::File::open(filename, Core::File::OpenMode::Read);
+    if (file_or_error.is_error()) {
+        auto error = DeprecatedString::formatted("'{}': {}", escape_token_for_single_quotes(filename), file_or_error.error());
         if (explicitly_invoked)
             raise_error(ShellError::OpenFailure, error);
         else
             dbgln("open() failed for {}", error);
         return false;
     }
-    auto file = file_result.value();
-    auto data = file->read_all();
-    return run_command(data) == 0;
+    auto file = file_or_error.release_value();
+    auto data_or_error = file->read_until_eof();
+    if (data_or_error.is_error()) {
+        auto error = DeprecatedString::formatted("'{}': {}", escape_token_for_single_quotes(filename), data_or_error.error());
+        if (explicitly_invoked)
+            raise_error(ShellError::OpenFailure, error);
+        else
+            dbgln("reading after open() failed for {}", error);
+        return false;
+    }
+    return run_command(data_or_error.value()) == 0;
 }
 
 bool Shell::is_allowed_to_modify_termios(const AST::Command& command) const

+ 2 - 3
Userland/Shell/main.cpp

@@ -7,7 +7,6 @@
 #include "Shell.h"
 #include <AK/LexicalPath.h>
 #include <LibCore/ArgsParser.h>
-#include <LibCore/DeprecatedFile.h>
 #include <LibCore/Event.h>
 #include <LibCore/EventLoop.h>
 #include <LibCore/System.h>
@@ -190,12 +189,12 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
         skip_rc_files = true;
 
     if (!format.is_empty()) {
-        auto file = TRY(Core::DeprecatedFile::open(format, Core::OpenMode::ReadOnly));
+        auto file = TRY(Core::File::open(format, Core::File::OpenMode::Read));
 
         initialize(posix_mode);
 
         ssize_t cursor = -1;
-        puts(shell->format(file->read_all(), cursor).characters());
+        puts(shell->format(TRY(file->read_until_eof()), cursor).characters());
         return 0;
     }