summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès2007-12-14 12:40:45 +0100
committerLudovic Courtès2007-12-14 12:40:45 +0100
commit28d2d0f31f51e2b667f5a7fa3bd3347edf2d8e22 (patch)
tree20d124cedc9302ed0d974ae91aa7ad7646e139f6
parentf8b41ab7899927530b52b11f552ea9ceda866fea (diff)
downloadskribilo-28d2d0f31f51e2b667f5a7fa3bd3347edf2d8e22.tar.gz
skribilo-28d2d0f31f51e2b667f5a7fa3bd3347edf2d8e22.tar.lz
skribilo-28d2d0f31f51e2b667f5a7fa3bd3347edf2d8e22.zip
Return non-zero when an error is caught.
* src/guile/skribilo/condition.scm (%call-with-skribilo-error-catch): Make sure to always call EXIT. (call-with-skribilo-error-catch/exit): New. * src/pre-inst-skribilo.in: Use `call-with-skribilo-error-catch/exit'. * src/skribilo.in: Likewise.
-rw-r--r--src/guile/skribilo/condition.scm16
-rwxr-xr-xsrc/pre-inst-skribilo.in2
-rwxr-xr-xsrc/skribilo.in2
3 files changed, 11 insertions, 9 deletions
diff --git a/src/guile/skribilo/condition.scm b/src/guile/skribilo/condition.scm
index 3490135..46298f1 100644
--- a/src/guile/skribilo/condition.scm
+++ b/src/guile/skribilo/condition.scm
@@ -1,6 +1,6 @@
;;; condition.scm -- Skribilo SRFI-35 error condition hierarchy.
;;;
-;;; Copyright 2006 Ludovic Courtès <ludovic.courtes@laas.fr>
+;;; Copyright 2006, 2007 Ludovic Courtès <ludo@gnu.org>
;;;
;;;
;;; This program is free software; you can redistribute it and/or modify
@@ -37,7 +37,8 @@
lookup-error-condition-handler
%call-with-skribilo-error-catch
- call-with-skribilo-error-catch))
+ call-with-skribilo-error-catch
+ call-with-skribilo-error-catch/exit))
;;; Author: Ludovic Courtès
;;;
@@ -129,7 +130,8 @@
(format (current-error-port)
(_ "in `~a': too few arguments: ~S~%")
(too-few-arguments-error:proc-name c)
- (too-few-arguments-error:arguments c)))
+ (too-few-arguments-error:arguments c))
+ (exit exit-val))
((file-search-error? c)
(format (current-error-port)
@@ -156,9 +158,7 @@
(file-error:file-name c))
(exit exit-val))
- (;;(skribilo-error? c)
- #t ;; XXX: The SRFI-35 currently in `guile-lib' doesn't work
- ;; properly with non-direct super-types.
+ ((skribilo-error? c)
(let ((handler (lookup-error-condition-handler c)))
(if (procedure? handler)
(handler c)
@@ -173,6 +173,8 @@
`(call/cc (lambda (cont)
(%call-with-skribilo-error-catch ,thunk cont #f))))
-;;; arch-tag: 285010f9-06ea-4c39-82c2-6c3604f668b3
+(define (call-with-skribilo-error-catch/exit thunk)
+ (%call-with-skribilo-error-catch thunk primitive-exit 1))
+
;;; conditions.scm ends here
diff --git a/src/pre-inst-skribilo.in b/src/pre-inst-skribilo.in
index b5bd080..3a5c0d8 100755
--- a/src/pre-inst-skribilo.in
+++ b/src/pre-inst-skribilo.in
@@ -27,6 +27,6 @@ exec ${GUILE-@GUILE@} -L "@abs_top_srcdir@/src/guile" \
-c "
(use-modules (skribilo condition))
-(call-with-skribilo-error-catch
+(call-with-skribilo-error-catch/exit
(lambda ()
(apply $main (cdr (command-line)))))" "$@"
diff --git a/src/skribilo.in b/src/skribilo.in
index a82f9ae..677856a 100755
--- a/src/skribilo.in
+++ b/src/skribilo.in
@@ -28,6 +28,6 @@ main='(module-ref (resolve-interface '\''(skribilo)) '\'skribilo')'
exec ${GUILE-@GUILE@} -L "@guilemoduledir@" -c "
(use-modules (skribilo condition))
-(call-with-skribilo-error-catch
+(call-with-skribilo-error-catch/exit
(lambda ()
(apply $main (cdr (command-line)))))" "$@"