]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix edge case errors in filename-matching regexps
authorMattias Engdegård <mattiase@acm.org>
Tue, 14 Apr 2020 10:17:40 +0000 (12:17 +0200)
committerMattias Engdegård <mattiase@acm.org>
Tue, 14 Apr 2020 10:25:16 +0000 (12:25 +0200)
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.

40 files changed:
admin/authors.el
lisp/auth-source-pass.el
lisp/calendar/todo-mode.el
lisp/cedet/semantic/db-ebrowse.el
lisp/cedet/semantic/texi.el
lisp/cedet/srecode/map.el
lisp/dired.el
lisp/emacs-lisp/autoload.el
lisp/emacs-lisp/shadow.el
lisp/files.el
lisp/finder.el
lisp/generic-x.el
lisp/gnus/gnus-agent.el
lisp/gnus/gnus-cache.el
lisp/gnus/gnus-score.el
lisp/gnus/gnus-util.el
lisp/gnus/gnus-uu.el
lisp/gnus/nndraft.el
lisp/gnus/nnmh.el
lisp/gnus/nnspool.el
lisp/gnus/spam-stat.el
lisp/help-fns.el
lisp/help.el
lisp/international/quail.el
lisp/international/titdic-cnv.el
lisp/mail/mspools.el
lisp/mail/rmail.el
lisp/net/ange-ftp.el
lisp/net/tramp.el
lisp/obsolete/gulp.el
lisp/obsolete/vc-arch.el
lisp/org/ob-core.el
lisp/progmodes/ebnf2ps.el
lisp/progmodes/executable.el
lisp/startup.el
lisp/textmodes/refer.el
lisp/url/url-about.el
lisp/vc/vc-rcs.el
test/lisp/net/tramp-archive-tests.el
test/lisp/net/tramp-tests.el

index dc42bc72ef33a3d56c1178069b3e75de8aad6a22..6cf7b95449119d3a1cb840d026d34badedee67cf 100644 (file)
@@ -278,7 +278,7 @@ If REALNAME is nil, ignore that author.")
 
 
 (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
     "\\.arch-inventory$"
     "ChangeLog\\(\\.[0-9]+\\)?\\'"
@@ -288,9 +288,9 @@ If REALNAME is nil, ignore that author.")
     "\\`\\(indent\\|automated\\)\\'" "indent/" "mod-test/"
     "-resources/"
     "unidata/.*\\.txt\\'"
-    "BidiCharacterTest.txt"
+    "BidiCharacterTest\\.txt"
     ;; TODO lib/? Matches other things?
-    "build-aux/" "m4/" "Emacs.xcodeproj" "mapfiles" "\\.map\\'"
+    "build-aux/" "m4/" "Emacs\\.xcodeproj" "mapfiles" "\\.map\\'"
     "preferences\\.\\(nib\\|gorm\\)"
     ;; Generated files that have since been removed.
     "\\(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\
 \\|odt\\|publish\\)\\.el\\'" "ox-\\1.el")
     ;; From test/ to test/automated/.
