changeset 24155:62548105541c

(shell-command-on-region): Return command's exit status.
author Dave Love <fx@gnu.org>
date Sat, 23 Jan 1999 21:50:18 +0000
parents 91c00b394901
children e93962ff30b0
files lisp/simple.el
diffstat 1 files changed, 20 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/simple.el	Sat Jan 23 13:23:26 1999 +0000
+++ b/lisp/simple.el	Sat Jan 23 21:50:18 1999 +0000
@@ -1,6 +1,6 @@
 ;;; simple.el --- basic editing commands for Emacs
 
-;; Copyright (C) 1985, 86, 87, 93, 94, 95, 96, 97, 1998
+;; Copyright (C) 1985, 86, 87, 93, 94, 95, 96, 97, 98, 1999
 ;;        Free Software Foundation, Inc.
 
 ;; This file is part of GNU Emacs.
@@ -1184,7 +1184,8 @@
 				      error-buffer)
   "Execute string COMMAND in inferior shell with region as input.
 Normally display output (if any) in temp buffer `*Shell Command Output*';
-Prefix arg means replace the region with it.
+Prefix arg means replace the region with it.  Return the exit code of
+COMMAND.
 
 To specify a coding system for converting non-ASCII characters
 in the input and output to the shell command, use \\[universal-coding-system-argument]
@@ -1239,7 +1240,8 @@
 	 (if error-buffer 
 	     (concat (file-name-directory temp-file-name-pattern)
 		     (make-temp-name "scor"))
-	   nil)))
+	   nil))
+	exit-status)
     (if (or replace
 	    (and output-buffer
 		 (not (or (bufferp output-buffer) (stringp output-buffer))))
@@ -1249,11 +1251,12 @@
 	  ;; Don't muck with mark unless REPLACE says we should.
 	  (goto-char start)
 	  (and replace (push-mark))
-	  (call-process-region start end shell-file-name t
-			       (if error-file
-				   (list t error-file)
-				 t)
-			       nil shell-command-switch command)
+	  (setq exit-status
+		(call-process-region start end shell-file-name t
+				     (if error-file
+					 (list t error-file)
+				       t)
+				     nil shell-command-switch command))
 	  (let ((shell-buffer (get-buffer "*Shell Command Output*")))
 	    (and shell-buffer (not (eq shell-buffer (current-buffer)))
 		 (kill-buffer shell-buffer)))
@@ -1263,8 +1266,7 @@
       ;; replacing its entire contents.
       (let ((buffer (get-buffer-create
 		     (or output-buffer "*Shell Command Output*")))
-	    (success nil)
-	    (exit-status nil))
+	    (success nil))
 	(unwind-protect
 	    (if (eq buffer (current-buffer))
 		;; If the input is the same buffer as the output,
@@ -1279,9 +1281,10 @@
 						  (if error-file
 						      (list t error-file)
 						    t)
-						  nil shell-command-switch command))
-		       (setq success t))
-	      ;; Clear the output buffer, then run the command with output there.
+						  nil shell-command-switch
+						  command)))
+	      ;; Clear the output buffer, then run the command with
+	      ;; output there.
 	      (save-excursion
 		(set-buffer buffer)
 		(setq buffer-read-only nil)
@@ -1291,8 +1294,8 @@
 					 (if error-file
 					     (list buffer error-file)
 					   buffer)
-					 nil shell-command-switch command))
-	      (setq success t))
+					 nil shell-command-switch command)))
+	  (setq success (zerop exit-status))
 	  ;; Report the amount of output.
 	  (let ((lines (save-excursion
 			 (set-buffer buffer)
@@ -1323,7 +1326,8 @@
 	  (set-buffer (get-buffer-create error-buffer))
 	  ;; Do no formatting while reading error file, for fear of looping.
 	  (format-insert-file error-file nil)
-	  (delete-file error-file)))))
+	  (delete-file error-file)))
+    exit-status))
        
 (defun shell-command-to-string (command)
   "Execute shell command COMMAND and return its output as a string."