Fix edge case errors in filename-matching regexps

These changes fix actual or latent bugs in regexps that match
file names, such as PATTERN arguments to 'directory-files'.  See
https://lists.gnu.org/archive/html/emacs-devel/2020-04/msg00265.html

* admin/authors.el (authors-obsolete-files-regexps)
(authors-renamed-files-regexps):
* lisp/auth-source-pass.el (auth-source-pass-entries):
* lisp/calendar/todo-mode.el (todo-show, todo-find-filtered-items-file)
(todo-filter-items, todo-reset-nondiary-marker, todo-reset-done-string)
(todo-reset-comment-string, todo-reset-highlight-item):
* lisp/cedet/semantic/db-ebrowse.el (semanticdb-load-ebrowse-caches):
* lisp/cedet/semantic/texi.el (semantic-texi-associated-files):
* lisp/cedet/srecode/map.el (srecode-map-update-map):
* lisp/dired.el (dired-re-no-dot):
* lisp/emacs-lisp/autoload.el (update-directory-autoloads):
* lisp/emacs-lisp/shadow.el (load-path-shadows-find):
* lisp/files.el (auto-mode-alist, directory-files-no-dot-files-regexp):
* lisp/finder.el (finder-compile-keywords):
* lisp/generic-x.el (inetd-conf-generic-mode, named-boot-generic-mode)
(resolve-conf-generic-mode, etc-modules-conf-generic-mode):
* lisp/gnus/gnus-agent.el (gnus-agent-read-agentview)
(gnus-agent-regenerate-group, gnus-agent-update-files-total-fetched-for):
* lisp/gnus/gnus-cache.el (gnus-cache-articles-in-group):
* lisp/gnus/gnus-score.el (gnus-score-search-global-directories):
* lisp/gnus/gnus-util.el (gnus-delete-directory):
* lisp/gnus/gnus-uu.el (gnus-uu-dir-files):
* lisp/gnus/nndraft.el (nndraft-request-group):
* lisp/gnus/nnmh.el (nnmh-request-group, nnmh-request-create-group):
(nnmh-request-delete-group, nnmh-active-number, nnmh-update-gnus-unreads):
* lisp/gnus/nnspool.el (nnspool-request-group):
* lisp/gnus/spam-stat.el (spam-stat-process-directory)
(spam-stat-test-directory):
* lisp/help-fns.el (help-fns--first-release):
* lisp/help.el (view-emacs-news):
* lisp/international/quail.el (quail-update-leim-list-file):
* lisp/international/titdic-cnv.el (batch-titdic-convert):
* lisp/mail/mspools.el (mspools-set-vm-spool-files)
(mspools-get-spool-files):
* lisp/mail/rmail.el (rmail-secondary-file-regexp)
(rmail-speedbar-match-folder-regexp):
* lisp/net/ange-ftp.el (ange-ftp-delete-directory):
* lisp/net/tramp.el (tramp-use-absolute-autoload-file-names):
* lisp/obsolete/gulp.el (gulp-send-requests):
* lisp/obsolete/vc-arch.el (vc-arch-trim-revlib):
* lisp/org/ob-core.el (org-babel-remove-temporary-directory):
* lisp/progmodes/ebnf2ps.el (ebnf-file-suffix-regexp, ebnf-style-database):
* lisp/progmodes/executable.el (executable-command-find-posix-p):
* lisp/startup.el (command-line):
* lisp/textmodes/refer.el (refer-get-bib-files):
* lisp/url/url-about.el (url-probe-protocols):
* lisp/vc/vc-rcs.el (vc-rcs-register, vc-rcs-unregister):
* test/lisp/net/tramp-archive-tests.el
(tramp-archive-test19-directory-files-and-attributes):
* test/lisp/net/tramp-tests.el (tramp-test19-directory-files-and-attributes):
Replace ^ and $ with \` and \', respectively.
Use (rx (or (not ".") "...")), translated into "[^.]\\|\\.\\.\\.",
to match anything but "." and "..", instead of several incorrect
regexps.
This commit is contained in:
Mattias Engdegård 2020-04-14 12:17:40 +02:00
parent 5f36e21fe5
commit 4acdd7fe58
40 changed files with 75 additions and 70 deletions

View file

@ -278,7 +278,7 @@ If REALNAME is nil, ignore that author.")
(defvar authors-obsolete-files-regexps (defvar authors-obsolete-files-regexps
'(".*loaddefs.el$" ; not obsolete, but auto-generated '(".*loaddefs\\.el$" ; not obsolete, but auto-generated
"\\.\\(bzr\\|cvs\\|git\\)ignore$" ; obsolete or uninteresting "\\.\\(bzr\\|cvs\\|git\\)ignore$" ; obsolete or uninteresting
"\\.arch-inventory$" "\\.arch-inventory$"
"ChangeLog\\(\\.[0-9]+\\)?\\'" "ChangeLog\\(\\.[0-9]+\\)?\\'"
@ -288,9 +288,9 @@ If REALNAME is nil, ignore that author.")
"\\`\\(indent\\|automated\\)\\'" "indent/" "mod-test/" "\\`\\(indent\\|automated\\)\\'" "indent/" "mod-test/"
"-resources/" "-resources/"
"unidata/.*\\.txt\\'" "unidata/.*\\.txt\\'"
"BidiCharacterTest.txt" "BidiCharacterTest\\.txt"
;; TODO lib/? Matches other things? ;; TODO lib/? Matches other things?
"build-aux/" "m4/" "Emacs.xcodeproj" "mapfiles" "\\.map\\'" "build-aux/" "m4/" "Emacs\\.xcodeproj" "mapfiles" "\\.map\\'"
"preferences\\.\\(nib\\|gorm\\)" "preferences\\.\\(nib\\|gorm\\)"
;; Generated files that have since been removed. ;; Generated files that have since been removed.
"\\(refcard\\(-de\\|-pl\\)?\\|calccard\\|dired-ref\\|orgcard\\|\ "\\(refcard\\(-de\\|-pl\\)?\\|calccard\\|dired-ref\\|orgcard\\|\
@ -1183,7 +1183,7 @@ ediff\\|emerge\\|log-edit\\|log-view\\|pcvs\\|smerge-mode\\|vc\\)\\.el\\'"
("\\`org-\\(ascii\\|beamer\\|html\\|icalendar\\|jsinfo\\|latex\ ("\\`org-\\(ascii\\|beamer\\|html\\|icalendar\\|jsinfo\\|latex\
\\|odt\\|publish\\)\\.el\\'" "ox-\\1.el") \\|odt\\|publish\\)\\.el\\'" "ox-\\1.el")
;; From test/ to test/automated/. ;; From test/ to test/automated/.
("comint-testsuite.el" "automated/\\&") ("comint-testsuite\\.el" "automated/\\&")
("\\`\\(bytecomp\\|font-parse\\|icalendar\\|occur\\|newsticker\\)\ ("\\`\\(bytecomp\\|font-parse\\|icalendar\\|occur\\|newsticker\\)\
-testsuite\\.el" "\\1-tests.el") -testsuite\\.el" "\\1-tests.el")
("automated/flymake/warnpred/\\(Makefile\\|test\\.\\(?:c\\|pl\\)\\)\\'" ("automated/flymake/warnpred/\\(Makefile\\|test\\.\\(?:c\\|pl\\)\\)\\'"

View file

@ -190,7 +190,7 @@ CONTENTS is the contents of a password-store formatted file."
(let ((store-dir (expand-file-name auth-source-pass-filename))) (let ((store-dir (expand-file-name auth-source-pass-filename)))
(mapcar (mapcar
(lambda (file) (file-name-sans-extension (file-relative-name file store-dir))) (lambda (file) (file-name-sans-extension (file-relative-name file store-dir)))
(directory-files-recursively store-dir "\\.gpg$")))) (directory-files-recursively store-dir "\\.gpg\\'"))))
(defun auth-source-pass--find-match (host user port) (defun auth-source-pass--find-match (host user port)
"Return password-store entry data matching HOST, USER and PORT. "Return password-store entry data matching HOST, USER and PORT.

View file

@ -707,7 +707,7 @@ and done items are always shown on visiting a category."
shortf todo-show-first))) shortf todo-show-first)))
(when (eq todo-show-first 'regexp) (when (eq todo-show-first 'regexp)
(let ((rxfiles (directory-files todo-directory t (let ((rxfiles (directory-files todo-directory t
".*\\.todr$" t))) "\\.todr\\'" t)))
(when (and rxfiles (> (length rxfiles) 1)) (when (and rxfiles (> (length rxfiles) 1))
(let ((rxf (mapcar #'todo-short-file-name rxfiles))) (let ((rxf (mapcar #'todo-short-file-name rxfiles)))
(setq fi-file (todo-absolute-file-name (setq fi-file (todo-absolute-file-name
@ -4054,7 +4054,7 @@ regexp items."
(defun todo-find-filtered-items-file () (defun todo-find-filtered-items-file ()
"Choose a filtered items file and visit it." "Choose a filtered items file and visit it."
(interactive) (interactive)
(let ((files (directory-files todo-directory t "\\.tod[rty]$" t)) (let ((files (directory-files todo-directory t "\\.tod[rty]\\'" t))
falist file) falist file)
(dolist (f files) (dolist (f files)
(let ((sf-name (todo-short-file-name f)) (let ((sf-name (todo-short-file-name f))
@ -4187,7 +4187,7 @@ multifile commands for further details."
(regexp ".todr"))))) (regexp ".todr")))))
(multi (> (length flist) 1)) (multi (> (length flist) 1))
(rxfiles (when regexp (rxfiles (when regexp
(directory-files todo-directory t ".*\\.todr$" t))) (directory-files todo-directory t "\\.todr\\'" t)))
(file-exists (or (file-exists-p fname) rxfiles)) (file-exists (or (file-exists-p fname) rxfiles))
bufname) bufname)
(cond ((and top new (natnump new)) (cond ((and top new (natnump new))
@ -6154,7 +6154,7 @@ the empty string (i.e., no time string)."
"The :set function for user option `todo-nondiary-marker'." "The :set function for user option `todo-nondiary-marker'."
(let* ((oldvalue (symbol-value symbol)) (let* ((oldvalue (symbol-value symbol))
(files (append todo-files todo-archives (files (append todo-files todo-archives
(directory-files todo-directory t "\\.tod[rty]$" t)))) (directory-files todo-directory t "\\.tod[rty]\\'" t))))
(custom-set-default symbol value) (custom-set-default symbol value)
;; Need to reset these to get font-locking right. ;; Need to reset these to get font-locking right.
(setq todo-nondiary-start (nth 0 todo-nondiary-marker) (setq todo-nondiary-start (nth 0 todo-nondiary-marker)
@ -6207,7 +6207,7 @@ the empty string (i.e., no time string)."
"The :set function for user option `todo-done-string'." "The :set function for user option `todo-done-string'."
(let ((oldvalue (symbol-value symbol)) (let ((oldvalue (symbol-value symbol))
(files (append todo-files todo-archives (files (append todo-files todo-archives
(directory-files todo-directory t "\\.todr$" t)))) (directory-files todo-directory t "\\.todr\\'" t))))
(custom-set-default symbol value) (custom-set-default symbol value)
;; Need to reset this to get font-locking right. ;; Need to reset this to get font-locking right.
(setq todo-done-string-start (setq todo-done-string-start
@ -6236,7 +6236,7 @@ the empty string (i.e., no time string)."
"The :set function for user option `todo-comment-string'." "The :set function for user option `todo-comment-string'."
(let ((oldvalue (symbol-value symbol)) (let ((oldvalue (symbol-value symbol))
(files (append todo-files todo-archives (files (append todo-files todo-archives
(directory-files todo-directory t "\\.todr$" t)))) (directory-files todo-directory t "\\.todr\\'" t))))
(custom-set-default symbol value) (custom-set-default symbol value)
(when (not (equal value oldvalue)) (when (not (equal value oldvalue))
(dolist (f files) (dolist (f files)
@ -6262,7 +6262,7 @@ the empty string (i.e., no time string)."
"The :set function for user option `todo-highlight-item'." "The :set function for user option `todo-highlight-item'."
(let ((oldvalue (symbol-value symbol)) (let ((oldvalue (symbol-value symbol))
(files (append todo-files todo-archives (files (append todo-files todo-archives
(directory-files todo-directory t "\\.tod[rty]$" t)))) (directory-files todo-directory t "\\.tod[rty]\\'" t))))
(custom-set-default symbol value) (custom-set-default symbol value)
(when (not (equal value oldvalue)) (when (not (equal value oldvalue))
(dolist (f files) (dolist (f files)

View file

@ -181,7 +181,9 @@ is specified by `semanticdb-default-save-directory'."
"Load all semanticdb controlled EBROWSE caches." "Load all semanticdb controlled EBROWSE caches."
(interactive) (interactive)
(let ((f (directory-files semanticdb-default-save-directory (let ((f (directory-files semanticdb-default-save-directory
t (concat semanticdb-ebrowse-default-file-name "-load.el$") t))) t (concat semanticdb-ebrowse-default-file-name
"-load\\.el\\'")
t)))
(while f (while f
(load (car f) nil t) (load (car f) nil t)
(setq f (cdr f))) (setq f (cdr f)))

View file

@ -495,7 +495,7 @@ that start with that symbol."
(setq tabs (cdr tabs))) (setq tabs (cdr tabs)))
r)) r))
(t (t
(directory-files default-directory nil "\\.texi$")) (directory-files default-directory nil "\\.texi\\'"))
))) )))
;; Turns out this might not be useful. ;; Turns out this might not be useful.

View file

@ -327,7 +327,7 @@ if that file is NEW, otherwise assume the mode has not changed."
;; 4) - Find new files and add them to the map. ;; 4) - Find new files and add them to the map.
(dolist (dir srecode-map-load-path) (dolist (dir srecode-map-load-path)
(when (file-exists-p dir) (when (file-exists-p dir)
(dolist (f (directory-files dir t "\\.srt$")) (dolist (f (directory-files dir t "\\.srt\\'"))
(when (and (not (backup-file-name-p f)) (when (and (not (backup-file-name-p f))
(not (auto-save-file-name-p f)) (not (auto-save-file-name-p f))
(file-readable-p f)) (file-readable-p f))

View file

@ -3171,7 +3171,7 @@ Any other value means to ask for each directory."
:group 'dired) :group 'dired)
;; Match anything but `.' and `..'. ;; Match anything but `.' and `..'.
(defvar dired-re-no-dot "^\\([^.]\\|\\.\\([^.]\\|\\..\\)\\).*") (defvar dired-re-no-dot (rx (or (not ".") "...")))
;; Delete file, possibly delete a directory and all its files. ;; Delete file, possibly delete a directory and all its files.
;; This function is useful outside of dired. One could change its name ;; This function is useful outside of dired. One could change its name

View file

@ -1047,7 +1047,7 @@ write its autoloads into the specified file instead."
;; what is the suffix for the underlying OS. ;; what is the suffix for the underlying OS.
(unless (string-match "\\.\\(elc\\|so\\|dll\\)" suf) (unless (string-match "\\.\\(elc\\|so\\|dll\\)" suf)
(push suf tmp))) (push suf tmp)))
(concat "^[^=.].*" (regexp-opt tmp t) "\\'"))) (concat "\\`[^=.].*" (regexp-opt tmp t) "\\'")))
(files (apply #'nconc (files (apply #'nconc
(mapcar (lambda (dir) (mapcar (lambda (dir)
(directory-files (expand-file-name dir) (directory-files (expand-file-name dir)

View file

@ -99,7 +99,8 @@ See the documentation for `list-load-path-shadows' for further information."
(setq true-names (append true-names (list dir))) (setq true-names (append true-names (list dir)))
(setq dir (directory-file-name (or pp "."))) (setq dir (directory-file-name (or pp ".")))
(setq curr-files (if (file-accessible-directory-p dir) (setq curr-files (if (file-accessible-directory-p dir)
(directory-files dir nil ".\\.elc?\\(\\.gz\\)?$" t))) (directory-files dir nil
"\\.elc?\\(?:\\.gz\\)?\\'" t)))
(and curr-files (and curr-files
(not noninteractive) (not noninteractive)
(message "Checking %d files in %s..." (length curr-files) dir)) (message "Checking %d files in %s..." (length curr-files) dir))

View file

@ -2671,7 +2671,7 @@ since only a single case-insensitive search through the alist is made."
("\\.pas\\'" . pascal-mode) ("\\.pas\\'" . pascal-mode)
("\\.\\(dpr\\|DPR\\)\\'" . delphi-mode) ("\\.\\(dpr\\|DPR\\)\\'" . delphi-mode)
("\\.ad[abs]\\'" . ada-mode) ("\\.ad[abs]\\'" . ada-mode)
("\\.ad[bs].dg\\'" . ada-mode) ("\\.ad[bs]\\.dg\\'" . ada-mode)
("\\.\\([pP]\\([Llm]\\|erl\\|od\\)\\|al\\)\\'" . perl-mode) ("\\.\\([pP]\\([Llm]\\|erl\\|od\\)\\|al\\)\\'" . perl-mode)
("Imakefile\\'" . makefile-imake-mode) ("Imakefile\\'" . makefile-imake-mode)
("Makeppfile\\(?:\\.mk\\)?\\'" . makefile-makepp-mode) ; Put this before .mk ("Makeppfile\\(?:\\.mk\\)?\\'" . makefile-makepp-mode) ; Put this before .mk
@ -2822,7 +2822,7 @@ ARC\\|ZIP\\|LZH\\|LHA\\|ZOO\\|[JEW]AR\\|XPI\\|RAR\\|CBR\\|7Z\\)\\'" . archive-mo
("\\.properties\\(?:\\.[a-zA-Z0-9._-]+\\)?\\'" . conf-javaprop-mode) ("\\.properties\\(?:\\.[a-zA-Z0-9._-]+\\)?\\'" . conf-javaprop-mode)
("\\.toml\\'" . conf-toml-mode) ("\\.toml\\'" . conf-toml-mode)
("\\.desktop\\'" . conf-desktop-mode) ("\\.desktop\\'" . conf-desktop-mode)
("/\\.redshift.conf\\'" . conf-windows-mode) ("/\\.redshift\\.conf\\'" . conf-windows-mode)
("\\`/etc/\\(?:DIR_COLORS\\|ethers\\|.?fstab\\|.*hosts\\|lesskey\\|login\\.?de\\(?:fs\\|vperm\\)\\|magic\\|mtab\\|pam\\.d/.*\\|permissions\\(?:\\.d/.+\\)?\\|protocols\\|rpc\\|services\\)\\'" . conf-space-mode) ("\\`/etc/\\(?:DIR_COLORS\\|ethers\\|.?fstab\\|.*hosts\\|lesskey\\|login\\.?de\\(?:fs\\|vperm\\)\\|magic\\|mtab\\|pam\\.d/.*\\|permissions\\(?:\\.d/.+\\)?\\|protocols\\|rpc\\|services\\)\\'" . conf-space-mode)
("\\`/etc/\\(?:acpid?/.+\\|aliases\\(?:\\.d/.+\\)?\\|default/.+\\|group-?\\|hosts\\..+\\|inittab\\|ksysguarddrc\\|opera6rc\\|passwd-?\\|shadow-?\\|sysconfig/.+\\)\\'" . conf-mode) ("\\`/etc/\\(?:acpid?/.+\\|aliases\\(?:\\.d/.+\\)?\\|default/.+\\|group-?\\|hosts\\..+\\|inittab\\|ksysguarddrc\\|opera6rc\\|passwd-?\\|shadow-?\\|sysconfig/.+\\)\\'" . conf-mode)
;; ChangeLog.old etc. Other change-log-mode entries are above; ;; ChangeLog.old etc. Other change-log-mode entries are above;
@ -5754,7 +5754,7 @@ If called interactively, then PARENTS is non-nil."
(write-region "" nil filename nil 0)) (write-region "" nil filename nil 0))
(defconst directory-files-no-dot-files-regexp (defconst directory-files-no-dot-files-regexp
"^\\([^.]\\|\\.\\([^.]\\|\\..\\)\\).*" "[^.]\\|\\.\\.\\."
"Regexp matching any file name except \".\" and \"..\".") "Regexp matching any file name except \".\" and \"..\".")
(defun files--force (no-such fn &rest args) (defun files--force (no-such fn &rest args)

View file

@ -188,7 +188,7 @@ from; the default is `load-path'."
;; Allow compressed files also. ;; Allow compressed files also.
(setq package--builtins nil) (setq package--builtins nil)
(setq finder-keywords-hash (make-hash-table :test 'eq)) (setq finder-keywords-hash (make-hash-table :test 'eq))
(let* ((el-file-regexp "^\\([^=].*\\)\\.el\\(\\.\\(gz\\|Z\\)\\)?$") (let* ((el-file-regexp "\\`\\([^=].*\\)\\.el\\(\\.\\(gz\\|Z\\)\\)?\\'")
(file-count 0) (file-count 0)
(files (cl-loop for d in (or dirs load-path) (files (cl-loop for d in (or dirs load-path)
when (file-exists-p (directory-file-name d)) when (file-exists-p (directory-file-name d))

View file

@ -1430,7 +1430,7 @@ like an INI file. You can add this hook to `find-file-hook'."
"nowait" "nowait"
"internal") "internal")
'(("^\\([-A-Za-z0-9_]+\\)" 1 font-lock-type-face)) '(("^\\([-A-Za-z0-9_]+\\)" 1 font-lock-type-face))
'("/etc/inetd.conf\\'") '("/etc/inetd\\.conf\\'")
(list (list
(function (function
(lambda () (lambda ()
@ -1630,7 +1630,7 @@ like an INI file. You can add this hook to `find-file-hook'."
(2 font-lock-variable-name-face) (2 font-lock-variable-name-face)
(3 font-lock-constant-face))) (3 font-lock-constant-face)))
;; List of additional automode-alist expressions ;; List of additional automode-alist expressions
'("/etc/named.boot\\'") '("/etc/named\\.boot\\'")
;; List of set up functions to call ;; List of set up functions to call
nil)) nil))
@ -1667,7 +1667,7 @@ like an INI file. You can add this hook to `find-file-hook'."
;; List of additional font-lock-expressions ;; List of additional font-lock-expressions
nil nil
;; List of additional auto-mode-alist expressions ;; List of additional auto-mode-alist expressions
'("/etc/resolv[e]?.conf\\'") '("/etc/resolve?\\.conf\\'")
;; List of set up functions to call ;; List of set up functions to call
nil)) nil))
@ -1803,7 +1803,7 @@ like an INI file. You can add this hook to `find-file-hook'."
;; List of additional font-lock-expressions ;; List of additional font-lock-expressions
nil nil
;; List of additional automode-alist expressions ;; List of additional automode-alist expressions
'("/etc/modules.conf" "/etc/conf.modules") '("/etc/modules\\.conf" "/etc/conf\\.modules")
;; List of set up functions to call ;; List of set up functions to call
nil)) nil))

View file

@ -2074,7 +2074,7 @@ doesn't exist, to valid the overview buffer."
(file-attributes (directory-files-and-attributes (file-attributes (directory-files-and-attributes
(gnus-agent-article-name (gnus-agent-article-name
"" gnus-agent-read-agentview) "" gnus-agent-read-agentview)
nil "^[0-9]+$" t))) nil "\\`[0-9]+\\'" t)))
(while file-attributes (while file-attributes
(let ((fa (pop file-attributes))) (let ((fa (pop file-attributes)))
(unless (file-attribute-type (cdr fa)) (unless (file-attribute-type (cdr fa))
@ -3850,7 +3850,8 @@ If REREAD is not nil, downloaded articles are marked as unread."
(sort (delq nil (mapcar (lambda (name) (sort (delq nil (mapcar (lambda (name)
(and (not (file-directory-p (nnheader-concat dir name))) (and (not (file-directory-p (nnheader-concat dir name)))
(string-to-number name))) (string-to-number name)))
(directory-files dir nil "^[0-9]+$" t))) (directory-files
dir nil "\\`[0-9]+\\'" t)))
'>) '>)
(progn (gnus-make-directory dir) nil))) (progn (gnus-make-directory dir) nil)))
nov-arts nov-arts
@ -4110,7 +4111,7 @@ agent has fetched."
(setq delta sum)) (setq delta sum))
(let ((sum (- (nth 2 entry))) (let ((sum (- (nth 2 entry)))
(info (directory-files-and-attributes (info (directory-files-and-attributes
path nil "^-?[0-9]+$" t)) path nil "\\`-?[0-9]+\\'" t))
file) file)
(while (setq file (pop info)) (while (setq file (pop info))
(cl-incf sum (float (or (file-attribute-size (cdr file)) 0)))) (cl-incf sum (float (or (file-attribute-size (cdr file)) 0))))

View file

@ -501,7 +501,7 @@ Returns the list of articles removed."
(when (file-exists-p dir) (when (file-exists-p dir)
(setq articles (setq articles
(sort (mapcar (lambda (name) (string-to-number name)) (sort (mapcar (lambda (name) (string-to-number name))
(directory-files dir nil "^[0-9]+$" t)) (directory-files dir nil "\\`[0-9]+\\'" t))
'<)) '<))
;; Update the cache active file, just to synch more. ;; Update the cache active file, just to synch more.
(if articles (if articles

View file

@ -2981,7 +2981,7 @@ The list is determined from the variable `gnus-score-file-alist'."
(if (file-directory-p (car files)) (if (file-directory-p (car files))
(setq out (nconc (directory-files (setq out (nconc (directory-files
(car files) t (car files) t
(concat (gnus-score-file-regexp) "$")))) (concat (gnus-score-file-regexp) "\\'"))))
(push (car files) out)) (push (car files) out))
(setq files (cdr files))) (setq files (cdr files)))
(setq gnus-internal-global-score-files out))) (setq gnus-internal-global-score-files out)))

View file

@ -768,7 +768,7 @@ nil. See also `gnus-bind-print-variables'."
If there's no subdirectory, delete DIRECTORY as well." If there's no subdirectory, delete DIRECTORY as well."
(when (file-directory-p directory) (when (file-directory-p directory)
(let ((files (directory-files (let ((files (directory-files
directory t "^\\([^.]\\|\\.\\([^.]\\|\\..\\)\\).*")) directory t (rx (or (not ".") "..."))))
file dir) file dir)
(while files (while files
(setq file (pop files)) (setq file (pop files))

View file

@ -1674,7 +1674,7 @@ Gnus might fail to display all of it.")
did-unpack)) did-unpack))
(defun gnus-uu-dir-files (dir) (defun gnus-uu-dir-files (dir)
(let ((dirs (directory-files dir t "[^/][^\\.][^\\.]?$")) (let ((dirs (directory-files dir t (rx (or (not ".") "..."))))
files file) files file)
(while dirs (while dirs
(if (file-directory-p (setq file (car dirs))) (if (file-directory-p (setq file (car dirs)))

View file

@ -219,7 +219,7 @@ are generated if and only if they are also in `message-draft-headers'."
(nnheader-re-read-dir pathname) (nnheader-re-read-dir pathname)
(setq dir (mapcar (lambda (name) (string-to-number (substring name 1))) (setq dir (mapcar (lambda (name) (string-to-number (substring name 1)))
(ignore-errors (directory-files (ignore-errors (directory-files
pathname nil "^#[0-9]+#$" t)))) pathname nil "\\`#[0-9]+#\\'" t))))
(dolist (n dir) (dolist (n dir)
(unless (file-exists-p (unless (file-exists-p
(setq file (expand-file-name (int-to-string n) pathname))) (setq file (expand-file-name (int-to-string n) pathname)))

View file

@ -172,7 +172,7 @@ as unread by Gnus.")
(setq dir (setq dir
(sort (sort
(mapcar 'string-to-number (mapcar 'string-to-number
(directory-files pathname nil "^[0-9]+$" t)) (directory-files pathname nil "\\`[0-9]+\\'" t))
'<)) '<))
(cond (cond
(dir (dir
@ -360,7 +360,7 @@ as unread by Gnus.")
(nnmh-possibly-change-directory group server) (nnmh-possibly-change-directory group server)
(let ((articles (mapcar 'string-to-number (let ((articles (mapcar 'string-to-number
(directory-files (directory-files
nnmh-current-directory nil "^[0-9]+$")))) nnmh-current-directory nil "\\`[0-9]+\\'"))))
(when articles (when articles
(setcar active (apply 'min articles)) (setcar active (apply 'min articles))
(setcdr active (apply 'max articles)))))) (setcdr active (apply 'max articles))))))
@ -371,7 +371,7 @@ as unread by Gnus.")
;; Delete all articles in GROUP. ;; Delete all articles in GROUP.
(if (not force) (if (not force)
() ; Don't delete the articles. () ; Don't delete the articles.
(let ((articles (directory-files nnmh-current-directory t "^[0-9]+$"))) (let ((articles (directory-files nnmh-current-directory t "\\`[0-9]+\\'")))
(while articles (while articles
(when (file-writable-p (car articles)) (when (file-writable-p (car articles))
(nnheader-message 5 "Deleting article %s in %s..." (nnheader-message 5 "Deleting article %s in %s..."
@ -485,7 +485,7 @@ as unread by Gnus.")
;; Find the highest number in the group. ;; Find the highest number in the group.
(let ((files (sort (let ((files (sort
(mapcar 'string-to-number (mapcar 'string-to-number
(directory-files dir nil "^[0-9]+$")) (directory-files dir nil "\\`[0-9]+\\'"))
'>))) '>)))
(when files (when files
(setcdr active (car files))))) (setcdr active (car files)))))
@ -509,7 +509,7 @@ as unread by Gnus.")
(let* ((dir nnmh-current-directory) (let* ((dir nnmh-current-directory)
(files (sort (mapcar 'string-to-number (files (sort (mapcar 'string-to-number
(directory-files nnmh-current-directory (directory-files nnmh-current-directory
nil "^[0-9]+$" t)) nil "\\`[0-9]+\\'" t))
'<)) '<))
(nnmh-file (concat dir ".nnmh-articles")) (nnmh-file (concat dir ".nnmh-articles"))
new articles) new articles)

View file

@ -260,7 +260,7 @@ there.")
t) t)
;; Yes, completely empty spool directories *are* possible. ;; Yes, completely empty spool directories *are* possible.
;; Fix by Sudish Joseph <joseph@cis.ohio-state.edu> ;; Fix by Sudish Joseph <joseph@cis.ohio-state.edu>
(when (setq dir (directory-files pathname nil "^[0-9]+$" t)) (when (setq dir (directory-files pathname nil "\\`[0-9]+\\'" t))
(setq dir (sort (mapcar 'string-to-number dir) '<))) (setq dir (sort (mapcar 'string-to-number dir) '<)))
(if dir (if dir
(nnheader-insert (nnheader-insert

View file

@ -557,7 +557,7 @@ check the variable `spam-stat-score-data'."
(defun spam-stat-process-directory (dir func) (defun spam-stat-process-directory (dir func)
"Process all the regular files in directory DIR using function FUNC." "Process all the regular files in directory DIR using function FUNC."
(let* ((files (directory-files dir t "^[^.]")) (let* ((files (directory-files dir t "\\`[^.]"))
(max (/ (length files) 100.0)) (max (/ (length files) 100.0))
(count 0)) (count 0))
(with-temp-buffer (with-temp-buffer
@ -601,7 +601,7 @@ If VERBOSE is non-nil display names of files detected as spam or
non-spam in a temporary buffer. If it is the symbol `ham', non-spam in a temporary buffer. If it is the symbol `ham',
display non-spam files; otherwise display spam files." display non-spam files; otherwise display spam files."
(interactive "DDirectory: ") (interactive "DDirectory: ")
(let* ((files (directory-files dir t "^[^.]")) (let* ((files (directory-files dir t "\\`[^.]"))
display-files display-files
buffer-score buffer-score
(total (length files)) (total (length files))

View file

@ -623,7 +623,7 @@ FILE is the file where FUNCTION was probably defined."
;; of the *packages* in which the function is defined. ;; of the *packages* in which the function is defined.
(let* ((name (symbol-name symbol)) (let* ((name (symbol-name symbol))
(re (concat "\\_<" (regexp-quote name) "\\_>")) (re (concat "\\_<" (regexp-quote name) "\\_>"))
(news (directory-files data-directory t "\\`NEWS.[1-9]")) (news (directory-files data-directory t "\\`NEWS\\.[1-9]"))
(place nil) (place nil)
(first nil)) (first nil))
(with-temp-buffer (with-temp-buffer

View file

@ -361,7 +361,7 @@ With argument, display info only for the selected version."
(setq res (cons (match-string-no-properties 1) res))))) (setq res (cons (match-string-no-properties 1) res)))))
(cons "NEWS" (cons "NEWS"
(directory-files data-directory nil (directory-files data-directory nil
"^NEWS\\.[0-9][-0-9]*$" nil))) "\\`NEWS\\.[0-9][-0-9]*\\'" nil)))
(sort (delete-dups res) #'string>))) (sort (delete-dups res) #'string>)))
(current (car all-versions))) (current (car all-versions)))
(setq version (completing-read (setq version (completing-read

View file

@ -3059,7 +3059,7 @@ of each directory."
(while quail-dirs (while quail-dirs
(setq dirname (car quail-dirs)) (setq dirname (car quail-dirs))
(when dirname (when dirname
(setq pkg-list (directory-files dirname 'full "\\.el$")) (setq pkg-list (directory-files dirname 'full "\\.el\\'"))
(while pkg-list (while pkg-list
(with-temp-buffer (with-temp-buffer
(insert-file-contents (car pkg-list)) (insert-file-contents (car pkg-list))

View file

@ -553,7 +553,7 @@ To get complete usage, invoke \"emacs -batch -f batch-titdic-convert -h\"."
(if (file-directory-p filename) (if (file-directory-p filename)
(progn (progn
(message "Converting all tit files in the directory %s" filename) (message "Converting all tit files in the directory %s" filename)
(setq files (directory-files filename t "\\.tit$"))) (setq files (directory-files filename t "\\.tit\\'")))
(setq files (list filename))) (setq files (list filename)))
(while files (while files
(setq file (expand-file-name (car files))) (setq file (expand-file-name (car files)))

View file

@ -223,7 +223,7 @@ your primary spool is. If this fails, set it to something like
;; So I create a vm-spool-files entry for each of those mail drops ;; So I create a vm-spool-files entry for each of those mail drops
(mapcar 'file-name-sans-extension (mapcar 'file-name-sans-extension
(directory-files mspools-folder-directory nil (directory-files mspools-folder-directory nil
(format "^[^.]+\\.%s" mspools-suffix))) (format "\\`[^.]+\\.%s" mspools-suffix)))
)) ))
)) ))
@ -357,7 +357,7 @@ nil."
(if (null mspools-folder-directory) (if (null mspools-folder-directory)
(error "Set `mspools-folder-directory' to where the spool files are")) (error "Set `mspools-folder-directory' to where the spool files are"))
(setq folders (directory-files mspools-folder-directory nil (setq folders (directory-files mspools-folder-directory nil
(format "^[^.]+\\.%s$" mspools-suffix))) (format "\\`[^.]+\\.%s\\'" mspools-suffix)))
(setq folders (mapcar 'mspools-size-folder folders)) (setq folders (mapcar 'mspools-size-folder folders))
(setq folders (delq nil folders)) (setq folders (delq nil folders))
(setq mspools-files folders) (setq mspools-files folders)

View file

@ -474,7 +474,7 @@ the frame where you have the RMAIL buffer displayed."
:type 'directory :type 'directory
:group 'rmail-files) :group 'rmail-files)
;;;###autoload ;;;###autoload
(defcustom rmail-secondary-file-regexp (purecopy "\\.xmail$") (defcustom rmail-secondary-file-regexp (purecopy "\\.xmail\\'")
"Regexp for which files are secondary Rmail files." "Regexp for which files are secondary Rmail files."
:type 'regexp :type 'regexp
:group 'rmail-files) :group 'rmail-files)
@ -4354,7 +4354,8 @@ This has an effect only if a summary buffer exists."
(font-lock-fontify-region (point-min) (point-max))))))) (font-lock-fontify-region (point-min) (point-max)))))))
;;; Speedbar support for RMAIL files. ;;; Speedbar support for RMAIL files.
(defcustom rmail-speedbar-match-folder-regexp "^[A-Z0-9]+\\(\\.[A-Z0-9]+\\)?$" (defcustom rmail-speedbar-match-folder-regexp
"\\`[A-Z0-9]+\\(\\.[A-Z0-9]+\\)?\\'"
"Regexp matching Rmail folder names to be displayed in Speedbar. "Regexp matching Rmail folder names to be displayed in Speedbar.
Enabling this permits Speedbar to display your folders for easy Enabling this permits Speedbar to display your folders for easy
browsing, and moving of messages." browsing, and moving of messages."

View file

@ -4170,8 +4170,7 @@ directory, so that Emacs will know its current contents."
(ange-ftp-delete-directory file recursive trash) (ange-ftp-delete-directory file recursive trash)
(delete-file file trash))) (delete-file file trash)))
;; We do not want to delete "." and "..". ;; We do not want to delete "." and "..".
(directory-files (directory-files dir 'full (rx (or (not ".") "...")))))
dir 'full "^\\([^.]\\|\\.\\([^.]\\|\\..\\)\\).*")))
(if parsed (if parsed
(let* ((host (nth 0 parsed)) (let* ((host (nth 0 parsed))
(user (nth 1 parsed)) (user (nth 1 parsed))

View file

@ -2458,7 +2458,7 @@ remote file names."
(regexp-opt (regexp-opt
(mapcar (mapcar
#'file-name-sans-extension #'file-name-sans-extension
(directory-files dir nil "^tramp.+\\.elc?$")) (directory-files dir nil "\\`tramp.+\\.elc?\\'"))
'paren)))) 'paren))))
(mapatoms (mapatoms
(lambda (atom) (lambda (atom)

View file

@ -94,7 +94,7 @@ is left in the `*gulp*' buffer at the end."
(interactive "DRequest updates for Lisp directory: \nP") (interactive "DRequest updates for Lisp directory: \nP")
(with-current-buffer (get-buffer-create gulp-tmp-buffer) (with-current-buffer (get-buffer-create gulp-tmp-buffer)
(let ((m-p-alist (gulp-create-m-p-alist (let ((m-p-alist (gulp-create-m-p-alist
(directory-files dir nil "^[^=].*\\.el$" t) (directory-files dir nil "\\`[^=].*\\.el\\'" t)
dir)) dir))
;; Temporarily inhibit undo in the *gulp* buffer. ;; Temporarily inhibit undo in the *gulp* buffer.
(buffer-undo-list t) (buffer-undo-list t)

View file

@ -597,18 +597,20 @@ CALLBACK expects (ENTRIES &optional MORE-TO-COME); see
(unless (file-writable-p rl-dir) (unless (file-writable-p rl-dir)
(error "No writable revlib directory found")) (error "No writable revlib directory found"))
(message "Revlib at %s" rl-dir) (message "Revlib at %s" rl-dir)
(let* ((archives (directory-files rl-dir 'full "[^.]\\|...")) (let* ((archives (directory-files rl-dir 'full (rx (or (not ".") "..."))))
(categories (categories
(apply 'append (apply 'append
(mapcar (lambda (dir) (mapcar (lambda (dir)
(when (file-directory-p dir) (when (file-directory-p dir)
(directory-files dir 'full "[^.]\\|..."))) (directory-files dir 'full
(rx (or (not ".") "...")))))
archives))) archives)))
(branches (branches
(apply 'append (apply 'append
(mapcar (lambda (dir) (mapcar (lambda (dir)
(when (file-directory-p dir) (when (file-directory-p dir)
(directory-files dir 'full "[^.]\\|..."))) (directory-files dir 'full
(rx (or (not ".") "...")))))
categories))) categories)))
(versions (versions
(apply 'append (apply 'append

View file

@ -3055,7 +3055,7 @@ of `org-babel-temporary-directory'."
(delete-file file))) (delete-file file)))
;; We do not want to delete "." and "..". ;; We do not want to delete "." and "..".
(directory-files org-babel-temporary-directory 'full (directory-files org-babel-temporary-directory 'full
"^\\([^.]\\|\\.\\([^.]\\|\\..\\)\\).*")) (rx (or (not ".") "..."))))
(delete-directory org-babel-temporary-directory)) (delete-directory org-babel-temporary-directory))
(error (error
(message "Failed to remove temporary Org-babel directory %s" (message "Failed to remove temporary Org-babel directory %s"

View file

@ -1898,7 +1898,7 @@ It's only used when `ebnf-syntax' is `iso-ebnf'."
:group 'ebnf-syntactic) :group 'ebnf-syntactic)
(defcustom ebnf-file-suffix-regexp "\\.[Bb][Nn][Ff]$" (defcustom ebnf-file-suffix-regexp "\\.[Bb][Nn][Ff]\\'"
"Specify file name suffix that contains EBNF. "Specify file name suffix that contains EBNF.
See `ebnf-eps-directory' command." See `ebnf-eps-directory' command."
@ -2731,7 +2731,7 @@ Used in functions `ebnf-reset-style', `ebnf-push-style' and
(ebnf-syntax . 'ebnf) (ebnf-syntax . 'ebnf)
(ebnf-iso-alternative-p . nil) (ebnf-iso-alternative-p . nil)
(ebnf-iso-normalize-p . nil) (ebnf-iso-normalize-p . nil)
(ebnf-file-suffix-regexp . "\\.[Bb][Nn][Ff]$") (ebnf-file-suffix-regexp . "\\.[Bb][Nn][Ff]\\'")
(ebnf-eps-prefix . "ebnf--") (ebnf-eps-prefix . "ebnf--")
(ebnf-eps-header-font . '(11 Helvetica "Black" "White" bold)) (ebnf-eps-header-font . '(11 Helvetica "Black" "White" bold))
(ebnf-eps-header . nil) (ebnf-eps-header . nil)

View file

@ -155,7 +155,7 @@ See `compilation-error-regexp-alist'.")
If PROGRAM is non-nil, use that instead of \"find\"." If PROGRAM is non-nil, use that instead of \"find\"."
;; Pick file to search from location we know ;; Pick file to search from location we know
(let* ((dir (file-truename data-directory)) (let* ((dir (file-truename data-directory))
(file (car (directory-files dir nil "^[^.]")))) (file (car (directory-files dir nil "\\`[^.]"))))
(with-temp-buffer (with-temp-buffer
(call-process (or program "find") (call-process (or program "find")
nil nil

View file

@ -1373,10 +1373,10 @@ please check its value")
((not (eq system-type 'windows-nt)) ((not (eq system-type 'windows-nt))
(concat "~" init-file-user "/.emacs")) (concat "~" init-file-user "/.emacs"))
;; Else deal with the Windows situation. ;; Else deal with the Windows situation.
((directory-files "~" nil "^\\.emacs\\(\\.elc?\\)?$") ((directory-files "~" nil "\\`\\.emacs\\(\\.elc?\\)?\\'")
;; Prefer .emacs on Windows. ;; Prefer .emacs on Windows.
"~/.emacs") "~/.emacs")
((directory-files "~" nil "^_emacs\\(\\.elc?\\)?$") ((directory-files "~" nil "\\`_emacs\\(\\.elc?\\)?\\'")
;; Also support _emacs for compatibility, but warn about it. ;; Also support _emacs for compatibility, but warn about it.
(push `(initialization (push `(initialization
,(format-message ,(format-message

View file

@ -377,7 +377,7 @@ found on the last `refer-find-entry' or `refer-find-next-entry'."
dir files) dir files)
(while (setq dir (car dirs)) (while (setq dir (car dirs))
(setq files (setq files
(append (directory-files dir t "\\.bib$") (append (directory-files dir t "\\.bib\\'")
files)) files))
(setq dirs (cdr dirs))) (setq dirs (cdr dirs)))
files)) files))

View file

@ -37,7 +37,7 @@
(mapc (lambda (f) (mapc (lambda (f)
(if (string-match "url-\\(.*\\).el$" f) (if (string-match "url-\\(.*\\).el$" f)
(push (match-string 1 f) schemes))) (push (match-string 1 f) schemes)))
(directory-files d nil "^url-.*\\.el$"))) (directory-files d nil "\\`url-.*\\.el\\'")))
load-path) load-path)
(put 'url-extension-protocols 'schemes schemes) (put 'url-extension-protocols 'schemes schemes)
schemes))))) schemes)))))

View file

@ -247,7 +247,7 @@ to the RCS command."
(setq subdir (expand-file-name "RCS" (setq subdir (expand-file-name "RCS"
(file-name-directory file))))) (file-name-directory file)))))
(not (directory-files (file-name-directory file) (not (directory-files (file-name-directory file)
nil ".*,v$" t)) nil ",v\\'" t))
(yes-or-no-p "Create RCS subdirectory? ") (yes-or-no-p "Create RCS subdirectory? ")
(make-directory subdir)) (make-directory subdir))
(apply #'vc-do-command "*vc*" 0 "ci" file (apply #'vc-do-command "*vc*" 0 "ci" file
@ -312,8 +312,7 @@ whether to remove it."
(and (string= (file-name-nondirectory (directory-file-name dir)) "RCS") (and (string= (file-name-nondirectory (directory-file-name dir)) "RCS")
;; check whether RCS dir is empty, i.e. it does not ;; check whether RCS dir is empty, i.e. it does not
;; contain any files except "." and ".." ;; contain any files except "." and ".."
(not (directory-files dir nil (not (directory-files dir nil (rx (or (not ".") "..."))))
"^\\([^.]\\|\\.[^.]\\|\\.\\.[^.]\\).*"))
(yes-or-no-p (format "Directory %s is empty; remove it? " dir)) (yes-or-no-p (format "Directory %s is empty; remove it? " dir))
(delete-directory dir))))) (delete-directory dir)))))

View file

@ -669,7 +669,7 @@ This tests also `access-file', `file-readable-p' and `file-regular-p'."
(setq attr (directory-files-and-attributes tmp-name 'full)) (setq attr (directory-files-and-attributes tmp-name 'full))
(dolist (elt attr) (dolist (elt attr)
(should (equal (file-attributes (car elt)) (cdr elt)))) (should (equal (file-attributes (car elt)) (cdr elt))))
(setq attr (directory-files-and-attributes tmp-name nil "^b")) (setq attr (directory-files-and-attributes tmp-name nil "\\`b"))
(should (equal (mapcar #'car attr) '("bar")))) (should (equal (mapcar #'car attr) '("bar"))))
;; Cleanup. ;; Cleanup.

View file

@ -3331,7 +3331,7 @@ They might differ only in time attributes or directory size."
(tramp--test-file-attributes-equal-p (tramp--test-file-attributes-equal-p
(file-attributes (car elt)) (cdr elt)))) (file-attributes (car elt)) (cdr elt))))
(setq attr (directory-files-and-attributes tmp-name2 nil "^b")) (setq attr (directory-files-and-attributes tmp-name2 nil "\\`b"))
(should (equal (mapcar #'car attr) '("bar" "boz")))) (should (equal (mapcar #'car attr) '("bar" "boz"))))
;; Cleanup. ;; Cleanup.