# HG changeset patch # User Richard M. Stallman # Date 1075229974 0 # Node ID 2598e11dc4ddf22279dd752efa7805e1e486687f # Parent ca5369d1b33a700c4446ef5b5d91c9e0c3f83d43 (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. diff -r ca5369d1b33a -r 2598e11dc4dd lisp/filecache.el --- 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)))