1/*- 2 * Copyright (c) 1998 Michael Smith <msmith@freebsd.org> 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 11 unchanged lines hidden (view full) --- 20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24 * SUCH DAMAGE. 25 */ 26 27#include <sys/cdefs.h> |
28__FBSDID("$FreeBSD: head/sys/boot/i386/libi386/devicename.c 163897 2006-11-02 01:23:18Z marcel $"); |
29 30#include <stand.h> 31#include <string.h> 32#include <sys/disklabel.h> 33#include "bootstrap.h" 34#include "libi386.h" 35 36static int i386_parsedev(struct i386_devdesc **dev, const char *devspec, const char **path); --- 100 unchanged lines hidden (view full) --- 137 cp++; 138 } 139 } 140 if (*cp && (*cp != ':')) { 141 err = EINVAL; 142 goto fail; 143 } 144 |
145 idev->d_unit = unit; |
146 idev->d_kind.biosdisk.slice = slice; 147 idev->d_kind.biosdisk.partition = partition; 148 if (path != NULL) 149 *path = (*cp == 0) ? cp : cp + 1; 150 break; 151 152 case DEVT_CD: 153 case DEVT_NET: --- 6 unchanged lines hidden (view full) --- 160 goto fail; 161 } 162 } 163 if (*cp && (*cp != ':')) { 164 err = EINVAL; 165 goto fail; 166 } 167 |
168 idev->d_unit = unit; |
169 if (path != NULL) 170 *path = (*cp == 0) ? cp : cp + 1; 171 break; 172 173 default: 174 err = EINVAL; 175 goto fail; 176 } --- 20 unchanged lines hidden (view full) --- 197 char *cp; 198 199 switch(dev->d_type) { 200 case DEVT_NONE: 201 strcpy(buf, "(no device)"); 202 break; 203 204 case DEVT_CD: |
205 sprintf(buf, "%s%d:", dev->d_dev->dv_name, dev->d_unit); |
206 break; 207 208 case DEVT_DISK: 209 cp = buf; |
210 cp += sprintf(cp, "%s%d", dev->d_dev->dv_name, dev->d_unit); |
211 if (dev->d_kind.biosdisk.slice > 0) 212 cp += sprintf(cp, "s%d", dev->d_kind.biosdisk.slice); 213 if (dev->d_kind.biosdisk.partition >= 0) 214 cp += sprintf(cp, "%c", dev->d_kind.biosdisk.partition + 'a'); 215 strcat(cp, ":"); 216 break; 217 218 case DEVT_NET: |
219 sprintf(buf, "%s%d:", dev->d_dev->dv_name, dev->d_unit); |
220 break; 221 } 222 return(buf); 223} 224 225 226/* 227 * Set currdev to suit the value being supplied in (value) --- 14 unchanged lines hidden --- |