Skip to content
Snippets Groups Projects
Commit 4bf2062f authored by Raymond Toy's avatar Raymond Toy
Browse files

Merge branch 'master' into 'master'

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
parents 3d18025d 17499591
No related branches found
No related tags found
No related merge requests found
...@@ -1125,7 +1125,7 @@ optionally keeping some of the most recent old versions." ...@@ -1125,7 +1125,7 @@ optionally keeping some of the most recent old versions."
(let ((*ignore-wildcards* t)) (let ((*ignore-wildcards* t))
(mapcar #'(lambda (name) (mapcar #'(lambda (name)
(let ((name (if (and check-for-subdirs (let ((name (if (and check-for-subdirs
(eq (unix:unix-file-kind name) (eq (unix:unix-file-kind name (not follow-links))
:directory)) :directory))
(concatenate 'string name "/") (concatenate 'string name "/")
name))) name)))
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment