From c30201c954d1680bde701c6598c7b60d5272065e Mon Sep 17 00:00:00 2001 From: Yota Toyama Date: Sun, 26 May 2024 13:06:11 +0900 Subject: [PATCH] Fix --- lib/chibi/process.scm | 13 +++++++++++-- lib/chibi/process.sld | 5 +++-- lib/chibi/win32/process-win32.sld | 4 ++-- lib/scheme/process-context.sld | 21 ++++----------------- 4 files changed, 20 insertions(+), 23 deletions(-) diff --git a/lib/chibi/process.scm b/lib/chibi/process.scm index 3268cb3ac..05a1065b3 100644 --- a/lib/chibi/process.scm +++ b/lib/chibi/process.scm @@ -1,20 +1,29 @@ +(define unwind #f) + +((call/cc + (lambda (k) + (set! unwind k) + (lambda () #f)))) (cond-expand (plan9 - (define (exit . o) + (define (emergency-exit . o) (%exit (if (pair? o) (if (string? (car o)) (car o) (if (eq? #t (car o)) "" "chibi error")) "")))) (else - (define (exit . o) + (define (emergency-exit . o) (%exit (if (pair? o) (if (integer? (car o)) (inexact->exact (car o)) (if (eq? #t (car o)) 0 1)) 0))))) +(define (exit . o) + (unwind (lambda () (apply emergency-exit o)))) + (cond-expand (bsd (define (process-command-line pid) diff --git a/lib/chibi/process.sld b/lib/chibi/process.sld index b4970a45d..044faa6d5 100644 --- a/lib/chibi/process.sld +++ b/lib/chibi/process.sld @@ -1,7 +1,8 @@ (define-library (chibi process) - (export exit sleep alarm %fork fork kill execute waitpid system system? - process-command-line process-running? + (export exit emergency-exit sleep alarm + %fork fork kill execute waitpid system system? + process-command-line process-running? set-signal-action! make-signal-set signal-set? signal-set-contains? signal-set-fill! signal-set-add! signal-set-delete! diff --git a/lib/chibi/win32/process-win32.sld b/lib/chibi/win32/process-win32.sld index 49cb57a42..11badb634 100644 --- a/lib/chibi/win32/process-win32.sld +++ b/lib/chibi/win32/process-win32.sld @@ -1,9 +1,9 @@ (define-library (chibi win32 process-win32) (import (scheme base)) - (export exit) + (export exit emergency-exit) (cond-expand (windows (include-shared "process-win32") (include "process-win32.scm")) (else - (import (only (chibi process) exit))))) + (import (only (chibi process) exit emergency-exit))))) diff --git a/lib/scheme/process-context.sld b/lib/scheme/process-context.sld index 8e15a628d..6666bce10 100644 --- a/lib/scheme/process-context.sld +++ b/lib/scheme/process-context.sld @@ -1,20 +1,7 @@ (define-library (scheme process-context) - (import (chibi) (only (scheme base) call/cc) (srfi 98)) - (cond-expand (windows (import (prefix (only (chibi win32 process-win32) exit) process-))) - (else (import (prefix (only (chibi process) exit) process-)))) + (import (chibi) (srfi 98)) + (cond-expand (windows (import (only (chibi win32 process-win32) exit emergency-exit))) + (else (import (only (chibi process) exit emergency-exit)))) (export get-environment-variable get-environment-variables - command-line exit emergency-exit) - - (begin - (define unwind #f) - - ((call/cc - (lambda (cont) - (set! unwind cont) - (lambda () #f)))) - - (define emergency-exit process-exit) - - (define (exit . rest) - (unwind (lambda () (apply emergency-exit rest)))))) + command-line exit emergency-exit))