chiark / gitweb /
cryptsetup-generator: let's be a bit more efficient with strv_extend()
authorLennart Poettering <lennart@poettering.net>
Mon, 25 Mar 2013 22:49:41 +0000 (23:49 +0100)
committerLennart Poettering <lennart@poettering.net>
Mon, 25 Mar 2013 22:51:32 +0000 (23:51 +0100)
src/cryptsetup/cryptsetup-generator.c

index 5c4a2807a74059af059971f1874cd88fecb5cd74..8959bf51c8c72fb757ac93c14d003d20c5caf170 100644 (file)
@@ -258,26 +258,14 @@ static int parse_proc_cmdline(char ***arg_proc_cmdline_disks) {
                         }
 
                 } else if (startswith(word, "luks.uuid=")) {
-                        char **t;
-
-                        t = strv_append(*arg_proc_cmdline_disks, word + 10);
-                        if (!t)
+                        if (strv_extend(arg_proc_cmdline_disks, word + 10) < 0)
                                 return log_oom();
 
-                        strv_free(*arg_proc_cmdline_disks);
-                        *arg_proc_cmdline_disks = t;
-
                 } else if (startswith(word, "rd.luks.uuid=")) {
 
                         if (in_initrd()) {
-                                char **t;
-
-                                t = strv_append(*arg_proc_cmdline_disks, word + 13);
-                                if (!t)
+                                if (strv_extend(arg_proc_cmdline_disks, word + 13) < 0)
                                         return log_oom();
-
-                                strv_free(*arg_proc_cmdline_disks);
-                                *arg_proc_cmdline_disks = t;
                         }
 
                 } else if (startswith(word, "luks.") ||
@@ -370,17 +358,11 @@ int main(int argc, char *argv[]) {
                                                 return log_oom();
 
                                         if (streq(proc_device, device) || streq(proc_name, name)) {
-                                                char **t;
-
                                                 if (create_disk(name, device, password, options) < 0)
                                                         r = EXIT_FAILURE;
 
-                                                t = strv_append(arg_proc_cmdline_disks_done, p);
-                                                if (!t)
+                                                if (strv_extend(&arg_proc_cmdline_disks_done, p) < 0)
                                                         return log_oom();
-
-                                                strv_free(arg_proc_cmdline_disks_done);
-                                                arg_proc_cmdline_disks_done = t;
                                         }
                                 }
                         } else {