Module Name:    src
Committed By:   christos
Date:           Mon Aug 19 17:15:38 UTC 2024

Modified Files:
        src/sbin/gpt: gpt.8 gpt_uuid.c gpt_uuid.h uuid.c

Log Message:
Add -U option to specify new UUID
Add OpenBSD
from Anon Ymous


To generate a diff of this commit:
cvs rdiff -u -r1.82 -r1.83 src/sbin/gpt/gpt.8
cvs rdiff -u -r1.21 -r1.22 src/sbin/gpt/gpt_uuid.c
cvs rdiff -u -r1.10 -r1.11 src/sbin/gpt/gpt_uuid.h
cvs rdiff -u -r1.1 -r1.2 src/sbin/gpt/uuid.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sbin/gpt/gpt.8
diff -u src/sbin/gpt/gpt.8:1.82 src/sbin/gpt/gpt.8:1.83
--- src/sbin/gpt/gpt.8:1.82	Mon Jun 10 05:17:29 2024
+++ src/sbin/gpt/gpt.8	Mon Aug 19 13:15:38 2024
@@ -1,4 +1,4 @@
-.\" $NetBSD: gpt.8,v 1.82 2024/06/10 09:17:29 kre Exp $
+.\" $NetBSD: gpt.8,v 1.83 2024/08/19 17:15:38 christos Exp $
 .\"
 .\" Copyright (c) 2002 Marcel Moolenaar
 .\" All rights reserved.
@@ -26,7 +26,7 @@
 .\"
 .\" $FreeBSD: src/sbin/gpt/gpt.8,v 1.17 2006/06/22 22:22:32 marcel Exp $
 .\"
-.Dd July 15, 2023
+.Dd August 19, 2024
 .Dt GPT 8
 .Os
 .Sh NAME
@@ -216,6 +216,8 @@ Linux RAID
 Linux swap
 .It Cm linux-lvm
 Linux LVM
+.It Cm obsd
+OpenBSD data
 .It Cm windows
 Microsoft basic data - NTFS, FAT32 ("msdos"), FAT16, also used for UDF
 .It Cm windows-reserved
@@ -722,8 +724,9 @@ They may be used by
 code in the future.
 .\" ==== uuid ====
 .It Nm Ic uuid Oo Fl a Oc
-.It Nm Ic uuid Oo Fl b Ar blocknr Oc Oo Fl i Ar index Oc \
-Oo Fl L Ar label Oc Oo Fl s Ar sectors Oc Oo Fl t Ar type Oc
+.It Nm Ic uuid Oo Fl b Ar blocknr Oc Oo Fl i Ar index Ar Oc \
+Oo Fl L Ar label Oc Oo Fl s Ar sectors Oc Oo Fl t Ar type Oc \
+Oo Fl U Ar newuuid Oc
 The
 .Ic uuid
 command allows the user to change the UUID of any and all partitions
@@ -733,6 +736,13 @@ It uses the same selection options as th
 command.
 See above for a description of these options.
 If
+.Ar newuuid
+is not specified, a random UUID value is derived from the timestamp
+.Po see the
+.Fl T
+option
+.Pc .
+If
 .Fl a
 is used, then the header UUID is changed as well.
 .Pp

