]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
gpt: add some simple helpers for categorizing GPT partition types
authorLennart Poettering <lennart@poettering.net>
Mon, 22 Mar 2021 20:23:40 +0000 (21:23 +0100)
committerLennart Poettering <lennart@poettering.net>
Mon, 19 Apr 2021 21:16:02 +0000 (23:16 +0200)
src/shared/gpt.c
src/shared/gpt.h

index a96f5ee02daba899a757806dcbe8cd9f856c381a..5f2de0d947e5dc6291793f089cca8bb31c00587c 100644 (file)
@@ -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);
+}
index 2e0f50c3c648fc83798261ff301524dd63676c96..22b1d68d5f0954545313a27d008a8040ff26f101 100644 (file)
@@ -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);