From 340b1635631b08be4554d937cf5895194b4733d6 Mon Sep 17 00:00:00 2001 From: Quentin Rameau Date: Thu, 18 Feb 2016 12:06:21 +0100 Subject: [PATCH] ls: do not exit when a directory isn't accessible Just print a warning and process next item instead, and return 1 to report this error. --- ls.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/ls.c b/ls.c index 72d7434..f5b3e76 100644 --- a/ls.c +++ b/ls.c @@ -32,6 +32,7 @@ static struct { ino_t ino; } tree[PATH_MAX]; +static int ret = 0; static int Aflag = 0; static int aflag = 0; static int cflag = 0; @@ -247,8 +248,11 @@ lsdir(const char *path, const struct entry *dir) size_t i, n = 0; char prefix[PATH_MAX]; - if (!(dp = opendir(dir->name))) - eprintf("opendir %s:", dir->name); + if (!(dp = opendir(dir->name))) { + ret = 1; + weprintf("opendir %s:", dir->name); + return; + } if (chdir(dir->name) < 0) eprintf("chdir %s:", dir->name); @@ -474,5 +478,5 @@ main(int argc, char *argv[]) free(dents); } - return fshut(stdout, ""); + return (fshut(stdout, "") | ret); }