aboutsummaryrefslogtreecommitdiff
path: root/toys
diff options
context:
space:
mode:
Diffstat (limited to 'toys')
-rw-r--r--toys/posix/ls.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/toys/posix/ls.c b/toys/posix/ls.c
index fbd2405c..4ae352af 100644
--- a/toys/posix/ls.c
+++ b/toys/posix/ls.c
@@ -583,9 +583,13 @@ void ls_main(void)
dt = dirtree_add_node(0, *s, DIRTREE_STATLESS|DIRTREE_SYMFOLLOW*sym);
- // note: double_list->prev temporarirly goes in dirtree->parent
- if (dt) dlist_add_nomalloc((void *)&TT.files->child, (void *)dt);
- else toys.exitval = 1;
+ // note: double_list->prev temporarily goes in dirtree->parent
+ if (dt) {
+ if (!dt->st.st_blksize && !dt->st.st_dev && !dt->st.st_ino) {
+ perror_msg_raw(*s);
+ free(dt);
+ } else dlist_add_nomalloc((void *)&TT.files->child, (void *)dt);
+ } else toys.exitval = 1;
}
// Convert double_list into dirtree.