chiark / gitweb /
Be more careful when checking for empty files
[elogind.git] / src / network / networkd-netdev.c
index a97831760e44d3eca1bcf4e73a1ae6e57a483b2f..8b96d60dcab6a98d3ec15dc8bfec810ac0de04d0 100644 (file)
@@ -495,11 +495,6 @@ static int netdev_load_one(Manager *manager, const char *filename) {
         assert(manager);
         assert(filename);
 
-        if (null_or_empty_path(filename)) {
-                log_debug("skipping empty file: %s", filename);
-                return 0;
-        }
-
         file = fopen(filename, "re");
         if (!file) {
                 if (errno == ENOENT)
@@ -508,6 +503,11 @@ static int netdev_load_one(Manager *manager, const char *filename) {
                         return -errno;
         }
 
+        if (null_or_empty_fd(fileno(file))) {
+                log_debug("Skipping empty file: %s", filename);
+                return 0;
+        }
+
         netdev = new0(NetDev, 1);
         if (!netdev)
                 return log_oom();
@@ -525,12 +525,10 @@ static int netdev_load_one(Manager *manager, const char *filename) {
 
         r = config_parse(NULL, filename, file,
                          "Match\0NetDev\0VLAN\0MACVLAN\0VXLAN\0Tunnel\0Peer\0Tun\0Tap\0Bond\0",
-                         config_item_perf_lookup, (void*) network_netdev_gperf_lookup,
-                         false, false, netdev);
-        if (r < 0) {
-                log_warning("Could not parse config file %s: %s", filename, strerror(-r));
+                         config_item_perf_lookup, network_netdev_gperf_lookup,
+                         false, false, true, netdev);
+        if (r < 0)
                 return r;
-        }
 
         /* skip out early if configuration does not match the environment */
         if (net_match_config(NULL, NULL, NULL, NULL, NULL,