Changeset View
Changeset View
Standalone View
Standalone View
sbin/fsdb/fsdbutil.c
Show First 20 Lines • Show All 112 Lines • ▼ Show 20 Lines | printstat(const char *cp, ino_t inum, union dinode *dp) | ||||
struct group *grp; | struct group *grp; | ||||
struct passwd *pw; | struct passwd *pw; | ||||
ufs2_daddr_t blocks; | ufs2_daddr_t blocks; | ||||
int64_t gen; | int64_t gen; | ||||
char *p; | char *p; | ||||
time_t t; | time_t t; | ||||
printf("%s: ", cp); | printf("%s: ", cp); | ||||
switch (DIP(dp, di_mode) & IFMT) { | switch (DIP(dp, di_mode) & UFS_IFMT) { | ||||
case IFDIR: | case UFS_IFDIR: | ||||
puts("directory"); | puts("directory"); | ||||
break; | break; | ||||
case IFREG: | case UFS_IFREG: | ||||
puts("regular file"); | puts("regular file"); | ||||
break; | break; | ||||
case IFBLK: | case UFS_IFBLK: | ||||
printf("block special (%#jx)", (uintmax_t)DIP(dp, di_rdev)); | printf("block special (%#jx)", (uintmax_t)DIP(dp, di_rdev)); | ||||
break; | break; | ||||
case IFCHR: | case UFS_IFCHR: | ||||
printf("character special (%#jx)", DIP(dp, di_rdev)); | printf("character special (%#jx)", DIP(dp, di_rdev)); | ||||
break; | break; | ||||
case IFLNK: | case UFS_IFLNK: | ||||
fputs("symlink",stdout); | fputs("symlink",stdout); | ||||
if (DIP(dp, di_size) > 0 && | if (DIP(dp, di_size) > 0 && | ||||
DIP(dp, di_size) < sblock.fs_maxsymlinklen && | DIP(dp, di_size) < sblock.fs_maxsymlinklen && | ||||
DIP(dp, di_blocks) == 0) { | DIP(dp, di_blocks) == 0) { | ||||
if (sblock.fs_magic == FS_UFS1_MAGIC) | if (sblock.fs_magic == FS_UFS1_MAGIC) | ||||
p = (caddr_t)dp->dp1.di_db; | p = (caddr_t)dp->dp1.di_db; | ||||
else | else | ||||
p = (caddr_t)dp->dp2.di_db; | p = (caddr_t)dp->dp2.di_db; | ||||
printf(" to `%.*s'\n", (int) DIP(dp, di_size), p); | printf(" to `%.*s'\n", (int) DIP(dp, di_size), p); | ||||
} else { | } else { | ||||
putchar('\n'); | putchar('\n'); | ||||
} | } | ||||
break; | break; | ||||
case IFSOCK: | case UFS_IFSOCK: | ||||
puts("socket"); | puts("socket"); | ||||
break; | break; | ||||
case IFIFO: | case UFS_IFIFO: | ||||
puts("fifo"); | puts("fifo"); | ||||
break; | break; | ||||
} | } | ||||
printf("I=%ju MODE=%o SIZE=%ju", (uintmax_t)inum, DIP(dp, di_mode), | printf("I=%ju MODE=%o SIZE=%ju", (uintmax_t)inum, DIP(dp, di_mode), | ||||
(uintmax_t)DIP(dp, di_size)); | (uintmax_t)DIP(dp, di_size)); | ||||
if (sblock.fs_magic != FS_UFS1_MAGIC) { | if (sblock.fs_magic != FS_UFS1_MAGIC) { | ||||
t = _time64_to_time(dp->dp2.di_birthtime); | t = _time64_to_time(dp->dp2.di_birthtime); | ||||
p = ctime(&t); | p = ctime(&t); | ||||
▲ Show 20 Lines • Show All 171 Lines • ▼ Show 20 Lines | |||||
int | int | ||||
checkactivedir(void) | checkactivedir(void) | ||||
{ | { | ||||
if (!curinode) { | if (!curinode) { | ||||
warnx("no current inode\n"); | warnx("no current inode\n"); | ||||
return 0; | return 0; | ||||
} | } | ||||
if ((DIP(curinode, di_mode) & IFMT) != IFDIR) { | if ((DIP(curinode, di_mode) & UFS_IFMT) != UFS_IFDIR) { | ||||
warnx("inode %ju not a directory", (uintmax_t)curinum); | warnx("inode %ju not a directory", (uintmax_t)curinum); | ||||
return 0; | return 0; | ||||
} | } | ||||
return 1; | return 1; | ||||
} | } | ||||
int | int | ||||
printactive(int doblocks) | printactive(int doblocks) | ||||
{ | { | ||||
if (!checkactive()) | if (!checkactive()) | ||||
return 1; | return 1; | ||||
switch (DIP(curinode, di_mode) & IFMT) { | switch (DIP(curinode, di_mode) & UFS_IFMT) { | ||||
case IFDIR: | case UFS_IFDIR: | ||||
case IFREG: | case UFS_IFREG: | ||||
case IFBLK: | case UFS_IFBLK: | ||||
case IFCHR: | case UFS_IFCHR: | ||||
case IFLNK: | case UFS_IFLNK: | ||||
case IFSOCK: | case UFS_IFSOCK: | ||||
case IFIFO: | case UFS_IFIFO: | ||||
if (doblocks) | if (doblocks) | ||||
printblocks(curinum, curinode); | printblocks(curinum, curinode); | ||||
else | else | ||||
printstat("current inode", curinum, curinode); | printstat("current inode", curinum, curinode); | ||||
break; | break; | ||||
case 0: | case 0: | ||||
printf("current inode %ju: unallocated inode\n", (uintmax_t)curinum); | printf("current inode %ju: unallocated inode\n", (uintmax_t)curinum); | ||||
break; | break; | ||||
default: | default: | ||||
printf("current inode %ju: screwy itype 0%o (mode 0%o)?\n", | printf("current inode %ju: screwy itype 0%o (mode 0%o)?\n", | ||||
(uintmax_t)curinum, DIP(curinode, di_mode) & IFMT, | (uintmax_t)curinum, DIP(curinode, di_mode) & UFS_IFMT, | ||||
DIP(curinode, di_mode)); | DIP(curinode, di_mode)); | ||||
break; | break; | ||||
} | } | ||||
return 0; | return 0; | ||||
} | } |