From abd97354d9837c11287c52eec774788a4148b590 Mon Sep 17 00:00:00 2001 From: andersen Date: Mon, 9 Oct 2000 17:51:25 +0000 Subject: Apply a patch from Matt Kraai: "The -L option to ls doesn't behave correctly for files listed explicitly on the command line, only those in directories that are listed. The appended patch fixes this problem. Would someone please commit it?" -Erik git-svn-id: svn://busybox.net/trunk/busybox@1172 69ca8d6d-28ef-0310-b511-8ec308f3f277 --- coreutils/ls.c | 12 +++++++++++- ls.c | 12 +++++++++++- 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); -- cgit v1.2.3-55-g6feb