diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2012-12-03 11:21:24 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2012-12-03 11:23:25 +0100 |
commit | 3207dc4608dd1afa46fcdcc0b9eb7c3a3fe22882 (patch) | |
tree | b4bb2c99632b86bbe901113ee4c9062a2d5e2f0b /commands | |
parent | a912f55a6c6a9486712248ebefb053d98501a153 (diff) | |
download | barebox-3207dc4608dd1afa46fcdcc0b9eb7c3a3fe22882.tar.gz barebox-3207dc4608dd1afa46fcdcc0b9eb7c3a3fe22882.tar.xz |
ls command: call stat() only when necessary
When calling ls in short mode we do not have to call stat()
for additional informations because we do not use them. This
speeds up ls on filesystems on which stat() is expensive
because the barebox filesystem support always has to iterate
over the directory tree.
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'commands')
-rw-r--r-- | commands/ls.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/commands/ls.c b/commands/ls.c index 1fdb24406d..f2d990340f 100644 --- a/commands/ls.c +++ b/commands/ls.c @@ -73,12 +73,13 @@ int ls(const char *path, ulong flags) while ((d = readdir(dir))) { sprintf(tmp, "%s/%s", path, d->d_name); - if (lstat(tmp, &s)) - goto out; - if (flags & LS_COLUMN) + if (flags & LS_COLUMN) { string_list_add_sorted(&sl, d->d_name); - else + } else { + if (lstat(tmp, &s)) + goto out; ls_one(d->d_name, tmp, &s); + } } closedir(dir); |