chiark / gitweb /
update TODO
[elogind.git] / src / gpt-auto-generator / gpt-auto-generator.c
index d4cfe37298070fdd7a5a3f1d47c17051f51242ca..32e9b78a1dc4e97ddb81aac01fb5929a28942408 100644 (file)
@@ -68,10 +68,8 @@ static int add_swap(const char *path) {
                 return log_oom();
 
         f = fopen(unit, "wxe");
-        if (!f) {
-                log_error("Failed to create unit file %s: %m", unit);
-                return -errno;
-        }
+        if (!f)
+                return log_error_errno(errno, "Failed to create unit file %s: %m", unit);
 
         fprintf(f,
                 "# Automatically generated by systemd-gpt-auto-generator\n\n"
@@ -83,20 +81,16 @@ static int add_swap(const char *path) {
                 path);
 
         fflush(f);
-        if (ferror(f)) {
-                log_error("Failed to write unit file %s: %m", unit);
-                return -errno;
-        }
+        if (ferror(f))
+                return log_error_errno(errno, "Failed to write unit file %s: %m", unit);
 
         lnk = strjoin(arg_dest, "/" SPECIAL_SWAP_TARGET ".wants/", name, NULL);
         if (!lnk)
                 return log_oom();
 
         mkdir_parents_label(lnk, 0755);
-        if (symlink(unit, lnk) < 0) {
-                log_error("Failed to create symlink %s: %m", lnk);
-                return -errno;
-        }
+        if (symlink(unit, lnk) < 0)
+                return log_error_errno(errno, "Failed to create symlink %s: %m", lnk);
 
         return 0;
 }
@@ -128,10 +122,8 @@ static int add_cryptsetup(const char *id, const char *what, bool rw, char **devi
                 return log_oom();
 
         f = fopen(p, "wxe");
-        if (!f) {
-                log_error("Failed to create unit file %s: %m", p);
-                return -errno;
-        }
+        if (!f)
+                return log_error_errno(errno, "Failed to create unit file %s: %m", p);
 
         fprintf(f,
                 "# Automatically generated by systemd-gpt-auto-generator\n\n"
@@ -155,10 +147,8 @@ static int add_cryptsetup(const char *id, const char *what, bool rw, char **devi
                 id);
 
         fflush(f);
-        if (ferror(f)) {
-                log_error("Failed to write file %s: %m", p);
-                return -errno;
-        }
+        if (ferror(f))
+                return log_error_errno(errno, "Failed to write file %s: %m", p);
 
         from = strappenda("../", n);
 
@@ -167,10 +157,8 @@ static int add_cryptsetup(const char *id, const char *what, bool rw, char **devi
                 return log_oom();
 
         mkdir_parents_label(to, 0755);
-        if (symlink(from, to) < 0) {
-                log_error("Failed to create symlink %s: %m", to);
-                return -errno;
-        }
+        if (symlink(from, to) < 0)
+                return log_error_errno(errno, "Failed to create symlink %s: %m", to);
 
         free(to);
         to = strjoin(arg_dest, "/cryptsetup.target.requires/", n, NULL);
@@ -178,10 +166,8 @@ static int add_cryptsetup(const char *id, const char *what, bool rw, char **devi
                 return log_oom();
 
         mkdir_parents_label(to, 0755);
-        if (symlink(from, to) < 0) {
-                log_error("Failed to create symlink %s: %m", to);
-                return -errno;
-        }
+        if (symlink(from, to) < 0)
+                return log_error_errno(errno, "Failed to create symlink %s: %m", to);
 
         free(to);
         to = strjoin(arg_dest, "/dev-mapper-", e, ".device.requires/", n, NULL);
@@ -189,10 +175,8 @@ static int add_cryptsetup(const char *id, const char *what, bool rw, char **devi
                 return log_oom();
 
         mkdir_parents_label(to, 0755);
-        if (symlink(from, to) < 0) {
-                log_error("Failed to create symlink %s: %m", to);
-                return -errno;
-        }
+        if (symlink(from, to) < 0)
+                return log_error_errno(errno, "Failed to create symlink %s: %m", to);
 
         free(p);
         p = strjoin(arg_dest, "/dev-mapper-", e, ".device.d/50-job-timeout-sec-0.conf", NULL);
@@ -204,10 +188,8 @@ static int add_cryptsetup(const char *id, const char *what, bool rw, char **devi
                         "# Automatically generated by systemd-gpt-auto-generator\n\n"
                         "[Unit]\n"
                         "JobTimeoutSec=0\n"); /* the binary handles timeouts anyway */
-        if (r < 0) {
-                log_error("Failed to write device drop-in: %s", strerror(-r));
-                return r;
-        }
+        if (r < 0)
+                return log_error_errno(r, "Failed to write device drop-in: %m");
 
         ret = strappend("/dev/mapper/", id);
         if (!ret)
@@ -256,10 +238,8 @@ static int add_mount(
                 return log_oom();
 
         f = fopen(p, "wxe");
-        if (!f) {
-                log_error("Failed to create unit file %s: %m", unit);
-                return -errno;
-        }
+        if (!f)
+                return log_error_errno(errno, "Failed to create unit file %s: %m", unit);
 
         fprintf(f,
                 "# Automatically generated by systemd-gpt-auto-generator\n\n"
@@ -288,10 +268,8 @@ static int add_mount(
         fprintf(f, "Options=%s\n", rw ? "rw" : "ro");
 
         fflush(f);
-        if (ferror(f)) {
-                log_error("Failed to write unit file %s: %m", p);
-                return -errno;
-        }
+        if (ferror(f))
+                return log_error_errno(errno, "Failed to write unit file %s: %m", p);
 
         if (post) {
                 lnk = strjoin(arg_dest, "/", post, ".requires/", unit, NULL);
@@ -299,10 +277,8 @@ static int add_mount(
                         return log_oom();
 
                 mkdir_parents_label(lnk, 0755);
-                if (symlink(p, lnk) < 0) {
-                        log_error("Failed to create symlink %s: %m", lnk);
-                        return -errno;
-                }
+                if (symlink(p, lnk) < 0)
+                        return log_error_errno(errno, "Failed to create symlink %s: %m", lnk);
         }
 
         return 0;
@@ -339,7 +315,7 @@ static int probe_and_add_mount(
         if (!b) {
                 if (errno == 0)
                         return log_oom();
-                log_error("Failed to allocate prober: %m");
+                log_error_errno(errno, "Failed to allocate prober: %m");
                 return -errno;
         }
 
@@ -353,7 +329,7 @@ static int probe_and_add_mount(
         else if (r != 0) {
                 if (errno == 0)
                         errno = EIO;
-                log_error("Failed to probe %s: %m", what);
+                log_error_errno(errno, "Failed to probe %s: %m", what);
                 return -errno;
         }
 
@@ -431,7 +407,7 @@ static int enumerate_partitions(dev_t devnum) {
                 if (errno == 0)
                         return log_oom();
 
-                log_error("Failed allocate prober: %m");
+                log_error_errno(errno, "Failed allocate prober: %m");
                 return -errno;
         }
 
@@ -445,7 +421,7 @@ static int enumerate_partitions(dev_t devnum) {
         else if (r != 0) {
                 if (errno == 0)
                         errno = EIO;
-                log_error("Failed to probe %s: %m", node);
+                log_error_errno(errno, "Failed to probe %s: %m", node);
                 return -errno;
         }
 
@@ -454,7 +430,7 @@ static int enumerate_partitions(dev_t devnum) {
         if (r != 0) {
                 if (errno == 0)
                         errno = EIO;
-                log_error("Failed to determine partition table type of %s: %m", node);
+                log_error_errno(errno, "Failed to determine partition table type of %s: %m", node);
                 return -errno;
         }
 
@@ -470,7 +446,7 @@ static int enumerate_partitions(dev_t devnum) {
                 if (errno == 0)
                         return log_oom();
 
-                log_error("Failed to list partitions of %s: %m", node);
+                log_error_errno(errno, "Failed to list partitions of %s: %m", node);
                 return -errno;
         }
 
@@ -487,10 +463,8 @@ static int enumerate_partitions(dev_t devnum) {
                 return log_oom();
 
         r = udev_enumerate_scan_devices(e);
-        if (r < 0) {
-                log_error("Failed to enumerate partitions on %s: %s", node, strerror(-r));
-                return r;
-        }
+        if (r < 0)
+                return log_error_errno(r, "Failed to enumerate partitions on %s: %m", node);
 
         first = udev_enumerate_get_list_entry(e);
         udev_list_entry_foreach(item, first) {
@@ -680,8 +654,8 @@ static int parse_proc_cmdline_item(const char *key, const char *value) {
                 r = parse_boolean(value);
                 if (r < 0)
                         log_warning("Failed to parse gpt-auto switch %s. Ignoring.", value);
-
-                arg_enabled = r;
+                else
+                        arg_enabled = r;
 
         } else if (streq(key, "root") && value) {
 
@@ -712,10 +686,8 @@ static int add_root_mount(void) {
         if (r == -ENOENT) {
                 log_debug("EFI loader partition unknown, exiting.");
                 return 0;
-        } else if (r < 0) {
-                log_error("Failed to read ESP partition UUID: %s", strerror(-r));
-                return r;
-        }
+        } else if (r < 0)
+                return log_error_errno(r, "Failed to read ESP partition UUID: %m");
 
         /* OK, we have an ESP partition, this is fantastic, so let's
          * wait for a root device to show up. A udev rule will create
@@ -739,10 +711,9 @@ static int add_mounts(void) {
         int r;
 
         r = get_block_device("/", &devno);
-        if (r < 0) {
-                log_error("Failed to determine block device of root file system: %s", strerror(-r));
-                return r;
-        } else if (r == 0) {
+        if (r < 0)
+                return log_error_errno(r, "Failed to determine block device of root file system: %m");
+        else if (r == 0) {
                 log_debug("Root file system not on a (single) block device.");
                 return 0;
         }
@@ -774,7 +745,7 @@ int main(int argc, char *argv[]) {
 
         r = parse_proc_cmdline(parse_proc_cmdline_item);
         if (r < 0)
-                log_warning("Failed to parse kernel command line, ignoring: %s", strerror(-r));
+                log_warning_errno(r, "Failed to parse kernel command line, ignoring: %m");
 
         if (!arg_enabled) {
                 log_debug("Disabled, exiting.");