From 3207dc4608dd1afa46fcdcc0b9eb7c3a3fe22882 Mon Sep 17 00:00:00 2001 From: Sascha Hauer Date: Mon, 3 Dec 2012 11:21:24 +0100 Subject: 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 --- commands/ls.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'commands/ls.c') 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); -- cgit v1.2.3