Index: src/sbin/gpt/gpt_uuid.c
diff -u src/sbin/gpt/gpt_uuid.c:1.21 src/sbin/gpt/gpt_uuid.c:1.22
--- src/sbin/gpt/gpt_uuid.c:1.21	Wed Sep 27 05:44:10 2023
+++ src/sbin/gpt/gpt_uuid.c	Mon Aug 19 13:15:38 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: gpt_uuid.c,v 1.21 2023/09/27 09:44:10 riastradh Exp $	*/
+/*	$NetBSD: gpt_uuid.c,v 1.22 2024/08/19 17:15:38 christos Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -32,7 +32,7 @@
 
 #include <sys/cdefs.h>
 #ifdef __RCSID
-__RCSID("$NetBSD: gpt_uuid.c,v 1.21 2023/09/27 09:44:10 riastradh Exp $");
+__RCSID("$NetBSD: gpt_uuid.c,v 1.22 2024/08/19 17:15:38 christos Exp $");
 #endif
 
 #include <err.h>
@@ -89,6 +89,7 @@ static const struct {
 	{ GPT_ENT_TYPE_NETBSD_RAIDFRAME, "raid",
 	    "NetBSD RAIDFrame component" },
 	{ GPT_ENT_TYPE_NETBSD_SWAP, "swap", "NetBSD swap" },
+	{ GPT_ENT_TYPE_OPENBSD_DATA, "obsd", "OpenBSD data" },
 	{ GPT_ENT_TYPE_VMWARE_VMKCORE, "vmcore", "VMware VMkernel core dump" },
 	{ GPT_ENT_TYPE_VMWARE_VMFS, "vmfs", "VMware VMFS" },
 	{ GPT_ENT_TYPE_VMWARE_RESERVED, "vmresered", "VMware reserved" },

Index: src/sbin/gpt/gpt_uuid.h
diff -u src/sbin/gpt/gpt_uuid.h:1.10 src/sbin/gpt/gpt_uuid.h:1.11
--- src/sbin/gpt/gpt_uuid.h:1.10	Wed Sep 27 05:44:10 2023
+++ src/sbin/gpt/gpt_uuid.h	Mon Aug 19 13:15:38 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: gpt_uuid.h,v 1.10 2023/09/27 09:44:10 riastradh Exp $	*/
+/*	$NetBSD: gpt_uuid.h,v 1.11 2024/08/19 17:15:38 christos Exp $	*/
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -71,6 +71,7 @@ typedef enum {
 	GPT_TYPE_NETBSD_LFS,
 	GPT_TYPE_NETBSD_RAIDFRAME,
 	GPT_TYPE_NETBSD_SWAP,
+	GPT_TYPE_OPENBSD_DATA,
 	GPT_TYPE_VMWARE_VMKCORE,
 	GPT_TYPE_VMWARE_VMFS,
 	GPT_TYPE_VMWARE_RESERVED

Index: src/sbin/gpt/uuid.c
diff -u src/sbin/gpt/uuid.c:1.1 src/sbin/gpt/uuid.c:1.2
--- src/sbin/gpt/uuid.c:1.1	Tue Jun 25 00:53:40 2019
+++ src/sbin/gpt/uuid.c	Mon Aug 19 13:15:38 2024
@@ -33,7 +33,7 @@
 __FBSDID("$FreeBSD: src/sbin/gpt/remove.c,v 1.10 2006/10/04 18:20:25 marcel Exp $");
 #endif
 #ifdef __RCSID
-__RCSID("$NetBSD: uuid.c,v 1.1 2019/06/25 04:53:40 jnemeth Exp $");
+__RCSID("$NetBSD: uuid.c,v 1.2 2024/08/19 17:15:38 christos Exp $");
 #endif
 
 #include <sys/types.h>
@@ -53,7 +53,7 @@ static int cmd_uuid(gpt_t, int, char *[]
 
 static const char *uuidhelp[] = {
 	"-a",
-	"[-b blocknr] [-i index] [-L label] [-s sectors] [-t type]",
+	"[-b blocknr] [-i index] [-L label] [-s sectors] [-t type] [-U newuuid]",
 };
 
 struct gpt_cmd c_uuid = {
@@ -70,7 +70,10 @@ change_ent(struct gpt_ent *ent, void *v,
 {
 	static gpt_uuid_t uuidstore;
 
-	if (!backup)
+	if (v != NULL) {
+		memcpy(uuidstore, v, sizeof(uuidstore));
+	}
+	else if (!backup)
 		gpt_uuid_generate(NULL, uuidstore);
 	memmove(ent->ent_guid, uuidstore, sizeof(ent->ent_guid));
 }
@@ -90,20 +93,35 @@ cmd_uuid(gpt_t gpt, int argc, char *argv
 {
 	int ch, rc;
 	struct gpt_find find;
+	gpt_uuid_t new_uuid;
+	void *v;
+
+	if (gpt == NULL)
+		return usage();
 
 	memset(&find, 0, sizeof(find));
 	find.msg = "UUID changed";
 
 	/* Get the uuid options */
-	while ((ch = getopt(argc, argv, GPT_FIND)) != -1) {
-		if (gpt == NULL || gpt_add_find(gpt, &find, ch) == -1)
-			return usage();
+	v = NULL;
+	while ((ch = getopt(argc, argv, GPT_FIND "U:")) != -1) {
+		switch (ch) {
+		case 'U':
+			if (gpt_uuid_parse(optarg, new_uuid) == -1)
+				return usage();
+			v = new_uuid;
+			break;
+		default:
+			if (gpt_add_find(gpt, &find, ch) == -1)
+				return usage();
+			break;
+		}
 	}
 
-	if (gpt == NULL || argc != optind)
+	if (argc != optind)
 		return usage();
 
-	rc = gpt_change_ent(gpt, &find, change_ent, NULL);
+	rc = gpt_change_ent(gpt, &find, change_ent, v);
 	if (rc != 0)
 		return rc;
 

Reply via email to