From: Lennart Poettering Date: Mon, 22 Mar 2021 20:23:40 +0000 (+0100) Subject: gpt: add some simple helpers for categorizing GPT partition types X-Git-Tag: v249-rc1~388^2~5 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e81acfd251eb9e6afc6cc7ee589f89e9553935f5;p=thirdparty%2Fsystemd.git gpt: add some simple helpers for categorizing GPT partition types --- diff --git a/src/shared/gpt.c b/src/shared/gpt.c index a96f5ee02da..5f2de0d947e 100644 --- a/src/shared/gpt.c +++ b/src/shared/gpt.c @@ -106,3 +106,43 @@ int gpt_partition_label_valid(const char *s) { return char16_strlen(recoded) <= 36; } + +bool gpt_partition_type_is_root(sd_id128_t id) { + return sd_id128_equal(id, GPT_ROOT_X86) || + sd_id128_equal(id, GPT_ROOT_X86_64) || + sd_id128_equal(id, GPT_ROOT_ARM) || + sd_id128_equal(id, GPT_ROOT_ARM_64) || + sd_id128_equal(id, GPT_ROOT_IA64) || + sd_id128_equal(id, GPT_ROOT_RISCV32) || + sd_id128_equal(id, GPT_ROOT_RISCV64); +} + +bool gpt_partition_type_is_root_verity(sd_id128_t id) { + return sd_id128_equal(id, GPT_ROOT_X86_VERITY) || + sd_id128_equal(id, GPT_ROOT_X86_64_VERITY) || + sd_id128_equal(id, GPT_ROOT_ARM_VERITY) || + sd_id128_equal(id, GPT_ROOT_ARM_64_VERITY) || + sd_id128_equal(id, GPT_ROOT_IA64_VERITY) || + sd_id128_equal(id, GPT_ROOT_RISCV32_VERITY) || + sd_id128_equal(id, GPT_ROOT_RISCV64_VERITY); +} + +bool gpt_partition_type_is_usr(sd_id128_t id) { + return sd_id128_equal(id, GPT_USR_X86) || + sd_id128_equal(id, GPT_USR_X86_64) || + sd_id128_equal(id, GPT_USR_ARM) || + sd_id128_equal(id, GPT_USR_ARM_64) || + sd_id128_equal(id, GPT_USR_IA64) || + sd_id128_equal(id, GPT_USR_RISCV32) || + sd_id128_equal(id, GPT_USR_RISCV64); +} + +bool gpt_partition_type_is_usr_verity(sd_id128_t id) { + return sd_id128_equal(id, GPT_USR_X86_VERITY) || + sd_id128_equal(id, GPT_USR_X86_64_VERITY) || + sd_id128_equal(id, GPT_USR_ARM_VERITY) || + sd_id128_equal(id, GPT_USR_ARM_64_VERITY) || + sd_id128_equal(id, GPT_USR_IA64_VERITY) || + sd_id128_equal(id, GPT_USR_RISCV32_VERITY) || + sd_id128_equal(id, GPT_USR_RISCV64_VERITY); +} diff --git a/src/shared/gpt.h b/src/shared/gpt.h index 2e0f50c3c64..22b1d68d5f0 100644 --- a/src/shared/gpt.h +++ b/src/shared/gpt.h @@ -128,3 +128,8 @@ typedef struct GptPartitionType { extern const GptPartitionType gpt_partition_type_table[]; int gpt_partition_label_valid(const char *s); + +bool gpt_partition_type_is_root(sd_id128_t id); +bool gpt_partition_type_is_root_verity(sd_id128_t id); +bool gpt_partition_type_is_usr(sd_id128_t id); +bool gpt_partition_type_is_usr_verity(sd_id128_t id);