diff options
author | Theo de Raadt <deraadt@cvs.openbsd.org> | 2010-09-24 00:11:16 +0000 |
---|---|---|
committer | Theo de Raadt <deraadt@cvs.openbsd.org> | 2010-09-24 00:11:16 +0000 |
commit | 28f7bbe1f362f59dd11ca8fe28737c20b11d1a82 (patch) | |
tree | 0e7e23d0b68314d04344778fbaf044bbd1344653 | |
parent | 2caa943e41da0e13cfd43716d449696c87cf736e (diff) |
Now that HW_DISKNAMES returns xx0: or xx0:uid entries, we must truncate
the : and uid components out -- otherwise these two programs will work
poorly.
-rw-r--r-- | sbin/raidctl/raidctl.c | 7 | ||||
-rw-r--r-- | usr.bin/vmstat/dkstats.c | 15 |
2 files changed, 19 insertions, 3 deletions
diff --git a/sbin/raidctl/raidctl.c b/sbin/raidctl/raidctl.c index 7f8c492e0a1..4251d81765d 100644 --- a/sbin/raidctl/raidctl.c +++ b/sbin/raidctl/raidctl.c @@ -1,4 +1,4 @@ -/* $OpenBSD: raidctl.c,v 1.30 2009/11/12 15:29:24 deraadt Exp $ */ +/* $OpenBSD: raidctl.c,v 1.31 2010/09/24 00:11:15 deraadt Exp $ */ /* $NetBSD: raidctl.c,v 1.27 2001/07/10 01:30:52 lukem Exp $ */ /*- @@ -1203,6 +1203,11 @@ get_all_devices(char ***diskarray, const char *genericname) i = 0; fp = disks; while ((p = strsep(&fp, ",")) != NULL) { + char *q = strchr(p, ':'); + + if (q) + *q = '\0'; + if (strstr((const char*)p, genericname) != NULL) { if (asprintf(&(*diskarray)[i++], "/dev/%s%c", p, 'a' + getrawpartition()) == -1) diff --git a/usr.bin/vmstat/dkstats.c b/usr.bin/vmstat/dkstats.c index f7877d52c4b..fbc0ddce74f 100644 --- a/usr.bin/vmstat/dkstats.c +++ b/usr.bin/vmstat/dkstats.c @@ -1,4 +1,4 @@ -/* $OpenBSD: dkstats.c,v 1.34 2010/07/20 19:43:19 lum Exp $ */ +/* $OpenBSD: dkstats.c,v 1.35 2010/09/24 00:11:15 deraadt Exp $ */ /* $NetBSD: dkstats.c,v 1.1 1996/05/10 23:19:27 thorpej Exp $ */ /* @@ -198,8 +198,14 @@ dkreadstats(void) if (sysctl(mib, 2, disknames, &size, NULL, 0) < 0) err(1, "can't get hw.disknames"); bufpp = disknames; - for (i = 0; i < dk_ndrive && (name = strsep(&bufpp, ",")) != NULL; i++) + for (i = 0; i < dk_ndrive && + (name = strsep(&bufpp, ",")) != NULL; i++) dk_name[i] = name; + for (i = 0; i < dk_ndrive; i++) { + char *p = strchr(dk_name[i], ':'); + if (p) + *p = '\0'; + } disknames = cur.dk_name[0]; /* To free old names. */ if (dk_ndrive < cur.dk_ndrive) { @@ -528,6 +534,11 @@ dkinit(int sel) cur.dk_name[i] = name; cur.dk_select[i] = sel; } + for (i = 0; i < dk_ndrive; i++) { + char *p = strchr(cur.dk_name[i], ':'); + if (p) + *p = '\0'; + } } else { #if !defined(NOKVM) p = dk_drivehead; |