Function: vc-src-dir-status-files

vc-src-dir-status-files is a byte-compiled function defined in vc-src.el.gz.

Signature

(vc-src-dir-status-files DIR FILES UPDATE-FUNCTION)

Source Code

;; Defined in /usr/src/emacs/lisp/vc/vc-src.el.gz
(defun vc-src-dir-status-files (dir files update-function)
  (let* ((result nil)
         (status nil)
         (default-directory (or dir default-directory))
         (out
          (with-output-to-string
            (with-current-buffer standard-output
              (setq status
                    (ignore-errors
                      (apply
                       #'process-file vc-src-program nil t nil
                       "status" "-a"
                       (mapcar #'file-relative-name files)))))))
         dlist)
    (when (eq 0 status)
      (dolist (line (split-string out "[\n\r]" t))
        (let* ((pair (split-string line "[\t]" t))
               (state (vc-src--parse-state (car pair)))
               (frel (cadr pair)))
          (if (file-directory-p frel)
              (push frel dlist)
            (when (not (eq state 'up-to-date))
              (push (list frel state) result)))))
      (dolist (drel dlist)
        (let ((dresult (vc-src-dir-status-files
                        (expand-file-name drel) nil #'identity)))
          (dolist (dres dresult)
            (push (list (concat (file-name-as-directory drel) (car dres))
                        (cadr dres))
                  result))))
      (funcall update-function result))))