]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
repart: Make parse_filter_partitions() more generic
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Tue, 22 Nov 2022 13:03:54 +0000 (14:03 +0100)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Wed, 23 Nov 2022 11:41:23 +0000 (12:41 +0100)
src/partition/repart.c

index 63c10cf3d585d9d7c8ddc924620a132bd5013030..855780f47ff4f342eaa5f3a539d77f7783176de8 100644 (file)
@@ -5333,9 +5333,12 @@ static int context_minimize(Context *context) {
         return 0;
 }
 
-static int parse_filter_partitions(const char *p) {
+static int parse_partition_types(const char *p, sd_id128_t **partitions, size_t *n_partitions) {
         int r;
 
+        assert(partitions);
+        assert(n_partitions);
+
         for (;;) {
                 _cleanup_free_ char *name = NULL;
                 GptPartitionType type;
@@ -5350,10 +5353,10 @@ static int parse_filter_partitions(const char *p) {
                 if (r < 0)
                         return log_error_errno(r, "'%s' is not a valid partition type identifier or GUID", name);
 
-                if (!GREEDY_REALLOC(arg_filter_partitions, arg_n_filter_partitions + 1))
+                if (!GREEDY_REALLOC(*partitions, *n_partitions + 1))
                         return log_oom();
 
-                arg_filter_partitions[arg_n_filter_partitions++] = type.uuid;
+                (*partitions)[(*n_partitions)++] = type.uuid;
         }
 
         return 0;
@@ -5730,7 +5733,7 @@ static int parse_argv(int argc, char *argv[]) {
                                 return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
                                                        "Combination of --include-partitions= and --exclude-partitions= is invalid.");
 
-                        r = parse_filter_partitions(optarg);
+                        r = parse_partition_types(optarg, &arg_filter_partitions, &arg_n_filter_partitions);
                         if (r < 0)
                                 return r;
 
@@ -5743,7 +5746,7 @@ static int parse_argv(int argc, char *argv[]) {
                                 return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
                                                        "Combination of --include-partitions= and --exclude-partitions= is invalid.");
 
-                        r = parse_filter_partitions(optarg);
+                        r = parse_partition_types(optarg, &arg_filter_partitions, &arg_n_filter_partitions);
                         if (r < 0)
                                 return r;