~ruther/guix-local

e14c39291bb55ba336cb3fc2c44224154c8500c0 — Ludovic Courtès 12 years ago e3ccdf9
ui: Ignore SIGPIPE and catch `system-error' exceptions.

* guix/ui.scm (initialize-guix): Call `sigaction'.
  (call-with-error-handling): Wrap `thunk' in a (catch 'system-error ...).
1 files changed, 11 insertions(+), 1 deletions(-)

M guix/ui.scm
M guix/ui.scm => guix/ui.scm +11 -1
@@ 120,6 120,11 @@ messages."
  "Perform the usual initialization for stand-alone Guix commands."
  (install-locale)
  (textdomain "guix")

  ;; Ignore SIGPIPE.  If the daemon closes the connection, we prefer to be
  ;; notified via an EPIPE later.
  (sigaction SIGPIPE SIG_IGN)

  (setvbuf (current-output-port) _IOLBF)
  (setvbuf (current-error-port) _IOLBF))



@@ 171,7 176,12 @@ General help using GNU software: <http://www.gnu.org/gethelp/>"))
             ;; FIXME: Server-provided error messages aren't i18n'd.
             (leave (_ "build failed: ~a~%")
                    (nix-protocol-error-message c))))
    (thunk)))
    ;; Catch EPIPE and the likes.
    (catch 'system-error
      thunk
      (lambda args
        (leave (_ "~a~%")
               (strerror (system-error-errno args)))))))

(define (read/eval-package-expression str)
  "Read and evaluate STR and return the package it refers to, or exit an