]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
boot: Add GUID format helper macro
authorJan Janssen <medhefgo@web.de>
Wed, 22 Feb 2023 14:19:14 +0000 (15:19 +0100)
committerJan Janssen <medhefgo@web.de>
Wed, 22 Feb 2023 20:56:20 +0000 (21:56 +0100)
src/boot/efi/part-discovery.c
src/boot/efi/proto/device-path.h
src/boot/efi/util.h

index 68dcf888720ffe947731c01e7c13b6447c896239..4769d11bd872bebfc6237f815c19d384fd42b369 100644 (file)
@@ -294,26 +294,7 @@ char16_t *disk_get_part_uuid(EFI_HANDLE *handle) {
                 if (hd.SignatureType != SIGNATURE_TYPE_GUID)
                         continue;
 
-                return xasprintf(
-                                "%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x",
-                                hd.Signature[3],
-                                hd.Signature[2],
-                                hd.Signature[1],
-                                hd.Signature[0],
-
-                                hd.Signature[5],
-                                hd.Signature[4],
-                                hd.Signature[7],
-                                hd.Signature[6],
-
-                                hd.Signature[8],
-                                hd.Signature[9],
-                                hd.Signature[10],
-                                hd.Signature[11],
-                                hd.Signature[12],
-                                hd.Signature[13],
-                                hd.Signature[14],
-                                hd.Signature[15]);
+                return xasprintf(GUID_FORMAT_STR, GUID_FORMAT_VAL(hd.SignatureGuid));
         }
 
         return NULL;
index df7a6a08f9ca37d00355501e55848224bac1bd21..0fabae1125cc13ac19dc2a7a4a74b3b1285332a1 100644 (file)
@@ -54,7 +54,10 @@ typedef struct {
         uint32_t PartitionNumber;
         uint64_t PartitionStart;
         uint64_t PartitionSize;
-        uint8_t Signature[16];
+        union {
+                uint8_t Signature[16];
+                EFI_GUID SignatureGuid;
+        };
         uint8_t MBRType;
         uint8_t SignatureType;
 } _packed_ HARDDRIVE_DEVICE_PATH;
index 198e8449716b9b7d0830248188127050192bd9b5..a28228c4cc1425a473f5d262202f2e6c1cdcf805 100644 (file)
@@ -119,6 +119,11 @@ static inline void unload_imagep(EFI_HANDLE *image) {
 #define LOADER_GUID \
         { 0x4a67b082, 0x0a4c, 0x41cf, { 0xb6, 0xc7, 0x44, 0x0b, 0x29, 0xbb, 0x8c, 0x4f } }
 
+/* Note that GUID is evaluated multiple times! */
+#define GUID_FORMAT_STR "%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X"
+#define GUID_FORMAT_VAL(g) (g).Data1, (g).Data2, (g).Data3, (g).Data4[0], (g).Data4[1], \
+        (g).Data4[2], (g).Data4[3], (g).Data4[4], (g).Data4[5], (g).Data4[6], (g).Data4[7]
+
 void print_at(size_t x, size_t y, size_t attr, const char16_t *str);
 void clear_screen(size_t attr);