diff options
-rw-r--r-- | coreutils/ls.c | 12 | ||||
-rw-r--r-- | ls.c | 12 |
2 files changed, 22 insertions, 2 deletions
diff --git a/coreutils/ls.c b/coreutils/ls.c index 385d6b2..8d975fd 100644 --- a/coreutils/ls.c +++ b/coreutils/ls.c @@ -790,7 +790,17 @@ extern int ls_main(int argc, char **argv) for (oi=0 ; oi < ac; oi++) { cur= (struct dnode *)xmalloc(sizeof(struct dnode)); cur->fullname= xstrdup(av[oi]); - cur->name= cur->fullname ; + cur->name= cur->fullname; +#ifdef BB_FEATURE_LS_FOLLOWLINKS + if (follow_links == TRUE) { + if (stat(av[oi], &cur->dstat)) { + errorMsg("%s: %s\n", av[oi], strerror(errno)); + free(cur->fullname); + free(cur); + continue; + } + } else +#endif if (lstat(av[oi], &cur->dstat)) { /* get file info into node */ errorMsg("%s: %s\n", av[oi], strerror(errno)); free(cur->fullname); @@ -790,7 +790,17 @@ extern int ls_main(int argc, char **argv) for (oi=0 ; oi < ac; oi++) { cur= (struct dnode *)xmalloc(sizeof(struct dnode)); cur->fullname= xstrdup(av[oi]); - cur->name= cur->fullname ; + cur->name= cur->fullname; +#ifdef BB_FEATURE_LS_FOLLOWLINKS + if (follow_links == TRUE) { + if (stat(av[oi], &cur->dstat)) { + errorMsg("%s: %s\n", av[oi], strerror(errno)); + free(cur->fullname); + free(cur); + continue; + } + } else +#endif if (lstat(av[oi], &cur->dstat)) { /* get file info into node */ errorMsg("%s: %s\n", av[oi], strerror(errno)); free(cur->fullname); |