Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F107322643
D37340.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
2 KB
Referenced Files
None
Subscribers
None
D37340.diff
View Options
diff --git a/stand/efi/libefi/devicename.c b/stand/efi/libefi/devicename.c
--- a/stand/efi/libefi/devicename.c
+++ b/stand/efi/libefi/devicename.c
@@ -39,8 +39,6 @@
#include <efilib.h>
#include <efizfs.h>
-static int efi_parsedev(struct devdesc **, const char *, const char **);
-
/*
* Point (dev) at an allocated device specifier for the device matching the
* path in (devspec). If it contains an explicit device specification,
@@ -57,110 +55,13 @@
* use the current device instead.
*/
if (devspec == NULL || *devspec == '/' || !strchr(devspec, ':')) {
- rv = efi_parsedev(dev, getenv("currdev"), NULL);
+ rv = devparse(dev, getenv("currdev"), NULL);
if (rv == 0 && path != NULL)
*path = devspec;
return (rv);
}
- /* Parse the device name off the beginning of the devspec. */
- return (efi_parsedev(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:
- *
- * fs<unit>:
- */
-static int
-efi_parsedev(struct devdesc **dev, const char *devspec, const char **path)
-{
- struct devdesc *idev;
- struct devsw *dv;
- int i, unit, err;
- char *cp;
- const char *np;
-
- /* minimum length check */
- if (strlen(devspec) < 2)
- return (EINVAL);
-
- /* look for a device that matches */
- for (i = 0; devsw[i] != NULL; i++) {
- dv = devsw[i];
- if (!strncmp(devspec, dv->dv_name, strlen(dv->dv_name)))
- break;
- }
- if (devsw[i] == NULL)
- return (ENOENT);
-
- np = devspec + strlen(dv->dv_name);
- idev = NULL;
- err = 0;
-
- switch (dv->dv_type) {
- case DEVT_NONE:
- break;
-
- case DEVT_DISK:
- err = disk_parsedev(&idev, np, path);
- if (err != 0)
- goto fail;
- break;
-
-#ifdef EFI_ZFS_BOOT
- case DEVT_ZFS:
- err = zfs_parsedev(&idev, np, path);
- if (err != 0)
- goto fail;
- break;
-#endif
- default:
- idev = malloc(sizeof(struct devdesc));
- if (idev == NULL)
- return (ENOMEM);
-
- unit = 0;
- cp = (char *)np;
-
- if (*np != '\0' && *np != ':') {
- errno = 0;
- unit = strtol(np, &cp, 0);
- if (errno != 0 || cp == np) {
- err = EUNIT;
- goto fail;
- }
- }
- if (*cp != '\0' && *cp != ':') {
- err = EINVAL;
- goto fail;
- }
-
- idev->d_unit = unit;
- if (path != NULL)
- *path = (*cp == 0) ? cp : cp + 1;
- break;
- }
-
- idev->d_dev = dv;
-
- if (dev != NULL)
- *dev = idev;
- else
- free(idev);
- return (0);
-
-fail:
- free(idev);
- return (err);
+ return (devparse(dev, devspec, path));
}
/*
@@ -172,7 +73,7 @@
struct devdesc *ncurr;
int rv;
- rv = efi_parsedev(&ncurr, value, NULL);
+ rv = devparse(&ncurr, value, NULL);
if (rv != 0)
return (rv);
free(ncurr);
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Mon, Jan 13, 11:47 AM (20 h, 40 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
15781504
Default Alt Text
D37340.diff (2 KB)
Attached To
Mode
D37340: stand/efi: Move to using common devparse()
Attached
Detach File
Event Timeline
Log In to Comment