diff options
author | 2013-10-09 20:11:41 +0000 | |
---|---|---|
committer | 2013-10-09 20:11:41 +0000 | |
commit | 9c951bc8893ebb826489b323459c56a97babb21e (patch) | |
tree | f92a4d1ee263a2d179007a4d3b28833e6133f25f | |
parent | Fix build (forgot to rerun make depend) (diff) | |
download | wireguard-openbsd-9c951bc8893ebb826489b323459c56a97babb21e.tar.xz wireguard-openbsd-9c951bc8893ebb826489b323459c56a97babb21e.zip |
Parse (hex) partition number in boot path. For experts only.
-rw-r--r-- | sys/arch/aviion/stand/boot/devopen.c | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/sys/arch/aviion/stand/boot/devopen.c b/sys/arch/aviion/stand/boot/devopen.c index 35a3307793b..c4752d35dab 100644 --- a/sys/arch/aviion/stand/boot/devopen.c +++ b/sys/arch/aviion/stand/boot/devopen.c @@ -1,4 +1,4 @@ -/* $OpenBSD: devopen.c,v 1.1 2013/10/08 21:55:21 miod Exp $ */ +/* $OpenBSD: devopen.c,v 1.2 2013/10/09 20:11:41 miod Exp $ */ /* * Copyright (c) 2013 Miodrag Vallat. @@ -41,9 +41,16 @@ devopen(struct open_file *f, const char *fname, char **file) /* * Attempt to parse the name as - * ctrlnam([num[,unit[,lun]]])[:partname/]filename + * ctrlnam([num[,unit[,lun]]])[partname:]filename * or - * devnam(ctrlnam([addr|num])[,unit[,lun]])[:partname/]filename + * devnam(addr|num|ctrlnam([addr|num][,initiator])[,unit[,lun]]) + * [partname:]filename + * + * With device names being "sd" or "st" for storage devices, + * or a controller name for network devices, and controller names + * being four letter long ("dgen", "dgsc", "inen", "ncsc" ...) + * + * Initiator id is always ignored. */ po = strchr(fname, '('); @@ -111,7 +118,17 @@ devopen(struct open_file *f, const char *fname, char **file) /* no controller, keep defaults */ } - while (*fname == '/') + /* XXX parse partition: */ + p = strchr(fname, ':'); + if (p != NULL) { + if (*fname > '9') + part = strtol(fname, NULL, 16); + else + part = strtol(fname, NULL, 0); + fname = p + 1; + } + + while (*fname == '/' || *fname == ':') fname++; *file = (char *)fname; |