1 /* SPDX-License-Identifier: GPL-2.0-or-later */
8 #include <commonlib/bsd/helpers.h>
13 const struct guid_alias_t known_guids
[] = {
17 0xceae4c1d, 0x335b, 0x4685,
18 { 0xa4, 0xa0, 0xfc, 0x4a, 0x94, 0xee, 0xa0, 0x85 }
24 0xd15b327e, 0xff2d, 0x4fc1,
25 { 0xab, 0xf6, 0xc1, 0x2b, 0xd0, 0x8c, 0x13, 0x59 }
31 0x8be4df61, 0x93ca, 0x11d2,
32 { 0xaa, 0x0d, 0x00, 0xe0, 0x98, 0x03, 0x2b, 0x8c }
38 0x77fa9abd, 0x0359, 0x4d32,
39 { 0xbd, 0x60, 0x28, 0xf4, 0xe7, 0x8f, 0x78, 0x4b }
44 const int known_guid_count
= ARRAY_SIZE(known_guids
);
46 char *format_guid(const EFI_GUID
*guid
, bool use_alias
)
49 for (int i
= 0; i
< known_guid_count
; ++i
) {
50 const struct guid_alias_t
*known_guid
= &known_guids
[i
];
51 if (memcmp(&known_guid
->guid
, guid
, sizeof(*guid
)) == 0)
52 return strdup(known_guid
->alias
);
56 char *str
= xmalloc(GUID_LEN
+ 1);
57 snprintf(str
, GUID_LEN
+ 1,
58 "%08x-%04x-%04x-%02x%02x%02x%02x%02x%02x%02x%02x",
59 guid
->Data1
, guid
->Data2
, guid
->Data3
,
60 guid
->Data4
[0], guid
->Data4
[1],
61 guid
->Data4
[2], guid
->Data4
[3],
62 guid
->Data4
[4], guid
->Data4
[5],
63 guid
->Data4
[6], guid
->Data4
[7]);
67 bool parse_guid(const char str
[], EFI_GUID
*guid
)
69 for (int i
= 0; i
< known_guid_count
; ++i
) {
70 const struct guid_alias_t
*known_guid
= &known_guids
[i
];
71 if (str_eq(known_guid
->alias
, str
)) {
72 *guid
= known_guid
->guid
;
77 if (strlen(str
) != GUID_LEN
)
82 "%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx%02hhx",
83 &guid
->Data1
, &guid
->Data2
, &guid
->Data3
,
84 &guid
->Data4
[0], &guid
->Data4
[1],
85 &guid
->Data4
[2], &guid
->Data4
[3],
86 &guid
->Data4
[4], &guid
->Data4
[5],
87 &guid
->Data4
[6], &guid
->Data4
[7]);