Skip to content
Snippets Groups Projects
Forked from cmucl / cmucl
Source project has a limited visibility.
Raymond Toy's avatar
Raymond Toy authored
Fix: directory followed symlinks with :follow-links nil

I'm on Linux. I'm looking at a directory that contains both physical directories and symbolic links to directories.

### What I would expect: 
```common-lisp
(directory "/path/to/dir/*.*" :check-for-subdirs t :follow-links t :truenamep nil)
```

will show both (because it will show everything in that directory) and mark both types as directories with trailing slashes.
```common-lisp
(directory "/path/to/dir/*.*" :check-for-subdirs t :follow-links nil :truenamep nil)
```

will again show all files but only add trailing slashes to the physical subdirectories.

### What actually happens
Both commands give me the same output. That is because `directory` calls `unix:unix-file-kind` to categorise files into directory/link/etc., which internally calls `stat`. It will only use `lstat` if the second, optional argument is passed as **t**. In default mode (the way it currently is) symlinks to directories will be assigned the type :directory regardless of the flags passed to `directory`.

I believe the change contained in this merge request is thus the correct fix.

See merge request !15
4bf2062f
History
Name Last commit Last update
..