]> git.eshelyaron.com Git - emacs.git/commitdiff
(file-cache-find-posix-p): New function. Detect Cygwin.
authorRichard M. Stallman <rms@gnu.org>
Tue, 27 Jan 2004 18:59:34 +0000 (18:59 +0000)
committerRichard M. Stallman <rms@gnu.org>
Tue, 27 Jan 2004 18:59:34 +0000 (18:59 +0000)
(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

index 71b67af355f45552d04414d5ec7b872890eae444..d983472041b938421869f0a04b9869e416e022cc 100644 (file)
@@ -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)))