Skip to content

Commit 4049abb

Browse files
author
krw
committed
Fold PRT_menuid_to_guid() into PRT_desc_to_guid() so
interactive editor and -R use the same logic to find a GUID. Allows interactive editor's 'edit' to accept GPT partition names and menu descriptions as partition id's.
1 parent 2274653 commit 4049abb

File tree

4 files changed

+20
-25
lines changed

4 files changed

+20
-25
lines changed

sbin/fdisk/cmd.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* $OpenBSD: cmd.c,v 1.182 2025/06/17 16:24:55 krw Exp $ */
1+
/* $OpenBSD: cmd.c,v 1.183 2025/06/20 12:06:07 krw Exp $ */
22

33
/*
44
* Copyright (c) 1997 Tobias Weingartner
@@ -656,7 +656,7 @@ ask_uuid(const struct uuid *olduuid)
656656
goto done;
657657
}
658658

659-
guid = PRT_menuid_to_guid(hex_octet(lbuf));
659+
guid = PRT_desc_to_guid(lbuf);
660660
if (guid == NULL)
661661
guid = lbuf;
662662

sbin/fdisk/gpt.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* $OpenBSD: gpt.c,v 1.102 2025/06/17 11:21:48 krw Exp $ */
1+
/* $OpenBSD: gpt.c,v 1.103 2025/06/20 12:06:07 krw Exp $ */
22
/*
33
* Copyright (c) 2015 Markus Muller <[email protected]>
44
* Copyright (c) 2015 Kenneth R Westerback <[email protected]>
@@ -374,8 +374,7 @@ GPT_recover_partition(const char *line1, const char *line2, const char *line3)
374374
break;
375375
type[i - 1] = '\0';
376376
}
377-
if ((p = PRT_desc_to_guid(type)) == NULL &&
378-
(p = PRT_menuid_to_guid(hex_octet(type))) == NULL)
377+
if ((p = PRT_desc_to_guid(type)) == NULL)
379378
return -1;
380379
uuid_from_string(p, &type_uuid, &status);
381380
if (status != uuid_s_ok)

sbin/fdisk/part.c

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* $OpenBSD: part.c,v 1.170 2025/06/18 13:00:21 krw Exp $ */
1+
/* $OpenBSD: part.c,v 1.171 2025/06/20 12:06:07 krw Exp $ */
22

33
/*
44
* Copyright (c) 1997 Tobias Weingartner
@@ -1123,35 +1123,32 @@ PRT_uuid_to_menudflt(const struct uuid *uuid)
11231123
return dflt;
11241124
}
11251125

1126-
const char *
1127-
PRT_menuid_to_guid(const int menuid)
1128-
{
1129-
unsigned int i;
1130-
1131-
for (i = 0; i < nitems(menu_items); i++) {
1132-
if (gpt_item(i) == 0 && menu_items[i].mi_menuid == menuid)
1133-
return menu_items[i].mi_guid;
1134-
}
1135-
1136-
return NULL;
1137-
}
1138-
1126+
/*
1127+
* Accept gt_desc, gt_guid, mi_name or mi_menuid and return the
1128+
* associated GUID. Or NULL if none found.
1129+
*/
11391130
const char *
11401131
PRT_desc_to_guid(const char *desc)
11411132
{
1133+
char octet[3];
11421134
unsigned int i;
1135+
int menuid = -1;
11431136

11441137
for (i = 0; i < nitems(gpt_types); i++) {
1145-
if (gpt_types[i].gt_desc == NULL)
1146-
continue;
1147-
if (strcasecmp(gpt_types[i].gt_desc, desc) == 0)
1138+
if (gpt_types[i].gt_desc &&
1139+
strcasecmp(gpt_types[i].gt_desc, desc) == 0)
11481140
return gpt_types[i].gt_guid;
11491141
if (strcasecmp(gpt_types[i].gt_guid, desc) == 0)
11501142
return gpt_types[i].gt_guid;
11511143
}
1144+
1145+
if (strlcpy(octet, desc, sizeof(octet)) < sizeof(octet))
1146+
menuid = hex_octet(octet);
1147+
11521148
for (i = 0; i < nitems(menu_items); i++) {
11531149
if (gpt_item(i) == 0 &&
1154-
strcasecmp(menu_items[i].mi_name, desc) == 0)
1150+
(strcasecmp(menu_items[i].mi_name, desc) == 0 ||
1151+
menu_items[i].mi_menuid == menuid))
11551152
return menu_items[i].mi_guid;
11561153
}
11571154

sbin/fdisk/part.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* $OpenBSD: part.h,v 1.49 2025/06/17 16:24:55 krw Exp $ */
1+
/* $OpenBSD: part.h,v 1.50 2025/06/20 12:06:07 krw Exp $ */
22

33
/*
44
* Copyright (c) 1997 Tobias Weingartner
@@ -39,7 +39,6 @@ void PRT_print_part(const int, const struct prt *, const char *);
3939
void PRT_print_parthdr(void);
4040
const char *PRT_uuid_to_desc(const struct uuid *);
4141
char *PRT_uuid_to_menudflt(const struct uuid *);
42-
const char *PRT_menuid_to_guid(const int);
4342
const char *PRT_desc_to_guid(const char *);
4443
int PRT_protected_uuid(const struct uuid *);
4544
void PRT_lba_to_chs(const struct prt *, struct chs *, struct chs *);

0 commit comments

Comments
 (0)