In case it matters, the file system is ext4.

1) Create a directory:

  mkdir deleteme

and then run the following program:

import std;

void main() {
    foreach (e; dirEntries(absolutePath("./deleteme"), SpanMode.breadth)) {
        writeln(e.name);
    }
}

Understandably, the top level directory 'deleteme' will not be printed.

2) Make a sub-directory:

  mkdir deleteme/a

Running the program shows no output; 'a' is not visited as a directory entry.

3) Create a file inside the sub-directory:

  touch deleteme/a/x

Now the program will show 2 entries; the branch is accessible:

/home/ali/d/./deleteme/a
/home/ali/d/./deleteme/a/x

Imagine a program that wants to make sure the directory structure is intact, even the empty directories should exist. Can you think of a workaround to achieve that?

Do you think this is buggy behavior for dirEntries?

Ali

Reply via email to