* vc/vc-svn.el (vc-svn-parse-status): If there are multiple files
authorGlenn Morris <rgm@gnu.org>
Thu, 12 Sep 2013 06:21:33 +0000 (23:21 -0700)
committerGlenn Morris <rgm@gnu.org>
Thu, 12 Sep 2013 06:21:33 +0000 (23:21 -0700)
in the status output, assume `filename' is the first.

Fixes: debbugs:15322

lisp/ChangeLog
lisp/vc/vc-svn.el

index 37f6321..37005de 100644 (file)
@@ -1,5 +1,8 @@
 2013-09-12  Glenn Morris  <rgm@gnu.org>
 
+       * vc/vc-svn.el (vc-svn-parse-status): If there are multiple files
+       in the status output, assume `filename' is the first.  (Bug#15322)
+
        * vc/vc.el (vc-deduce-fileset): Doc fix.
 
        * calc/calc-help.el (Info-goto-node):
index afc76c0..bfd608c 100644 (file)
@@ -674,19 +674,23 @@ and that it passes `vc-svn-global-switches' to it before FLAGS."
 
 (defun vc-svn-parse-status (&optional filename)
   "Parse output of \"svn status\" command in the current buffer.
-Set file properties accordingly.  Unless FILENAME is non-nil, parse only
-information about FILENAME and return its status."
-  (let (file status propstat)
+Set file properties accordingly.  If FILENAME is non-nil, return its status."
+  (let (multifile file status propstat)
     (goto-char (point-min))
     (while (re-search-forward
             ;; Ignore the files with status X.
            "^\\(?:\\?\\|[ ACDGIMR!~][ MC][ L][ +][ S]..\\([ *]\\) +\\([-0-9]+\\) +\\([0-9?]+\\) +\\([^ ]+\\)\\) +" nil t)
       ;; If the username contains spaces, the output format is ambiguous,
       ;; so don't trust the output's filename unless we have to.
-      (setq file (or filename
+      (setq file (or (unless multifile filename)
                      (expand-file-name
-                      (buffer-substring (point) (line-end-position)))))
-      (setq status (char-after (line-beginning-position))
+                      (buffer-substring (point) (line-end-position))))
+            ;; If we are parsing the result of running status on a directory,
+            ;; there could be multiple files in the output.
+            ;; We assume that filename, if supplied, applies to the first
+            ;; listed file (ie, the directory).  Bug#15322.
+            multifile t
+            status (char-after (line-beginning-position))
             ;; Status of the item's properties ([ MC]).
             propstat (char-after (1+ (line-beginning-position))))
       (if (eq status ??)