diff --git a/src/code/filesys.lisp b/src/code/filesys.lisp index fe997a7c7a7bdde96d3504d2365893e1bbd69cfc..60f0afc36cce7c13e669349a7f4303ea6a8e0476 100644 --- a/src/code/filesys.lisp +++ b/src/code/filesys.lisp @@ -1125,7 +1125,7 @@ optionally keeping some of the most recent old versions." (let ((*ignore-wildcards* t)) (mapcar #'(lambda (name) (let ((name (if (and check-for-subdirs - (eq (unix:unix-file-kind name) + (eq (unix:unix-file-kind name (not follow-links)) :directory)) (concatenate 'string name "/") name))) diff --git a/src/general-info/release-21b.txt b/src/general-info/release-21b.txt index 92a2bb0108431cd5777b87286fb0bef7d2895ef4..985648c8c8dee5494ec5c8f4a59a53d7b6e869d1 100644 --- a/src/general-info/release-21b.txt +++ b/src/general-info/release-21b.txt @@ -1,6 +1,4 @@ -========================== C M U C L 21 a ============================= - -[Work in progress] +========================== C M U C L 21 b ============================= The CMUCL project is pleased to announce the release of CMUCL 21b. This is a major release which contains numerous enhancements and @@ -76,6 +74,9 @@ New in this release: clang). (See ticket #12.) * Cleanups in handling floating-point exceptions. See Tickets #15 and #16. + * DIRECTORY with :FOLLOW-LINKS T (and :TRUENAME NIL) will follow + directory links. Previously, the directories that were links + weren't followed. * Trac Tickets: diff --git a/tests/issues.lisp b/tests/issues.lisp index d709a71910c4cae2e5aeca42c6ac2e950dc1c1fb..6bd341344d5a089e64a5757a7b05f6b79b14d043 100644 --- a/tests/issues.lisp +++ b/tests/issues.lisp @@ -12,6 +12,12 @@ (declare (ignore arg)) form) +(defparameter *test-path* + (merge-pathnames (make-pathname :name :unspecific :type :unspecific + :version :unspecific) + *load-truename*) + "Directory for temporary test files.") + (define-test issue.1.a (:tag :issues) (assert-equal @@ -321,3 +327,23 @@ (assert-error 'kernel:simple-program-error (ext:run-program "cat" nil :before-execve t))) + +(define-test mr.15 + (:tag :issues) + (let (directories files) + (dolist (entry (directory (merge-pathnames "resources/mr.15/*.*" *test-path*) + :check-for-subdirs t + :follow-links nil + :truenamep nil)) + (let ((filename (pathname-name entry)) + (directory (first (last (pathname-directory entry))))) + (if filename + (push filename files) + (push directory directories)))) + (assert (null (set-difference files + '("file" "link-to-dir" + "link-to-dir-in-dir" "link-to-file") + :test #'string-equal))) + (assert (null (set-difference directories + '(".dir" "dir") + :test #'string-equal))))) diff --git a/tests/resources/issue-24.lisp b/tests/resources/issue-24.lisp new file mode 100644 index 0000000000000000000000000000000000000000..397241c4e888cc5ca22aacded52768d5a5477354 --- /dev/null +++ b/tests/resources/issue-24.lisp @@ -0,0 +1,5 @@ +;; Test case from issue #24. +(defun foo () + (print "Hello world")) + +(compile 'foo) diff --git a/tests/resources/mr.15/dir/file-in-dir b/tests/resources/mr.15/dir/file-in-dir new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/resources/mr.15/file b/tests/resources/mr.15/file new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/resources/mr.15/link-to-dir b/tests/resources/mr.15/link-to-dir new file mode 120000 index 0000000000000000000000000000000000000000..87245193225f8ff56488ceab0dcd11467fe098d0 --- /dev/null +++ b/tests/resources/mr.15/link-to-dir @@ -0,0 +1 @@ +dir \ No newline at end of file diff --git a/tests/resources/mr.15/link-to-dir-in-dir b/tests/resources/mr.15/link-to-dir-in-dir new file mode 120000 index 0000000000000000000000000000000000000000..bef86c03dc6250104131e2bcfffac214ef2a511d --- /dev/null +++ b/tests/resources/mr.15/link-to-dir-in-dir @@ -0,0 +1 @@ +dir/dir-in-dir \ No newline at end of file diff --git a/tests/resources/mr.15/link-to-file b/tests/resources/mr.15/link-to-file new file mode 120000 index 0000000000000000000000000000000000000000..1a010b1c0f081b2e8901d55307a15c29ff30af0e --- /dev/null +++ b/tests/resources/mr.15/link-to-file @@ -0,0 +1 @@ +file \ No newline at end of file