diff options
author | Nate Lawson <njl@FreeBSD.org> | 2002-09-14 18:51:10 +0000 |
---|---|---|
committer | Nate Lawson <njl@FreeBSD.org> | 2002-09-14 18:51:10 +0000 |
commit | e47c2178447a2a219ef6732966089dbd0223f677 (patch) | |
tree | ee5a1f2c7c4df6a65881f254e38b8c4670108428 /usr.bin | |
parent | 6c788325fac88eebc377a7bdf2e90c2e8baf79e2 (diff) | |
download | src-e47c2178447a2a219ef6732966089dbd0223f677.tar.gz src-e47c2178447a2a219ef6732966089dbd0223f677.zip |
Userland changes to go with vnode->v_tag change.
Notes
Notes:
svn path=/head/; revision=103325
Diffstat (limited to 'usr.bin')
-rw-r--r-- | usr.bin/fstat/fstat.c | 41 |
1 files changed, 18 insertions, 23 deletions
diff --git a/usr.bin/fstat/fstat.c b/usr.bin/fstat/fstat.c index 4d1c10f3cf27..38736ff53d88 100644 --- a/usr.bin/fstat/fstat.c +++ b/usr.bin/fstat/fstat.c @@ -474,7 +474,7 @@ vtrans(vp, i, flag) { struct vnode vn; struct filestat fst; - char rw[3], mode[15]; + char rw[3], mode[15], tagstr[12], *tagptr; const char *badtype, *filename; filename = badtype = NULL; @@ -483,42 +483,37 @@ vtrans(vp, i, flag) (void *)vp, Pid); return; } - if (vn.v_type == VNON || vn.v_tag == VT_NON) + if (!KVM_READ(&vp->v_tag, &tagptr, sizeof tagptr) || + !KVM_READ(tagptr, tagstr, sizeof tagstr)) { + dprintf(stderr, "can't read v_tag at %p for pid %d\n", + (void *)vp, Pid); + return; + } + tagstr[sizeof(tagstr) - 1] = '\0'; + if (vn.v_type == VNON) badtype = "none"; else if (vn.v_type == VBAD) badtype = "bad"; - else - switch (vn.v_tag) { - case VT_UFS: + else { + if (!strcmp("ufs", tagstr)) { if (!ufs_filestat(&vn, &fst)) badtype = "error"; - break; - - case VT_DEVFS: + } else if (!strcmp("devfs", tagstr)) { if (!devfs_filestat(&vn, &fst)) badtype = "error"; - break; - - case VT_NFS: + } else if (!strcmp("nfs", tagstr)) { if (!nfs_filestat(&vn, &fst)) badtype = "error"; - break; - - case VT_MSDOSFS: + } else if (!strcmp("msdosfs", tagstr)) { if (!msdosfs_filestat(&vn, &fst)) badtype = "error"; - break; - - case VT_ISOFS: + } else if (!strcmp("isofs", tagstr)) { if (!isofs_filestat(&vn, &fst)) badtype = "error"; - break; - - default: { - static char unknown[10]; - sprintf(unknown, "?(%x)", vn.v_tag); + } else { + static char unknown[32]; + snprintf(unknown, sizeof unknown, "?(%s)", tagstr); badtype = unknown; - break;; } } if (checkfile) { |