changeset 53729:2598e11dc4dd

(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.
author Richard M. Stallman <rms@gnu.org>
date Tue, 27 Jan 2004 18:59:34 +0000
parents ca5369d1b33a
children 2a4fc5c14ddd
files lisp/filecache.el
diffstat 1 files changed, 43 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/filecache.el	Tue Jan 27 16:48:17 2004 +0000
+++ b/lisp/filecache.el	Tue Jan 27 18:59:34 2004 +0000
@@ -170,6 +170,19 @@
   :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 @@
       ;; 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 @@
 		    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)))