-    ("comint-testsuite.el" "automated/\\&")
+    ("comint-testsuite\\.el" "automated/\\&")
     ("\\`\\(bytecomp\\|font-parse\\|icalendar\\|occur\\|newsticker\\)\
 -testsuite\\.el" "\\1-tests.el")
     ("automated/flymake/warnpred/\\(Makefile\\|test\\.\\(?:c\\|pl\\)\\)\\'"
index e2a6bfefb5df18e4d31fd7db7c454b86de54e1ff..ba66d0bb5dfbd978c059f29ae88d386fc815b1a9 100644 (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)))
     (mapcar
      (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)
   "Return password-store entry data matching HOST, USER and PORT.
index 6d8fe9c998f9c22d76f8553cadc366a0e65c9467..a49f428a3c8d4acf9951bfbd6a9b493116914d6a 100644 (file)
@@ -707,7 +707,7 @@ and done items are always shown on visiting a category."
                                    shortf todo-show-first)))
                     (when (eq todo-show-first 'regexp)
                       (let ((rxfiles (directory-files todo-directory t
-                                                      ".*\\.todr$" t)))
+                                                      "\\.todr\\'" t)))
                         (when (and rxfiles (> (length rxfiles) 1))
                           (let ((rxf (mapcar #'todo-short-file-name rxfiles)))
                             (setq fi-file (todo-absolute-file-name
@@ -4054,7 +4054,7 @@ regexp items."
 (defun todo-find-filtered-items-file ()
   "Choose a filtered items file and visit it."
   (interactive)
-  (let ((files (directory-files todo-directory t "\\.tod[rty]$" t))
+  (let ((files (directory-files todo-directory t "\\.tod[rty]\\'" t))
        falist file)
     (dolist (f files)
       (let ((sf-name (todo-short-file-name f))
@@ -4187,7 +4187,7 @@ multifile commands for further details."
                                (regexp ".todr")))))
         (multi (> (length flist) 1))
         (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))
         bufname)
     (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'."
   (let* ((oldvalue (symbol-value symbol))
         (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)
     ;; Need to reset these to get font-locking right.
     (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'."
   (let ((oldvalue (symbol-value symbol))
        (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)
     ;; Need to reset this to get font-locking right.
     (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'."
   (let ((oldvalue (symbol-value symbol))
        (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)
     (when (not (equal value oldvalue))
       (dolist (f files)
@@ -6262,7 +6262,7 @@ the empty string (i.e., no time string)."
   "The :set function for user option `todo-highlight-item'."
   (let ((oldvalue (symbol-value symbol))
        (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)
     (when (not (equal value oldvalue))
       (dolist (f files)
index 55e755dc363487ab3f3b45a40a8dd3335d7c8cdf..a3219af7d3e2ae16b6b5aa68f74bd52bcb414db9 100644 (file)
@@ -181,7 +181,9 @@ is specified by `semanticdb-default-save-directory'."
   "Load all semanticdb controlled EBROWSE caches."
   (interactive)
   (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
       (load (car f) nil t)
       (setq f (cdr f)))
index 760cb192159bb949361e4c7635b3e2fd549a23b6..8e8d362ceb5e40d4aaa7fcf85665e30310fa5670 100644 (file)
@@ -495,7 +495,7 @@ that start with that symbol."
               (setq tabs (cdr tabs)))
             r))
          (t
-          (directory-files default-directory nil "\\.texi$"))
+          (directory-files default-directory nil "\\.texi\\'"))
          )))
 
 ;; Turns out this might not be useful.
index 784ebffe17c364caf8cd3be59c4a5614e7163305..dc9492009681fc705d38c8b6c3d4dc87b682999d 100644 (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.
     (dolist (dir srecode-map-load-path)
       (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))
                     (not (auto-save-file-name-p f))
                     (file-readable-p f))
index 689ad1fbfabe81dcc31690bf6ba36591106618e3..f2d478e83c6318736bed7d1938407cdb5a53803a 100644 (file)
@@ -3171,7 +3171,7 @@ Any other value means to ask for each directory."
   :group 'dired)
 
 ;; 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.
 ;; This function is useful outside of dired.  One could change its name
index 785e350e0e561285ffe00b47513ce0c46847e2a4..dc7461d93eecb1f9cab854b8e7ac35bec6b9c706 100644 (file)
@@ -1047,7 +1047,7 @@ write its autoloads into the specified file instead."
                        ;; what is the suffix for the underlying OS.
                       (unless (string-match "\\.\\(elc\\|so\\|dll\\)" suf)
                          (push suf tmp)))
-                     (concat "^[^=.].*" (regexp-opt tmp t) "\\'")))
+                     (concat "\\`[^=.].*" (regexp-opt tmp t) "\\'")))
         (files (apply #'nconc
                       (mapcar (lambda (dir)
                                 (directory-files (expand-file-name dir)
index f0a4870a6982ecfa13ec58fa20a7e52692d53110..4ff129e367ad1bb44c174b8d8c75c38d527c9869 100644 (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 dir (directory-file-name (or pp ".")))
        (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
             (not noninteractive)
             (message "Checking %d files in %s..." (length curr-files) dir))
index 01da2a985bc3d3e5f225bc8dac7bed83d7cfd27e..3e4ad7c0d44c4aa5a9660d9bbcbab98924180f5a 100644 (file)
@@ -2671,7 +2671,7 @@ since only a single case-insensitive search through the alist is made."
      ("\\.pas\\'" . pascal-mode)
      ("\\.\\(dpr\\|DPR\\)\\'" . delphi-mode)
      ("\\.ad[abs]\\'" . ada-mode)
-     ("\\.ad[bs].dg\\'" . ada-mode)
+     ("\\.ad[bs]\\.dg\\'" . ada-mode)
      ("\\.\\([pP]\\([Llm]\\|erl\\|od\\)\\|al\\)\\'" . perl-mode)
      ("Imakefile\\'" . makefile-imake-mode)
      ("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)
      ("\\.toml\\'" . conf-toml-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/\\(?:acpid?/.+\\|aliases\\(?:\\.d/.+\\)?\\|default/.+\\|group-?\\|hosts\\..+\\|inittab\\|ksysguarddrc\\|opera6rc\\|passwd-?\\|shadow-?\\|sysconfig/.+\\)\\'" . conf-mode)
      ;; 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))
 
 (defconst directory-files-no-dot-files-regexp
-  "^\\([^.]\\|\\.\\([^.]\\|\\..\\)\\).*"
+  "[^.]\\|\\.\\.\\."
   "Regexp matching any file name except \".\" and \"..\".")
 
 (defun files--force (no-such fn &rest args)
index 96359b0b4fefb2d58b4180b7e5a7329411e4d290..71f8ac740ee7cb745b1b453b2dd35596015b5f4f 100644 (file)
@@ -188,7 +188,7 @@ from; the default is `load-path'."
   ;; Allow compressed files also.
   (setq package--builtins nil)
   (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)
          (files (cl-loop for d in (or dirs load-path)
                          when (file-exists-p (directory-file-name d))
index d49193ccfc588cf51365931effd4e92bf2569815..cd24f497c960d6feba536991d0f307a2afac6331 100644 (file)
@@ -1430,7 +1430,7 @@ like an INI file.  You can add this hook to `find-file-hook'."
     "nowait"
     "internal")
   '(("^\\([-A-Za-z0-9_]+\\)" 1 font-lock-type-face))
-  '("/etc/inetd.conf\\'")
+  '("/etc/inetd\\.conf\\'")
   (list
    (function
     (lambda ()
@@ -1630,7 +1630,7 @@ like an INI file.  You can add this hook to `find-file-hook'."
      (2 font-lock-variable-name-face)
      (3 font-lock-constant-face)))
   ;; List of additional automode-alist expressions
-  '("/etc/named.boot\\'")
+  '("/etc/named\\.boot\\'")
   ;; List of set up functions to call
   nil))
 
@@ -1667,7 +1667,7 @@ like an INI file.  You can add this hook to `find-file-hook'."
   ;; List of additional font-lock-expressions
   nil
   ;; List of additional auto-mode-alist expressions
-  '("/etc/resolv[e]?.conf\\'")
+  '("/etc/resolve?\\.conf\\'")
   ;; List of set up functions to call
   nil))
 
@@ -1803,7 +1803,7 @@ like an INI file.  You can add this hook to `find-file-hook'."
   ;; List of additional font-lock-expressions
   nil
   ;; 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
   nil))
 
index 9f22b7df0ff2f984ff199e832ca8cddec60e6b00..cf705ae5dc1472c89444ae0dc6bd4273496059cb 100644 (file)
@@ -2074,7 +2074,7 @@ doesn't exist, to valid the overview buffer."
                  (file-attributes (directory-files-and-attributes
                                    (gnus-agent-article-name
                                     "" gnus-agent-read-agentview)
-                                   nil "^[0-9]+$" t)))
+                                   nil "\\`[0-9]+\\'" t)))
             (while file-attributes
               (let ((fa (pop file-attributes)))
                 (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)
                                                     (and (not (file-directory-p (nnheader-concat dir 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)))
            nov-arts
@@ -4110,7 +4111,7 @@ agent has fetched."
                 (setq delta sum))
             (let ((sum (- (nth 2 entry)))
                   (info (directory-files-and-attributes
-                         path nil "^-?[0-9]+$" t))
+                         path nil "\\`-?[0-9]+\\'" t))
                   file)
               (while (setq file (pop info))
                 (cl-incf sum (float (or (file-attribute-size (cdr file)) 0))))
index 8b9acfe0510c3dd8eaffa9745ca823c98e5c19ba..02a8ea723d3fb54b45928fd2fb0b829458699ede 100644 (file)
@@ -501,7 +501,7 @@ Returns the list of articles removed."
     (when (file-exists-p dir)
       (setq articles
            (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.
       (if articles
index 41b63e23232fbe91175e8dc83aedcccfb43f076e..46b70eaf2755f85839139c71c7c64bcf5da869e6 100644 (file)
@@ -2981,7 +2981,7 @@ The list is determined from the variable `gnus-score-file-alist'."
       (if (file-directory-p (car files))
          (setq out (nconc (directory-files
                            (car files) t
-                           (concat (gnus-score-file-regexp) "$"))))
+                           (concat (gnus-score-file-regexp) "\\'"))))
        (push (car files) out))
       (setq files (cdr files)))
     (setq gnus-internal-global-score-files out)))
index 23c62b4f93982acd8a297080f126320db9511882..3429d6560b7377e82b24b0b88d0217246849ce81 100644 (file)
@@ -768,7 +768,7 @@ nil.  See also `gnus-bind-print-variables'."
 If there's no subdirectory, delete DIRECTORY as well."
   (when (file-directory-p directory)
     (let ((files (directory-files
-                 directory t "^\\([^.]\\|\\.\\([^.]\\|\\..\\)\\).*"))
+                 directory t (rx (or (not ".") "..."))))
          file dir)
       (while files
        (setq file (pop files))
index d40ba9cef42ed0d6dd8050b117693b95522c5ebd..5902f2b37a7565464d931c88541b85f9c51cca3f 100644 (file)
@@ -1674,7 +1674,7 @@ Gnus might fail to display all of it.")
     did-unpack))
 
 (defun gnus-uu-dir-files (dir)
-  (let ((dirs (directory-files dir t "[^/][^\\.][^\\.]?$"))
+  (let ((dirs (directory-files dir t (rx (or (not ".") "..."))))
        files file)
     (while dirs
       (if (file-directory-p (setq file (car dirs)))
index 3ee86a696cbd935304288a068aac10c646470f68..a1337e8d7fa22cc6ea0a43cfff00075a0abe5626 100644 (file)
@@ -219,7 +219,7 @@ are generated if and only if they are also in `message-draft-headers'."
       (nnheader-re-read-dir pathname)
       (setq dir (mapcar (lambda (name) (string-to-number (substring name 1)))
                        (ignore-errors (directory-files
-                                       pathname nil "^#[0-9]+#$" t))))
+                                       pathname nil "\\`#[0-9]+#\\'" t))))
       (dolist (n dir)
        (unless (file-exists-p
                 (setq file (expand-file-name (int-to-string n) pathname)))
index c075f2989863e84e1177b6e51134a4840f131921..8e7f0565e6747d0f4c6000f62e54b1f88df87a64 100644 (file)
@@ -172,7 +172,7 @@ as unread by Gnus.")
        (setq dir
              (sort
               (mapcar 'string-to-number
-                      (directory-files pathname nil "^[0-9]+$" t))
+                      (directory-files pathname nil "\\`[0-9]+\\'" t))
               '<))
        (cond
         (dir
@@ -360,7 +360,7 @@ as unread by Gnus.")
       (nnmh-possibly-change-directory group server)
       (let ((articles (mapcar 'string-to-number
                              (directory-files
-                              nnmh-current-directory nil "^[0-9]+$"))))
+                              nnmh-current-directory nil "\\`[0-9]+\\'"))))
        (when articles
          (setcar active (apply 'min articles))
          (setcdr active (apply 'max articles))))))
@@ -371,7 +371,7 @@ as unread by Gnus.")
   ;; Delete all articles in GROUP.
   (if (not force)
       ()                               ; 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
        (when (file-writable-p (car articles))
          (nnheader-message 5 "Deleting article %s in %s..."
@@ -485,7 +485,7 @@ as unread by Gnus.")
       ;; Find the highest number in the group.
       (let ((files (sort
                    (mapcar 'string-to-number
-                           (directory-files dir nil "^[0-9]+$"))
+                           (directory-files dir nil "\\`[0-9]+\\'"))
                    '>)))
        (when files
          (setcdr active (car files)))))
@@ -509,7 +509,7 @@ as unread by Gnus.")
   (let* ((dir nnmh-current-directory)
         (files (sort (mapcar 'string-to-number
                              (directory-files nnmh-current-directory
-                                              nil "^[0-9]+$" t))
+                                              nil "\\`[0-9]+\\'" t))
                      '<))
         (nnmh-file (concat dir ".nnmh-articles"))
         new articles)
index da13a56001b2ad5abada61fb35d12c61e929cd15..33b68fa989ef8b9efbaf8d2ac8dd7379717bbfa4 100644 (file)
@@ -260,7 +260,7 @@ there.")
            t)
        ;; Yes, completely empty spool directories *are* possible.
        ;; 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) '<)))
        (if dir
            (nnheader-insert
index 2e03608b5df78a766bf5bf199c2c3d3ab775d472..3da45a2b623596a069e86c30bb6d2b1b153c0aa4 100644 (file)
@@ -557,7 +557,7 @@ check the variable `spam-stat-score-data'."
 
 (defun spam-stat-process-directory (dir 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))
         (count 0))
     (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',
 display non-spam files; otherwise display spam files."
   (interactive "DDirectory: ")
-  (let* ((files (directory-files dir t "^[^.]"))
+  (let* ((files (directory-files dir t "\\`[^.]"))
         display-files
         buffer-score
         (total (length files))
index 1be8e0ab0823609d6c1b4d0aaee03c49c753a29a..c7d0112cb6199b4e8c96cac43647934078616e3d 100644 (file)
@@ -623,7 +623,7 @@ FILE is the file where FUNCTION was probably defined."
   ;; of the *packages* in which the function is defined.
   (let* ((name (symbol-name symbol))
          (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)
          (first nil))
     (with-temp-buffer
index 45cbaad4e8b634b8ca4b6219549d398cd38c317e..0f1991e31859ed44c99254d5de8a8db892bc8baf 100644 (file)
@@ -361,7 +361,7 @@ With argument, display info only for the selected version."
                     (setq res (cons (match-string-no-properties 1) res)))))
               (cons "NEWS"
                     (directory-files data-directory nil
-                                     "^NEWS\\.[0-9][-0-9]*$" nil)))
+                                     "\\`NEWS\\.[0-9][-0-9]*\\'" nil)))
              (sort (delete-dups res) #'string>)))
           (current (car all-versions)))
       (setq version (completing-read
index 193b1d7c2c226bc24512e1f25a65e0f435e0f4e4..3299cc55a28ef04812cd627abb72b3a99825b544 100644 (file)
@@ -3059,7 +3059,7 @@ of each directory."
     (while quail-dirs
       (setq dirname (car quail-dirs))
       (when dirname
-       (setq pkg-list (directory-files dirname 'full "\\.el$"))
+       (setq pkg-list (directory-files dirname 'full "\\.el\\'"))
        (while pkg-list
          (with-temp-buffer
            (insert-file-contents (car pkg-list))
index 2a80d75fe7e34ad87923e47ed69b94d1dd47cd03..4f1bcf2f94ec7feebbb731934a7ffd0d9fb6c786 100644 (file)
@@ -553,7 +553,7 @@ To get complete usage, invoke \"emacs -batch -f batch-titdic-convert -h\"."
        (if (file-directory-p filename)
            (progn
              (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)))
        (while files
          (setq file (expand-file-name (car files)))
index 9c0c3fe5ca998caa3c969ea0d0b3243a78a77a2d..94b0886c75f5961e81463f47b79ab69f6d6614c5 100644 (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
            (mapcar 'file-name-sans-extension
                    (directory-files mspools-folder-directory nil
-                                    (format "^[^.]+\\.%s" mspools-suffix)))
+                                    (format "\\`[^.]+\\.%s" mspools-suffix)))
            ))
    ))
 
@@ -357,7 +357,7 @@ nil."
     (if (null mspools-folder-directory)
        (error "Set `mspools-folder-directory' to where the spool files are"))
     (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 (delq nil folders))
     (setq mspools-files folders)
index d798ffa05166b588252577ea086eda04a3e5ad5c..3feff803e3e8c477bd2c91caa60a4bd769402ef0 100644 (file)
@@ -474,7 +474,7 @@ the frame where you have the RMAIL buffer displayed."
   :type 'directory
   :group 'rmail-files)
 ;;;###autoload
-(defcustom rmail-secondary-file-regexp (purecopy "\\.xmail$")
+(defcustom rmail-secondary-file-regexp (purecopy "\\.xmail\\'")
   "Regexp for which files are secondary Rmail files."
   :type 'regexp
   :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)))))))
 \f
 ;;; 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.
 Enabling this permits Speedbar to display your folders for easy
 browsing, and moving of messages."
index 1d456044901d2bc8da35fe7bc84b96afccca5962..92ed98b2a8985bb74fbfe8155dae486a5475c4f9 100644 (file)
@@ -4170,8 +4170,7 @@ directory, so that Emacs will know its current contents."
                   (ange-ftp-delete-directory file recursive trash)
                 (delete-file file trash)))
             ;; We do not want to delete "." and "..".
-            (directory-files
-             dir 'full "^\\([^.]\\|\\.\\([^.]\\|\\..\\)\\).*")))
+            (directory-files dir 'full (rx (or (not ".") "...")))))
        (if parsed
            (let* ((host (nth 0 parsed))
                   (user (nth 1 parsed))
index 0ad65fb8bd08f825022244eddb0e754946cc79fd..4f3249d966ae7c68e803f0a5211084112880de29 100644 (file)
@@ -2458,7 +2458,7 @@ remote file names."
           (regexp-opt
            (mapcar
             #'file-name-sans-extension
-            (directory-files dir nil "^tramp.+\\.elc?$"))
+            (directory-files dir nil "\\`tramp.+\\.elc?\\'"))
            'paren))))
     (mapatoms
      (lambda (atom)
index 6589ede69db8b3b78e42b797b0b3a606a62bf9f7..08ab3884d41db53fed59b881bcb0a49913f1a8ef 100644 (file)
@@ -94,7 +94,7 @@ is left in the `*gulp*' buffer at the end."
   (interactive "DRequest updates for Lisp directory: \nP")
   (with-current-buffer (get-buffer-create gulp-tmp-buffer)
     (let ((m-p-alist (gulp-create-m-p-alist
-                     (directory-files dir nil "^[^=].*\\.el$" t)
+                     (directory-files dir nil "\\`[^=].*\\.el\\'" t)
                      dir))
          ;; Temporarily inhibit undo in the *gulp* buffer.
          (buffer-undo-list t)
index b186a5c52a21de7a61b96319136a3831a96d2436..bcdefac518767e3efb289783bdb1df0ab192f28b 100644 (file)
@@ -597,18 +597,20 @@ CALLBACK expects (ENTRIES &optional MORE-TO-COME); see
     (unless (file-writable-p rl-dir)
       (error "No writable revlib directory found"))
     (message "Revlib at %s" rl-dir)
-    (let* ((archives (directory-files rl-dir 'full "[^.]\\|..."))
+    (let* ((archives (directory-files rl-dir 'full (rx (or (not ".") "..."))))
            (categories
             (apply 'append
                    (mapcar (lambda (dir)
                              (when (file-directory-p dir)
-                               (directory-files dir 'full "[^.]\\|...")))
+                               (directory-files dir 'full
+                                                (rx (or (not ".") "...")))))
                            archives)))
            (branches
             (apply 'append
                    (mapcar (lambda (dir)
                              (when (file-directory-p dir)
-                               (directory-files dir 'full "[^.]\\|...")))
+                               (directory-files dir 'full
+                                                (rx (or (not ".") "...")))))
                            categories)))
            (versions
             (apply 'append
index 651561a20186468306d70a3ec3c50db522c3de04..7654c7ebe412ee88967a2520de93240436fe8ea9 100644 (file)
@@ -3055,7 +3055,7 @@ of `org-babel-temporary-directory'."
                    (delete-file file)))
                ;; We do not want to delete "." and "..".
                (directory-files org-babel-temporary-directory 'full
-                                "^\\([^.]\\|\\.\\([^.]\\|\\..\\)\\).*"))
+                                 (rx (or (not ".") "..."))))
          (delete-directory org-babel-temporary-directory))
       (error
        (message "Failed to remove temporary Org-babel directory %s"
index d5820bbfe0a57f4e1ece5df836ae61c5debf9552..640cb576ef67bd6b5b20dec26f94dbf3248487f7 100644 (file)
@@ -1898,7 +1898,7 @@ It's only used when `ebnf-syntax' is `iso-ebnf'."
   :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.
 
 See `ebnf-eps-directory' command."
@@ -2731,7 +2731,7 @@ Used in functions `ebnf-reset-style', `ebnf-push-style' and
       (ebnf-syntax                      . 'ebnf)
       (ebnf-iso-alternative-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-header-font             . '(11 Helvetica "Black" "White" bold))
       (ebnf-eps-header                  . nil)
index b42e6f73ab9732862505ff16e48eb95a2f922878..bae2bb664034b6f518d1c434d0d05a7816efdbad 100644 (file)
@@ -155,7 +155,7 @@ See `compilation-error-regexp-alist'.")
 If PROGRAM is non-nil, use that instead of \"find\"."
   ;;  Pick file to search from location we know
   (let* ((dir (file-truename data-directory))
-         (file (car (directory-files dir nil "^[^.]"))))
+         (file (car (directory-files dir nil "\\`[^.]"))))
     (with-temp-buffer
       (call-process (or program "find")
                     nil
index 1f545c6692277c51396283b4a171f3afc450ebd9..5af264e3ef7d25295537331ab3fd4701031fb982 100644 (file)
@@ -1373,10 +1373,10 @@ please check its value")
         ((not (eq system-type 'windows-nt))
          (concat "~" init-file-user "/.emacs"))
         ;; Else deal with the Windows situation.
-        ((directory-files "~" nil "^\\.emacs\\(\\.elc?\\)?$")
+        ((directory-files "~" nil "\\`\\.emacs\\(\\.elc?\\)?\\'")
          ;; Prefer .emacs on Windows.
          "~/.emacs")
-        ((directory-files "~" nil "^_emacs\\(\\.elc?\\)?$")
+        ((directory-files "~" nil "\\`_emacs\\(\\.elc?\\)?\\'")
          ;; Also support _emacs for compatibility, but warn about it.
          (push `(initialization
                  ,(format-message
index 2865b422732423e56620f7f9e4e6b56a83cf91fe..8d8223a73263b12f4e6a6e95efe8f5a2be189bc8 100644 (file)
@@ -377,7 +377,7 @@ found on the last `refer-find-entry' or `refer-find-next-entry'."
                    dir files)
                (while (setq dir (car dirs))
                  (setq files
-                       (append (directory-files dir t "\\.bib$")
+                       (append (directory-files dir t "\\.bib\\'")
                                files))
                  (setq dirs (cdr dirs)))
                files))
index fd83ac343646c2ece345a3d97236434461c2e521..dde47e94de5c5fd1e950ec987972894d985c21fe 100644 (file)
@@ -37,7 +37,7 @@
                          (mapc (lambda (f)
                                  (if (string-match "url-\\(.*\\).el$" f)
                                      (push (match-string 1 f) schemes)))
-                               (directory-files d nil "^url-.*\\.el$")))
+                               (directory-files d nil "\\`url-.*\\.el\\'")))
                        load-path)
                  (put 'url-extension-protocols 'schemes schemes)
                  schemes)))))
index 00796e5d63f1796f38c50b43dcb5742b2f7ec090..273f37c10d617dbdd04e607cd725f6797d97d90a 100644 (file)
@@ -247,7 +247,7 @@ to the RCS command."
                 (setq subdir (expand-file-name "RCS"
                                                (file-name-directory file)))))
           (not (directory-files (file-name-directory file)
-                                nil ".*,v$" t))
+                                nil ",v\\'" t))
           (yes-or-no-p "Create RCS subdirectory? ")
           (make-directory subdir))
       (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")
           ;; check whether RCS dir is empty, i.e. it does not
           ;; 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))
           (delete-directory dir)))))
 
index 3229d2b65067f2bb5a714df24d7a763a187767a9..95e41a3f03b06aa4069c1ee28d0da2ad6a80eb9e 100644 (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))
          (dolist (elt attr)
            (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"))))
 
       ;; Cleanup.
index 47d51767c5cd1c91c61e8b857a211915d3b05a4b..544bdb5c058a08d08c405ca4b92dcd07e64a75ef 100644 (file)
@@ -3331,7 +3331,7 @@ They might differ only in time attributes or directory size."
               (tramp--test-file-attributes-equal-p
                (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"))))
 
        ;; Cleanup.