changeset 17410:777a31320b0f

(vc-update-change-log): Run `rcs2log' in the correct directory when ChangeLog is found elsewhere. Display any error output from rcs2log.
author Richard M. Stallman <rms@gnu.org>
date Sat, 12 Apr 1997 03:14:16 +0000
parents 6f49eb13a7c6
children f0ff96a35eb8
files lisp/vc.el
diffstat 1 files changed, 35 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/vc.el	Sat Apr 12 02:55:04 1997 +0000
+++ b/lisp/vc.el	Sat Apr 12 03:14:16 1997 +0000
@@ -1817,13 +1817,22 @@
 	  ;; relative to the curent directory if none supplied.
 	  nil)))
   (let ((odefault default-directory)
+	(changelog (find-change-log))
+	;; Presumably not portable to non-Unixy systems, along with rcs2log:
+	(tempfile (make-temp-name
+		   (concat (file-name-as-directory
+			    (directory-file-name (or (getenv "TMPDIR")
+						     (getenv "TMP")
+						     (getenv "TEMP")
+						     "/tmp")))
+			   "vc")))
 	(full-name (or add-log-full-name
 		       (user-full-name)
 		       (user-login-name)
 		       (format "uid%d" (number-to-string (user-uid)))))
 	(mailing-address (or add-log-mailing-address
 			     user-mail-address)))
-    (find-file-other-window (find-change-log))
+    (find-file-other-window changelog)
     (barf-if-buffer-read-only)
     (vc-buffer-sync)
     (undo-boundary)
@@ -1831,21 +1840,31 @@
     (push-mark)
     (message "Computing change log entries...")
     (message "Computing change log entries... %s"
-	     (if (eq 0 (apply 'call-process "rcs2log" nil '(t nil) nil
-			      "-u"
-			      (concat (vc-user-login-name)
-				      "\t"
-				      full-name
-				      "\t"
-				      mailing-address)
-			      (mapcar (function
-				       (lambda (f)
-					 (file-relative-name
-					  (if (file-name-absolute-p f)
-					      f
-					    (concat odefault f)))))
-				      args)))
-		 "done" "failed"))))
+	     (unwind-protect
+		 (progn
+		   (cd odefault)
+		   (if (eq 0 (apply 'call-process "rcs2log" nil
+				       (list t tempfile) nil
+				       "-c" changelog
+				       "-u" (concat (vc-user-login-name)
+						    "\t" full-name
+						    "\t" mailing-address)
+				       (mapcar
+					(function
+					 (lambda (f)
+					   (file-relative-name
+					    (if (file-name-absolute-p f)
+						f
+					      (concat odefault f)))))
+					args)))
+			  "done"
+		     (pop-to-buffer
+		      (set-buffer (get-buffer-create "*vc*")))
+		     (erase-buffer)
+		     (insert-file tempfile)
+		     "failed"))
+	       (cd (file-name-directory changelog))
+	       (delete-file tempfile)))))
 
 ;; Collect back-end-dependent stuff here