From d43c8d03328f16f7b5ac27f46b60911ff483131b Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Sat, 17 Nov 2007 03:42:22 +0000 Subject: [PATCH] (process-lines): Move here from ../admin/admin.el. --- lisp/subr.el | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/lisp/subr.el b/lisp/subr.el index c110390b44a..5a88fa4fd5d 100644 --- a/lisp/subr.el +++ b/lisp/subr.el @@ -1539,6 +1539,23 @@ FILE should be the name of a library, with no directory name." ;;;; Process stuff. +(defun process-lines (program &rest args) + "Execute PROGRAM with ARGS, returning its output as a list of lines. +Signal an error if the program returns with a non-zero exit status." + (with-temp-buffer + (let ((status (apply 'call-process program nil (current-buffer) nil args))) + (unless (eq status 0) + (error "%s exited with status %s" program status)) + (goto-char (point-min)) + (let (lines) + (while (not (eobp)) + (setq lines (cons (buffer-substring-no-properties + (line-beginning-position) + (line-end-position)) + lines)) + (forward-line 1)) + (nreverse lines))))) + ;; open-network-stream is a wrapper around make-network-process. (when (featurep 'make-network-process) -- 2.39.2