diff --git a/src/engine/engine-utilities.scm b/src/engine/engine-utilities.scm index ead0ede8c9..80b84e9207 100644 --- a/src/engine/engine-utilities.scm +++ b/src/engine/engine-utilities.scm @@ -32,6 +32,8 @@ (gnc:session-begin session url ignore-lock? create-if-needed?) + (eq? 'no-err (gw:enum--val->sym + (gnc:session-get-error session) #f)) (gnc:session-load session) session))) (or result diff --git a/src/scm/command-line.scm b/src/scm/command-line.scm index 395ab4c3c6..967f6acf92 100644 --- a/src/scm/command-line.scm +++ b/src/scm/command-line.scm @@ -281,10 +281,12 @@ the current value of the path.") (lambda () (gnc:use-guile-module-here! '(gnucash price-quotes)) (gnc:suspend-gui-refresh) + (gnc:engine-suspend-events) (if (not (gnc:add-quotes-to-book-at-url val)) (begin (gnc:error "Failed to add quotes to " val) (gnc:shutdown 1))) + (gnc:engine-suspend-events) (gnc:resume-gui-refresh)) gnc:*batch-mode-things-to-do*))) "FILE" diff --git a/src/scm/price-quotes.scm b/src/scm/price-quotes.scm index 82c3fe95f2..e46e88852c 100644 --- a/src/scm/price-quotes.scm +++ b/src/scm/price-quotes.scm @@ -640,6 +640,11 @@ (keep-going? #t)) (cond + ((eq? fq-results #f) + (set! keep-going? #f) + (if (gnc:ui-is-running?) + (gnc:error-dialog (_ "Unable to get quotes or diagnose the problem.")) + (gnc:warn (_ "Unable to get quotes or diagnose the problem.")))) ((member 'missing-lib fq-results) (set! keep-going? #f) (if (gnc:ui-is-running?) @@ -738,19 +743,22 @@ Run 'update-finance-quote' as root to install them.") "\n"))) (define (gnc:add-quotes-to-book-at-url url) (let* ((session (gnc:url->loaded-session url #f #f)) - (quote-ok? (and session - (gnc:book-add-quotes - (gnc:session-get-book session))))) + (quote-ok? #f)) + (if session + (begin + (set! quote-ok? (and (gnc:book-add-quotes + (gnc:session-get-book session)))) - (if (not quote-ok?) (gnc:msg "book-add-quotes failed")) - (and session (gnc:session-save session)) - (if (not (eq? 'no-err - (gw:enum--val->sym - (gnc:session-get-error session) #f))) - (set! quote-ok? #f)) - (if (not quote-ok?) - (gnc:msg "session-save failed " (gnc:session-get-error session))) - (and session (gnc:session-destroy session)) + (if (not quote-ok?) (gnc:msg "book-add-quotes failed")) + (gnc:session-save session) + (if (not (eq? 'no-err + (gw:enum--val->sym + (gnc:session-get-error session) #f))) + (set! quote-ok? #f)) + (if (not quote-ok?) + (gnc:msg "session-save failed " (gnc:session-get-error session))) + (gnc:session-destroy session)) + (gnc:error "book-add-quotes unable to open file")) quote-ok?)) ; (define (get-1-quote exchange . items)