mirror of
https://github.com/opnsense/src.git
synced 2026-06-08 16:22:46 -04:00
- Ease sanity check to get cylinders.
- Get the slice name from the result of kern.geom.conftxt.
This commit is contained in:
parent
d101bd6452
commit
1cfcbbd71c
1 changed files with 12 additions and 6 deletions
|
|
@ -102,7 +102,7 @@ Int_Open_Disk(const char *name)
|
|||
struct disk *d;
|
||||
size_t txtsize;
|
||||
int error, i;
|
||||
char *p, *q, *r, *a, *b, *n, *t;
|
||||
char *p, *q, *r, *a, *b, *n, *t, *sn;
|
||||
off_t o, len, off;
|
||||
u_int l, s, ty, sc, hd, alt;
|
||||
off_t lo[10];
|
||||
|
|
@ -195,7 +195,7 @@ Int_Open_Disk(const char *name)
|
|||
* an obvious insanity, we set the number of cyclinders to zero.
|
||||
*/
|
||||
o = d->bios_hd * d->bios_sect;
|
||||
d->bios_cyl = (o != 0 && (len % o) == 0) ? len / o : 0;
|
||||
d->bios_cyl = (o != 0) ? len / o : 0;
|
||||
|
||||
p = q;
|
||||
lo[0] = 0;
|
||||
|
|
@ -212,7 +212,7 @@ Int_Open_Disk(const char *name)
|
|||
printf("BARF %d <%d>\n", __LINE__, *r);
|
||||
exit (0);
|
||||
}
|
||||
t = strsep(&p, " "); /* Type {SUN, BSD, MBR, GPT} */
|
||||
t = strsep(&p, " "); /* Type {SUN, BSD, MBR, PC98, GPT} */
|
||||
n = strsep(&p, " "); /* name */
|
||||
a = strsep(&p, " "); /* len */
|
||||
len = strtoimax(a, &r, 0);
|
||||
|
|
@ -230,6 +230,11 @@ Int_Open_Disk(const char *name)
|
|||
a = strsep(&p, " ");
|
||||
if (a == NULL)
|
||||
break;
|
||||
/* XXX: Slice name may include a space. */
|
||||
if (!strcmp(a, "sn")) {
|
||||
sn = p;
|
||||
break;
|
||||
}
|
||||
b = strsep(&p, " ");
|
||||
o = strtoimax(b, &r, 0);
|
||||
if (*r) {
|
||||
|
|
@ -310,17 +315,18 @@ Int_Open_Disk(const char *name)
|
|||
else if (!strcmp(t, "PC98")) {
|
||||
switch (ty & 0x7f) {
|
||||
case 0x14:
|
||||
i = Add_Chunk(d, off, len, n, freebsd, ty, 0, 0);
|
||||
i = Add_Chunk(d, off, len, n, freebsd, ty, 0,
|
||||
sn);
|
||||
break;
|
||||
case 0x20:
|
||||
case 0x21:
|
||||
case 0x22:
|
||||
case 0x23:
|
||||
case 0x24:
|
||||
i = Add_Chunk(d, off, len, n, fat, ty, 0, 0);
|
||||
i = Add_Chunk(d, off, len, n, fat, ty, 0, sn);
|
||||
break;
|
||||
default:
|
||||
i = Add_Chunk(d, off, len, n, pc98, ty, 0, 0);
|
||||
i = Add_Chunk(d, off, len, n, pc98, ty, 0, sn);
|
||||
break;
|
||||
}
|
||||
} else if (!strcmp(t, "GPT"))
|
||||
|
|
|
|||
Loading…
Reference in a new issue