From 2d47b18a05f7dd4c84a58a6adec44767b3a4e38f Mon Sep 17 00:00:00 2001 From: Francois-Rene Rideau Date: Sun, 3 Dec 2023 20:35:59 +0000 Subject: [PATCH 1/6] Flush outputs in main functions. Fixes #1064 --- src/gerbil/compiler/driver.ss | 9 +++++++-- src/gerbil/main.ss | 22 +++++++++++++--------- 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/src/gerbil/compiler/driver.ss b/src/gerbil/compiler/driver.ss index 42e82e123..e09b69ae2 100644 --- a/src/gerbil/compiler/driver.ss +++ b/src/gerbil/compiler/driver.ss @@ -139,8 +139,13 @@ namespace: gxc (write `(define builtin-modules (append (quote ,builtin-modules) libgerbil-builtin-modules))) (write `(define (gerbil-main) - (gerbil-runtime-init! builtin-modules) - (apply ,mod-main (cdr (command-line))))) + (unwind-protect + (begin + (gerbil-runtime-init! builtin-modules) + (apply ,mod-main (cdr (command-line)))) + (begin + (with-catch void (cut force-output (current-output-port))) + (with-catch void (cut force-output (current-error-port))))))) (write '(gerbil-main)) (newline))) diff --git a/src/gerbil/main.ss b/src/gerbil/main.ss index eec224a7d..602a94921 100644 --- a/src/gerbil/main.ss +++ b/src/gerbil/main.ss @@ -233,14 +233,18 @@ package: gerbil (def (main) (init!) - (let* ((cmdline (command-line)) - (program (car cmdline)) - (program-name (path-strip-directory program)) - (args (cdr cmdline))) - (if (string-prefix? "gx" program-name) - ;; a gerbil tool - (tool-main program-name args) - ;; our main -- process arguments and dispatch - (bach-main program-name args)))) + (unwind-protect + (let* ((cmdline (command-line)) + (program (car cmdline)) + (program-name (path-strip-directory program)) + (args (cdr cmdline))) + (if (string-prefix? "gx" program-name) + ;; a gerbil tool + (tool-main program-name args) + ;; our main -- process arguments and dispatch + (bach-main program-name args))) + (begin + (with-catch void (cut force-output (current-output-port))) + (with-catch void (cut force-output (current-error-port)))))) (##main-set! main) From 95e3000fcc8ebc943c99deda330a906f8ce2debc Mon Sep 17 00:00:00 2001 From: Francois-Rene Rideau Date: Sun, 3 Dec 2023 21:14:00 +0000 Subject: [PATCH 2/6] Fix --- src/gerbil/compiler/driver.ss | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/gerbil/compiler/driver.ss b/src/gerbil/compiler/driver.ss index e09b69ae2..a32d2f56d 100644 --- a/src/gerbil/compiler/driver.ss +++ b/src/gerbil/compiler/driver.ss @@ -139,13 +139,13 @@ namespace: gxc (write `(define builtin-modules (append (quote ,builtin-modules) libgerbil-builtin-modules))) (write `(define (gerbil-main) - (unwind-protect - (begin - (gerbil-runtime-init! builtin-modules) - (apply ,mod-main (cdr (command-line)))) - (begin + (with-catch + (lambda (e) (with-catch void (cut force-output (current-output-port))) - (with-catch void (cut force-output (current-error-port))))))) + (with-catch void (cut force-output (current-error-port)))) + (lambda () + (gerbil-runtime-init! builtin-modules) + (apply ,mod-main (cdr (command-line))))))) (write '(gerbil-main)) (newline))) From 4b9e0dbdaf5585e0b42004b7632026287e258f35 Mon Sep 17 00:00:00 2001 From: Francois-Rene Rideau Date: Sun, 3 Dec 2023 21:48:53 +0000 Subject: [PATCH 3/6] Fix --- src/gerbil/compiler/driver.ss | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/gerbil/compiler/driver.ss b/src/gerbil/compiler/driver.ss index a32d2f56d..9219bed9f 100644 --- a/src/gerbil/compiler/driver.ss +++ b/src/gerbil/compiler/driver.ss @@ -139,13 +139,14 @@ namespace: gxc (write `(define builtin-modules (append (quote ,builtin-modules) libgerbil-builtin-modules))) (write `(define (gerbil-main) - (with-catch - (lambda (e) - (with-catch void (cut force-output (current-output-port))) - (with-catch void (cut force-output (current-error-port)))) - (lambda () - (gerbil-runtime-init! builtin-modules) - (apply ,mod-main (cdr (command-line))))))) + (dynamic-wind + void + (lambda () + (gerbil-runtime-init! builtin-modules) + (apply ,mod-main (cdr (command-line)))) + (lambda () + (with-catch void (cut force-output (current-output-port))) + (with-catch void (cut force-output (current-error-port))))))) (write '(gerbil-main)) (newline))) From 71aa501345bd3f75e4d3a2b2886a12c128e7f057 Mon Sep 17 00:00:00 2001 From: Francois-Rene Rideau Date: Sun, 3 Dec 2023 21:54:59 +0000 Subject: [PATCH 4/6] Tweak --- src/gerbil/main.ss | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/gerbil/main.ss b/src/gerbil/main.ss index 602a94921..edf741ec2 100644 --- a/src/gerbil/main.ss +++ b/src/gerbil/main.ss @@ -243,8 +243,7 @@ package: gerbil (tool-main program-name args) ;; our main -- process arguments and dispatch (bach-main program-name args))) - (begin - (with-catch void (cut force-output (current-output-port))) - (with-catch void (cut force-output (current-error-port)))))) + (with-catch void (cut force-output (current-output-port))) + (with-catch void (cut force-output (current-error-port))))) (##main-set! main) From 294c7f872905b3c24bea705dcd3401c68240f675 Mon Sep 17 00:00:00 2001 From: Francois-Rene Rideau Date: Sun, 3 Dec 2023 23:21:36 +0000 Subject: [PATCH 5/6] Fix --- src/gerbil/compiler/driver.ss | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gerbil/compiler/driver.ss b/src/gerbil/compiler/driver.ss index 9219bed9f..7a5718b5a 100644 --- a/src/gerbil/compiler/driver.ss +++ b/src/gerbil/compiler/driver.ss @@ -145,8 +145,8 @@ namespace: gxc (gerbil-runtime-init! builtin-modules) (apply ,mod-main (cdr (command-line)))) (lambda () - (with-catch void (cut force-output (current-output-port))) - (with-catch void (cut force-output (current-error-port))))))) + (with-catch void (lambda () (force-output (current-output-port)))) + (with-catch void (lambda () (force-output (current-error-port)))))))) (write '(gerbil-main)) (newline))) From 648e4f820fdbe07e1d13c56497e811f0d54e5c50 Mon Sep 17 00:00:00 2001 From: Francois-Rene Rideau Date: Mon, 4 Dec 2023 02:04:58 +0000 Subject: [PATCH 6/6] Fix --- src/gerbil/compiler/driver.ss | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/gerbil/compiler/driver.ss b/src/gerbil/compiler/driver.ss index 7a5718b5a..db57111db 100644 --- a/src/gerbil/compiler/driver.ss +++ b/src/gerbil/compiler/driver.ss @@ -139,14 +139,13 @@ namespace: gxc (write `(define builtin-modules (append (quote ,builtin-modules) libgerbil-builtin-modules))) (write `(define (gerbil-main) - (dynamic-wind - void - (lambda () - (gerbil-runtime-init! builtin-modules) - (apply ,mod-main (cdr (command-line)))) - (lambda () - (with-catch void (lambda () (force-output (current-output-port)))) - (with-catch void (lambda () (force-output (current-error-port)))))))) + (with-unwind-protect + (lambda () + (gerbil-runtime-init! builtin-modules) + (apply ,mod-main (cdr (command-line)))) + (lambda () + (with-catch void (lambda () (force-output (current-output-port)))) + (with-catch void (lambda () (force-output (current-error-port)))))))) (write '(gerbil-main)) (newline)))