From nobody Tue Jan 24 22:13:17 2023
X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
	by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4P1h7L136pz3bg8g;
	Tue, 24 Jan 2023 22:13:18 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3])
	(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
	 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256
	 client-signature RSA-PSS (4096 bits) client-digest SHA256)
	(Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK))
	by mx1.freebsd.org (Postfix) with ESMTPS id 4P1h7L07RDz3GGw;
	Tue, 24 Jan 2023 22:13:18 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim;
	t=1674598398;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding;
	bh=3BHFI4+QMzMWGDp2aoESuPXPmMINCQLTBEBtKsF0Ek8=;
	b=pnysvoO/sVFOxgd6sgfMjZVlIypqS9genqOYaUhGzAj0V9/zKxUOuynA4sl/7jJQoPecTP
	ji0mX4f0jRnsOg9poyM/Yt2l0vF8A2h+b8ofdWh0FsKZjHi0eRJ6nhEqVr9MZJ8PVKLnw+
	UUZYkFUg/ZZ1wwnqiVcusECFQCdyDIvHNncjoOtnGcfHBB6nSUNMRQiWDebjI9VLRoZgbk
	/QJiJW5/51RUshE1j0rtjlwm2hZRrNOMbcj1+6fFwi0A0ClwjKpjHYQHq5E7p0VP23nA8C
	mAd6UPQ+VWP0EVoBDzIO+V1GAGATTHmbOnjvtIup8SEsxDggV/nTbjsPINOmoA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org;
	s=dkim; t=1674598398;
	h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
	 to:to:cc:mime-version:mime-version:content-type:content-type:
	 content-transfer-encoding:content-transfer-encoding;
	bh=3BHFI4+QMzMWGDp2aoESuPXPmMINCQLTBEBtKsF0Ek8=;
	b=FxGmYI1nbdy6Q0BG3qvvM028nlMzoT3SyFfEuJcZx6l2y3Df95+qmiTP9uEnuRGRzwBcVh
	oXQC/m2Khrz3Kgio7vePdyc161CX0vv7WeUlTmPGAfvpP3DSkhCxC5uKeN/vhRxKIoi+8m
	lLxOfM/Wc+4poVemRQ21FQn+teWH/1zQtolvGHDrv3FRwIp+n9XAZmKGbDuh1l5gudDLdB
	PLD5IEG5w1SSHcTEb5cnew3CZrt4S28mSVzt6yDddrbGNSmMh0D5ZEfEfEp7MS2KVKByIl
	zOQjgNLeq/IE8xDdocZpwYY3604FKsEFhdMK9oAa2YWch/0STBojcoawnR7lLA==
ARC-Authentication-Results: i=1;
	mx1.freebsd.org;
	none
ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1674598398; a=rsa-sha256; cv=none;
	b=B5ekuP1PtSUr0otXsSoQmzhudPpHPoJmvDOAfkbgV8hV1eJcO+1Ga6GuHjhTVXxcc0rl8W
	nxcIaXIHlgEWtaZbhRie5797Pt2rtJur/lPw7Wspahp6Rs29c1vLoTBUpomLk8gTJ9Tw67
	VVH3FH0JHnPEJTGl/yhyXtiza1cCRGPAFXenBtiY3N3oNV9DIW+mgOjrBoglqTiUL3Rk2i
	yjh/+PuKrkyq15MQnSVnrs8hGLYOQ9PNVGMQdaKfoMtrN5De69sq8y55xKfhUqoHbHXsmH
	+inwlYyFy+BdiBFH0Qi3Hz4PDrAtodTDvzP4L9as1TwimwRUbZWGr5FHjx04gg==
Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5])
	(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
	 key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
	(Client did not present a certificate)
	by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4P1h7K5zp5zQYg;
	Tue, 24 Jan 2023 22:13:17 +0000 (UTC)
	(envelope-from git@FreeBSD.org)
Received: from gitrepo.freebsd.org ([127.0.1.44])
	by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 30OMDHft088223;
	Tue, 24 Jan 2023 22:13:17 GMT
	(envelope-from git@gitrepo.freebsd.org)
Received: (from git@localhost)
	by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 30OMDHug088222;
	Tue, 24 Jan 2023 22:13:17 GMT
	(envelope-from git)
Date: Tue, 24 Jan 2023 22:13:17 GMT
Message-Id: <202301242213.30OMDHug088222@gitrepo.freebsd.org>
To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org,
        dev-commits-src-branches@FreeBSD.org
From: Warner Losh <imp@FreeBSD.org>
Subject: git: 8bf426402870 - stable/13 - stand/userboot: Move to using common devparse()
List-Id: Commits to the stable branches of the FreeBSD src repository <dev-commits-src-branches.freebsd.org>
List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches
List-Help: <mailto:dev-commits-src-branches+help@freebsd.org>
List-Post: <mailto:dev-commits-src-branches@freebsd.org>
List-Subscribe: <mailto:dev-commits-src-branches+subscribe@freebsd.org>
List-Unsubscribe: <mailto:dev-commits-src-branches+unsubscribe@freebsd.org>
Sender: owner-dev-commits-src-branches@freebsd.org
X-BeenThere: dev-commits-src-branches@freebsd.org
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Git-Committer: imp
X-Git-Repository: src
X-Git-Refname: refs/heads/stable/13
X-Git-Reftype: branch
X-Git-Commit: 8bf42640287058b8af67dbeef702a5d7a7fe6407
Auto-Submitted: auto-generated
X-ThisMailContainsUnwantedMimeParts: N

The branch stable/13 has been updated by imp:

URL: https://cgit.FreeBSD.org/src/commit/?id=8bf42640287058b8af67dbeef702a5d7a7fe6407

commit 8bf42640287058b8af67dbeef702a5d7a7fe6407
Author:     Warner Losh <imp@FreeBSD.org>
AuthorDate: 2022-11-30 22:09:05 +0000
Commit:     Warner Losh <imp@FreeBSD.org>
CommitDate: 2023-01-24 21:49:39 +0000

    stand/userboot: Move to using common devparse()
    
    We no longer need to have to hand-code this for each boot loader since
    devparse() handles them all with dv_parsedev().
    
    Sponsored by:           Netflix
    Differential Revision:  https://reviews.freebsd.org/D37342
    
    (cherry picked from commit 910de60a7e43c593b5126b2f1ee468c089c8116e)
---
 stand/userboot/userboot/devicename.c | 119 +----------------------------------
 1 file changed, 3 insertions(+), 116 deletions(-)

diff --git a/stand/userboot/userboot/devicename.c b/stand/userboot/userboot/devicename.c
index c8b46e7f590c..e6d7e9706c18 100644
--- a/stand/userboot/userboot/devicename.c
+++ b/stand/userboot/userboot/devicename.c
@@ -34,13 +34,6 @@ __FBSDID("$FreeBSD$");
 #include "disk.h"
 #include "libuserboot.h"
 
-#if defined(USERBOOT_ZFS_SUPPORT)
-#include "libzfs.h"
-#endif
-
-static int userboot_parsedev(struct devdesc **dev, const char *devspec,
-    const char **path);
-
 /*
  * Point (dev) at an allocated device specifier for the device matching the
  * path in (devspec). If it contains an explicit device specification,
@@ -60,7 +53,7 @@ userboot_getdev(void **vdev, const char *devspec, const char **path)
 	    (devspec[0] == '/') ||
 	    (strchr(devspec, ':') == NULL)) {
 
-		rv = userboot_parsedev(dev, getenv("currdev"), NULL);
+		rv = devparse(dev, getenv("currdev"), NULL);
 		if (rv == 0 && path != NULL)
 			*path = devspec;
 		return (rv);
@@ -69,115 +62,9 @@ userboot_getdev(void **vdev, const char *devspec, const char **path)
 	/*
 	 * Try to parse the device name off the beginning of the devspec
 	 */
-	return (userboot_parsedev(dev, devspec, path));
+	return (devparse(dev, devspec, path));
 }
 
