aboutsummaryrefslogtreecommitdiff
path: root/toys/posix
diff options
context:
space:
mode:
Diffstat (limited to 'toys/posix')
-rw-r--r--toys/posix/file.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/toys/posix/file.c b/toys/posix/file.c
index 17bc45f7..869bf108 100644
--- a/toys/posix/file.c
+++ b/toys/posix/file.c
@@ -455,8 +455,12 @@ void file_main(void)
xprintf("%s: %*s", name, (int)(TT.max_name_len - strlen(name)), "");
sb.st_size = 0;
- if (fd || !((toys.optflags & FLAG_L) ? stat : lstat)(name, &sb)) {
- if (fd || S_ISREG(sb.st_mode)) {
+ if (fd || !(FLAG(L) ? stat : lstat)(name, &sb)) {
+ if (!fd && !FLAG(s) && (S_ISBLK(sb.st_mode) || S_ISCHR(sb.st_mode))) {
+ sprintf(what = toybuf, "%s special (%u/%u)",
+ S_ISBLK(sb.st_mode) ? "block" : "character",
+ dev_major(sb.st_rdev), dev_minor(sb.st_rdev));
+ } else if (fd || S_ISREG(sb.st_mode)) {
TT.len = sb.st_size;
// This test identifies an empty file we don't have permission to read
if (!fd && !sb.st_size) what = "empty";
@@ -466,10 +470,6 @@ void file_main(void)
continue;
}
} else if (S_ISFIFO(sb.st_mode)) what = "fifo";
- else if (S_ISBLK(sb.st_mode) || S_ISCHR(sb.st_mode))
- sprintf(what = toybuf, "%s special (%u/%u)",
- S_ISBLK(sb.st_mode) ? "block" : "character",
- dev_major(sb.st_rdev), dev_minor(sb.st_rdev));
else if (S_ISDIR(sb.st_mode)) what = "directory";
else if (S_ISSOCK(sb.st_mode)) what = "socket";
else if (S_ISLNK(sb.st_mode)) {