On Sat, 04 Jul 2020 20:59:08 +0200, Richard Ipsum wrote:

> Output of ls -R between OpenBSD and GNU coreutils seems to differ,
> OpenBSD ls -R will apparently list "hidden" directories like .git,
> whereas GNU coreutils will not, is this expected behaviour or a bug?

I think this is actually a bug.  Historic behavior is to not descend
into directories that begin with a '.'.  Our existing ls code looks
like it is written to support that behavior but is missing one
thing.

 - todd

Index: bin/ls/ls.c
===================================================================
RCS file: /cvs/src/bin/ls/ls.c,v
retrieving revision 1.51
diff -u -p -u -r1.51 ls.c
--- bin/ls/ls.c 13 Sep 2018 15:23:32 -0000      1.51
+++ bin/ls/ls.c 4 Jul 2020 20:13:39 -0000
@@ -369,8 +369,11 @@ traverse(int argc, char *argv[], int opt
                switch (p->fts_info) {
                case FTS_D:
                        if (p->fts_name[0] == '.' &&
-                           p->fts_level != FTS_ROOTLEVEL && !f_listdot)
+                           p->fts_level != FTS_ROOTLEVEL && !f_listdot) {
+                               if (fts_set(ftsp, p, FTS_SKIP))
+                                       err(1, "%s", p->fts_path);
                                break;
+                       }
 
                        /*
                         * If already output something, put out a newline as

Reply via email to