-/*
- * Point (dev) at an allocated device specifier matching the string version
- * at the beginning of (devspec).  Return a pointer to the remaining
- * text in (path).
- *
- * In all cases, the beginning of (devspec) is compared to the names
- * of known devices in the device switch, and then any following text
- * is parsed according to the rules applied to the device type.
- *
- * For disk-type devices, the syntax is:
- *
- * disk<unit>[s<slice>][<partition>]:
- *
- */
-static int
-userboot_parsedev(struct devdesc **dev, const char *devspec,
-    const char **path)
-{
-	struct devdesc *idev;
-	struct devsw *dv;
-	int i, unit, err;
-	const char *cp;
-	const char *np;
-
-	/* minimum length check */
-	if (strlen(devspec) < 2)
-		return (EINVAL);
-
-	/* look for a device that matches */
-	for (i = 0, dv = NULL; devsw[i] != NULL; i++) {
-		if (strncmp(devspec, devsw[i]->dv_name,
-		    strlen(devsw[i]->dv_name)) == 0) {
-			dv = devsw[i];
-			break;
-		}
-	}
-	if (dv == NULL)
-		return (ENOENT);
-	idev = malloc(sizeof(struct disk_devdesc));
-	err = 0;
-	np = (devspec + strlen(dv->dv_name));
-
-	switch (dv->dv_type) {
-	case DEVT_NONE:			/* XXX what to do here?  Do we care? */
-		break;
-
-	case DEVT_DISK:
-		free(idev);
-		err = disk_parsedev(&idev, np, path);
-		if (err != 0)
-			goto fail;
-		break;
-
-	case DEVT_CD:
-	case DEVT_NET:
-		unit = 0;
-
-		if (*np && (*np != ':')) {
-			/* get unit number if present */
-			unit = strtol(np, (char **)&cp, 0);
-			if (cp == np) {
-				err = EUNIT;
-				goto fail;
-			}
-		} else {
-			cp = np;
-		}
-		if (*cp && (*cp != ':')) {
-			err = EINVAL;
-			goto fail;
-		}
-
-		idev->d_unit = unit;
-		if (path != NULL)
-			*path = (*cp == 0) ? cp : cp + 1;
-		break;
-
-	case DEVT_ZFS:
-#if defined(USERBOOT_ZFS_SUPPORT)
-		free(idev);
-		err = zfs_parsedev(&idev, np, path);
-		if (err != 0)
-			goto fail;
-		break;
-#else
-		/* FALLTHROUGH */
-#endif
-
-	default:
-		err = EINVAL;
-		goto fail;
-	}
-	idev->d_dev = dv;
-	if (dev == NULL) {
-		free(idev);
-	} else {
-		*dev = idev;
-	}
-	return (0);
-
-fail:
-	free(idev);
-	return (err);
-}
-
-
 /*
  * Set currdev to suit the value being supplied in (value)
  */
@@ -187,7 +74,7 @@ userboot_setcurrdev(struct env_var *ev, int flags, const void *value)
 	struct devdesc *ncurr;
 	int rv;
 
-	if ((rv = userboot_parsedev(&ncurr, value, NULL)) != 0)
+	if ((rv = devparse(&ncurr, value, NULL)) != 0)
 		return (rv);
 	free(ncurr);