From 0b3f36df8c6eae67c267ebe4de0cb4006e0c7251 Mon Sep 17 00:00:00 2001 From: Michael Albinus Date: Sun, 24 Jul 2011 11:56:26 +0200 Subject: [PATCH] * net/tramp-sh.el (tramp-barf-unless-okay): Return the value of `tramp-send-command-and-check' if there is no error. (tramp-send-command-and-read): Suppress *all* errors if NOERROR. --- lisp/ChangeLog | 6 ++++++ lisp/net/tramp-sh.el | 35 +++++++++++++++++++---------------- 2 files changed, 25 insertions(+), 16 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index aac855804c..4f03b9b97d 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2011-07-24 Michael Albinus + + * net/tramp-sh.el (tramp-barf-unless-okay): Return the value of + `tramp-send-command-and-check' if there is no error. + (tramp-send-command-and-read): Suppress *all* errors if NOERROR. + 2011-07-22 Alan Mackenzie Prevent cc-langs.elc being loaded at run time. diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el index 1c6f0844be..bcd2357290 100644 --- a/lisp/net/tramp-sh.el +++ b/lisp/net/tramp-sh.el @@ -4505,27 +4505,30 @@ DONT-SUPPRESS-ERR is non-nil, stderr won't be sent to /dev/null." "Run COMMAND, check exit status, throw error if exit status not okay. Similar to `tramp-send-command-and-check' but accepts two more arguments FMT and ARGS which are passed to `error'." - (unless (tramp-send-command-and-check vec command) - (apply 'tramp-error vec 'file-error fmt args))) + (or (tramp-send-command-and-check vec command) + (apply 'tramp-error vec 'file-error fmt args))) (defun tramp-send-command-and-read (vec command &optional noerror) "Run COMMAND and return the output, which must be a Lisp expression. In case there is no valid Lisp expression and NOERROR is nil, it raises an error." - (tramp-barf-unless-okay vec command "`%s' returns with error" command) - (with-current-buffer (tramp-get-connection-buffer vec) - ;; Read the expression. - (goto-char (point-min)) - (condition-case nil - (prog1 (read (current-buffer)) - ;; Error handling. - (when (re-search-forward "\\S-" (point-at-eol) t) - (error nil))) - (error (unless noerror - (tramp-error - vec 'file-error - "`%s' does not return a valid Lisp expression: `%s'" - command (buffer-string))))))) + (when (if noerror + (tramp-send-command-and-check vec command) + (tramp-barf-unless-okay + vec command "`%s' returns with error" command)) + (with-current-buffer (tramp-get-connection-buffer vec) + ;; Read the expression. + (goto-char (point-min)) + (condition-case nil + (prog1 (read (current-buffer)) + ;; Error handling. + (when (re-search-forward "\\S-" (point-at-eol) t) + (error nil))) + (error (unless noerror + (tramp-error + vec 'file-error + "`%s' does not return a valid Lisp expression: `%s'" + command (buffer-string)))))))) (defun tramp-convert-file-attributes (vec attr) "Convert file-attributes ATTR generated by perl script, stat or ls. -- 2.20.1