]> git.eshelyaron.com Git - emacs.git/commitdiff
Implement a new function `directory-name-p'
authorLars Magne Ingebrigtsen <larsi@gnus.org>
Sat, 13 Dec 2014 15:10:04 +0000 (16:10 +0100)
committerLars Magne Ingebrigtsen <larsi@gnus.org>
Sat, 13 Dec 2014 15:10:04 +0000 (16:10 +0100)
* doc/lispref/files.texi (Relative File Names): Mention
`directory-name-p'.

* etc/NEWS: Mention directory-name-p.

(directory-name-p): New function.
(directory-files-recursively): Use it.

doc/lispref/ChangeLog
doc/lispref/files.texi
etc/ChangeLog
etc/NEWS
lisp/ChangeLog
lisp/files.el

index 8f06881adc40760bee849500e2dc1552a92fd5bc..0d8458fabd148fd83b7c1678b071c6b8ea8918e1 100644 (file)
@@ -1,3 +1,7 @@
+2014-12-13  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * files.texi (Relative File Names): Mention `directory-name-p'.
+
 2014-12-13  Eli Zaretskii  <eliz@gnu.org>
 
        * text.texi (Comparing Text): Prevent a text string from being
index 92bb718e46a8f7ad2e6bfb04d0f59ff92f22e1e8..b79d5df67c86d87021ad3c0517b5f3403bd10b06 100644 (file)
@@ -2020,6 +2020,11 @@ form.
 @end example
 @end defun
 
+@defun directory-name-p filename
+This function returns non-@code{nil} if @var{filename} ends with a
+forward slash (@samp{/}) character.
+@end defun
+
 @node Directory Names
 @subsection Directory Names
 @cindex directory name
index f56fb4ea683efb9beee33574ebf36fb396bffb15..5e02fced6724fd7431f719fe093a53100a65c870 100644 (file)
@@ -1,3 +1,7 @@
+2014-12-13  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * NEWS: Mention directory-name-p.
+
 2014-12-09  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 
        * NEWS: Mention directory-files-recursively.
index 58a5836a1c03da6853560ab21f38445f043d2033..58e4b0e2cf1d1bea73f74e76ae8e3b9dbbe5ac70 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -140,6 +140,11 @@ library function `ftw'.
 ** A new function `directory-files-recursively' returns all matching
 files (recursively) under a directory.
 
+** The new `directory-name-p' can be used to check whether a file
+name (as returned from, for instance, `file-name-all-completions' is
+a directory file name.  It returns non-nil if the last character in
+the name is a forward slash.
+
 \f
 * Editing Changes in Emacs 25.1
 
index bc757189f60bc28c42b2c7030912cd2763b7c7e0..6955c3c6cca5f5bec6463aa3da3a5cae23a302e1 100644 (file)
@@ -2,6 +2,8 @@
 
        * files.el (directory-files-recursively): Really check whether
        files are symlinks.
+       (directory-name-p): New function.
+       (directory-files-recursively): Use it.
 
 2014-12-13  Artur Malabarba  <bruce.connor.am@gmail.com>
 
index 2ab740d4a7f12c88a4fe2483015890500ea5b961..d55ef1ad53830c461e9462778e40ef70e756bf50 100644 (file)
@@ -761,6 +761,11 @@ prevented.  Directory entries are sorted with string-lessp."
                (file-name-nondirectory dir)
                args))))
 
+(defsubst directory-name-p (name)
+  "Return non-nil if NAME ends with a slash character."
+  (and (> (length name) 0)
+       (char-equal (aref name (1- (length name))) ?/)))
+
 (defun directory-files-recursively (dir match &optional include-directories)
   "Return all files under DIR that have file names matching MATCH (a regexp).
 This function works recursively.  Files are returned in \"depth first\"
@@ -771,7 +776,7 @@ If INCLUDE-DIRECTORIES, also include directories that have matching names."
     (dolist (file (sort (file-name-all-completions "" dir)
                        'string<))
       (unless (member file '("./" "../"))
-       (if (= (aref file (1- (length file))) ?/)
+       (if (directory-name-p file)
            (let* ((leaf (substring file 0 (1- (length file))))
                   (path (expand-file-name leaf dir)))
              ;; Don't follow symlinks to other directories.