From 6ce543f4999f21b363865bf845543326ba91406b Mon Sep 17 00:00:00 2001 From: Adam Williamson Date: Mon, 20 Jun 2022 12:07:14 -0700 Subject: [PATCH] Set _FIRST_ and _LAST_ macro values in disk.h directly I may be missing something, but it seems impossible to use these _FIRST_ and _LAST_ macros in practice as they are currently set. You cannot use them at preprocessor time, because they will always evaluate to 0 at that time, because the preprocessor does not handle enums: https://stackoverflow.com/questions/34677148 and you cannot really use them at build time, because if you do something like this: if (PED_PARTITION_LAST_FLAG > 17) { PyModule_AddIntConstant(m, "PARTITION_ESP", PED_PARTITION_ESP); } the compiler still throws an undeclared identifier error if you actually try and build the code against an older parted. Unless anyone can suggest a way to use these properly as-is, this is the best idea I can come up with: we just have to define the _FIRST_ and _LAST_ values directly, and remember to keep them in line when adding new entries to the enums. Signed-off-by: Adam Williamson --- include/parted/disk.in.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/include/parted/disk.in.h b/include/parted/disk.in.h index 672c4ee..fedcee9 100644 --- a/include/parted/disk.in.h +++ b/include/parted/disk.in.h @@ -47,8 +47,8 @@ enum _PedDiskFlag { /* This flag controls whether the boot flag of a GPT PMBR is set */ PED_DISK_GPT_PMBR_BOOT=2, }; -#define PED_DISK_FIRST_FLAG PED_DISK_CYLINDER_ALIGNMENT -#define PED_DISK_LAST_FLAG PED_DISK_GPT_PMBR_BOOT +#define PED_DISK_FIRST_FLAG 1 +#define PED_DISK_LAST_FLAG 2 /** * Partition types @@ -88,8 +88,8 @@ enum _PedPartitionFlag { PED_PARTITION_BLS_BOOT=20, PED_PARTITION_LINUX_HOME=21, }; -#define PED_PARTITION_FIRST_FLAG PED_PARTITION_BOOT -#define PED_PARTITION_LAST_FLAG PED_PARTITION_LINUX_HOME +#define PED_PARTITION_FIRST_FLAG 1 +#define PED_PARTITION_LAST_FLAG 21 enum _PedDiskTypeFeature { PED_DISK_TYPE_EXTENDED=1, /**< supports extended partitions */ @@ -97,8 +97,8 @@ enum _PedDiskTypeFeature { PED_DISK_TYPE_PARTITION_TYPE_ID=4, /**< supports partition type-ids */ PED_DISK_TYPE_PARTITION_TYPE_UUID=8, /**< supports partition type-uuids */ }; -#define PED_DISK_TYPE_FIRST_FEATURE PED_DISK_TYPE_EXTENDED -#define PED_DISK_TYPE_LAST_FEATURE PED_DISK_TYPE_PARTITION_TYPE_UUID +#define PED_DISK_TYPE_FIRST_FEATURE 1 +#define PED_DISK_TYPE_LAST_FEATURE 8 struct _PedDisk; struct _PedPartition; -- 2.36.1