summaryrefslogtreecommitdiffstats
path: root/usr.sbin/iostat
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2007-02-06 20:29:40 +0000
committerjhb <jhb@FreeBSD.org>2007-02-06 20:29:40 +0000
commitfb9d72e60d10e4d14b5b828c250a91cf7640f7bd (patch)
tree8a3dc6a8ca9146123b60325488bcbfddc1e9a865 /usr.sbin/iostat
parent2847eb0a1fe27d288e83ca2718fb8ca7938daf06 (diff)
downloadFreeBSD-src-fb9d72e60d10e4d14b5b828c250a91cf7640f7bd.zip
FreeBSD-src-fb9d72e60d10e4d14b5b828c250a91cf7640f7bd.tar.gz
Make iostat(8) fully work on crash dumps again (broken since 5.0):
- Pass the address of the variable we are reading to kvm_read() rather than the index into the nlist array. - Properly report errors from kvm_read() which returns -1 on error, not 0. MFC after: 3 days
Diffstat (limited to 'usr.sbin/iostat')
-rw-r--r--usr.sbin/iostat/iostat.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/usr.sbin/iostat/iostat.c b/usr.sbin/iostat/iostat.c
index 01c8c69..7446780 100644
--- a/usr.sbin/iostat/iostat.c
+++ b/usr.sbin/iostat/iostat.c
@@ -823,15 +823,16 @@ readvar(kvm_t *kd, const char *name, int nlid, void *ptr, size_t len)
if (kd != NULL) {
ssize_t nbytes;
- nbytes = kvm_read(kd, nlid, ptr, len);
+ nbytes = kvm_read(kd, namelist[nlid].n_value, ptr, len);
- if (nbytes == 0) {
- warnx("kvm_read(%s): %s", name, kvm_geterr(kd));
+ if (nbytes < 0) {
+ warnx("kvm_read(%s): %s", namelist[nlid].n_name,
+ kvm_geterr(kd));
return (1);
}
if (nbytes != len) {
- warnx("kvm_read(%s): expected %lu bytes, got %ld bytes",
- name, (unsigned long)len, (long)nbytes);
+ warnx("kvm_read(%s): expected %zu bytes, got %zd bytes",
+ namelist[nlid].n_name, len, nbytes);
return (1);
}
} else {
OpenPOWER on IntegriCloud