From 6e74cce2f95ed5304b25a7c1842f4ad58b939768 Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Tue, 27 Jan 2004 18:59:34 +0000 Subject: [PATCH] (file-cache-find-posix-p): New function. Detect Cygwin. (file-cache-add-directory-using-find): Added Cygwin support. (file-cache-find-command-posix-flag): New user variable. (file-cache-add-directory): Check for directories and remove them from dir-files. --- lisp/filecache.el | 49 +++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 43 insertions(+), 6 deletions(-) diff --git a/lisp/filecache.el b/lisp/filecache.el index 71b67af355f..d983472041b 100644 --- a/lisp/filecache.el +++ b/lisp/filecache.el @@ -170,6 +170,19 @@ do not use this variable." :type 'string :group 'file-cache) +(defcustom file-cache-find-command-posix-flag 'not-defined + "*Set to t, if `file-cache-find-command' handles wildcards POSIX style. +This variable is automatically set to nil or non-nil +if it has the initial value `not-defined' whenever you first +call the `file-cache-add-directory-using-find'. + +Under Windows operating system where Cygwin is available, this value +should be t." + :type '(choice (const :tag "Yes" t) + (const :tag "No" nil) + (const :tag "Unknown" not-defined)) + :group 'file-cache) + (defcustom file-cache-locate-command "locate" "*External program used by `file-cache-add-directory-using-locate'." :type 'string @@ -267,11 +280,13 @@ be added to the cache." ;; Filter out files we don't want to see (mapcar '(lambda (file) - (mapcar - '(lambda (regexp) - (if (string-match regexp file) - (setq dir-files (delq file dir-files)))) - file-cache-filter-regexps)) + (if (file-directory-p file) + (setq dir-files (delq file dir-files)) + (mapcar + '(lambda (regexp) + (if (string-match regexp file) + (setq dir-files (delq file dir-files)))) + file-cache-filter-regexps))) dir-files) (file-cache-add-file-list dir-files)))) @@ -317,17 +332,39 @@ in each directory, not to the directory list itself." file-cache-alist))) ))) +(defun file-cache-find-posix-p () + "Check if `file-cache-find-command' handles wildcards POSIX style." + (or (not (memq system-type '(ms-dos windows-nt))) ;; Include all POSIX systems. + (with-temp-buffer ;; Cygwin? + (call-process file-cache-find-command + nil + (current-buffer) + nil + "--version") + (goto-char (point-min)) + ;; Cygwin + (if (re-search-forward "GNU" nil t) + (buffer-string))))) + (defun file-cache-add-directory-using-find (directory) "Use the `find' command to add files to the file cache. Find is run in DIRECTORY." (interactive "DAdd files under directory: ") (let ((dir (expand-file-name directory))) + (if (eq file-cache-find-command-posix-flag 'not-defined) + (setq file-cache-find-command-posix-flag (file-cache-find-posix-p))) (set-buffer (get-buffer-create file-cache-buffer)) (erase-buffer) (call-process file-cache-find-command nil (get-buffer file-cache-buffer) nil dir "-name" - (if (eq system-type 'windows-nt) "'*'" "*") + (cond + (file-cache-find-command-posix-flag + "\\*") + ((eq system-type 'windows-nt) + "'*'") + (t + "*")) "-print") (file-cache-add-from-file-cache-buffer))) -- 2.39.2