From: Daan De Meyer Date: Tue, 22 Nov 2022 13:03:54 +0000 (+0100) Subject: repart: Make parse_filter_partitions() more generic X-Git-Tag: v253-rc1~450^2~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=220780db86c0dabf1baef7781f9ad2921e93806b;p=thirdparty%2Fsystemd.git repart: Make parse_filter_partitions() more generic --- diff --git a/src/partition/repart.c b/src/partition/repart.c index 63c10cf3d58..855780f47ff 100644 --- a/src/partition/repart.c +++ b/src/partition/repart.c @@ -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;