Browse Source

LookupServer: Prefer File::read_until_eof over DeprecatedFile

Ben Wiederhake 2 years ago
parent
commit
b4ad3f1b37
1 changed files with 15 additions and 8 deletions
  1. 15 8
      Userland/Services/LookupServer/MulticastDNS.cpp

+ 15 - 8
Userland/Services/LookupServer/MulticastDNS.cpp

@@ -11,7 +11,7 @@
 #include <AK/JsonArray.h>
 #include <AK/JsonArray.h>
 #include <AK/JsonObject.h>
 #include <AK/JsonObject.h>
 #include <AK/JsonValue.h>
 #include <AK/JsonValue.h>
-#include <LibCore/DeprecatedFile.h>
+#include <LibCore/File.h>
 #include <LibCore/System.h>
 #include <LibCore/System.h>
 #include <limits.h>
 #include <limits.h>
 #include <poll.h>
 #include <poll.h>
@@ -119,18 +119,25 @@ ErrorOr<size_t> MulticastDNS::emit_packet(Packet const& packet, sockaddr_in cons
 
 
 Vector<IPv4Address> MulticastDNS::local_addresses() const
 Vector<IPv4Address> MulticastDNS::local_addresses() const
 {
 {
-    auto file = Core::DeprecatedFile::construct("/sys/kernel/net/adapters");
-    if (!file->open(Core::OpenMode::ReadOnly)) {
-        dbgln("Failed to open /sys/kernel/net/adapters: {}", file->error_string());
+    auto file_or_error = Core::File::open("/sys/kernel/net/adapters"sv, Core::File::OpenMode::Read);
+    if (file_or_error.is_error()) {
+        dbgln("Failed to open /sys/kernel/net/adapters: {}", file_or_error.error());
+        return {};
+    }
+    auto file_contents_or_error = file_or_error.value()->read_until_eof();
+    if (file_or_error.is_error()) {
+        dbgln("Cannot read /sys/kernel/net/adapters: {}", file_contents_or_error.error());
+        return {};
+    }
+    auto json_or_error = JsonValue::from_string(file_contents_or_error.value());
+    if (json_or_error.is_error()) {
+        dbgln("Invalid JSON(?) in /sys/kernel/net/adapters: {}", json_or_error.error());
         return {};
         return {};
     }
     }
-
-    auto file_contents = file->read_all();
-    auto json = JsonValue::from_string(file_contents).release_value_but_fixme_should_propagate_errors();
 
 
     Vector<IPv4Address> addresses;
     Vector<IPv4Address> addresses;
 
 
-    json.as_array().for_each([&addresses](auto& value) {
+    json_or_error.value().as_array().for_each([&addresses](auto& value) {
         auto if_object = value.as_object();
         auto if_object = value.as_object();
         auto address = if_object.get_deprecated_string("ipv4_address"sv).value_or({});
         auto address = if_object.get_deprecated_string("ipv4_address"sv).value_or({});
         auto ipv4_address = IPv4Address::from_string(address);
         auto ipv4_address = IPv4Address::from_string(address);