aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--coreutils/ls.c12
-rw-r--r--ls.c12
2 files changed, 22 insertions, 2 deletions
diff --git a/coreutils/ls.c b/coreutils/ls.c
index 385d6b2de..8d975fd13 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);
diff --git a/ls.c b/ls.c
index 385d6b2de..8d975fd13 100644
--- a/ls.c
+++ b/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);