Function: vc-cvs-dir-status-heuristic

vc-cvs-dir-status-heuristic is a byte-compiled function defined in vc-cvs.el.gz.

Signature

(vc-cvs-dir-status-heuristic DIR UPDATE-FUNCTION &optional BASEDIR)

Documentation

Find the CVS state of all files in DIR, using only local information.

Source Code

;; Defined in /usr/src/emacs/lisp/vc/vc-cvs.el.gz
;; Based on vc-cvs-dir-state-heuristic from Emacs 22.
;; FIXME does not mention unregistered files.
(defun vc-cvs-dir-status-heuristic (dir update-function &optional basedir)
  "Find the CVS state of all files in DIR, using only local information."
  (let (file basename status result dirlist)
    (with-temp-buffer
      (vc-cvs-get-entries dir)
      (goto-char (point-min))
      (while (not (eobp))
        (if (looking-at "D/\\([^/]*\\)////")
            (push (expand-file-name (match-string 1) dir) dirlist)
          ;; CVS-removed files are not taken under VC control.
          (when (looking-at "/\\([^/]*\\)/[^/-]")
            (setq basename (match-string 1)
                  file (expand-file-name basename dir)
                  status (or (vc-file-getprop file 'vc-state)
                             (vc-cvs-parse-entry file t)))
            (unless (eq status 'up-to-date)
              (push (list (if basedir
                              (file-relative-name file basedir)
                            basename)
                          status) result))))
        (forward-line 1)))
    (dolist (subdir dirlist)
      (setq result (append result
                           (vc-cvs-dir-status-heuristic subdir nil
                                                        (or basedir dir)))))
    (if basedir result
      (funcall update-function result))))