Merge branch 'master' of github.com:ashinn/chibi-scheme

This commit is contained in:
Alex Shinn 2019-09-03 19:57:12 +08:00
commit af686a8b50
3 changed files with 20 additions and 5 deletions

View file

@ -6,6 +6,7 @@
(test-begin "processes") (test-begin "processes")
(test #t (process-running? (current-process-id))) (test #t (process-running? (current-process-id)))
(test #t (process-running? (parent-process-id))) (test #t (process-running? (parent-process-id)))
(test #f (process-running? -1))
(test #f (signal-set-contains? (current-signal-mask) signal/alarm)) (test #f (signal-set-contains? (current-signal-mask) signal/alarm))
(test #t (signal-set? (make-signal-set))) (test #t (signal-set? (make-signal-set)))
(test #t (signal-set? (current-signal-mask))) (test #t (signal-set? (current-signal-mask)))

View file

@ -83,8 +83,14 @@ static sexp sexp_pid_cmdline (sexp ctx, int pid) {
int id = KERN_PROC; int id = KERN_PROC;
#endif #endif
size_t reslen = sizeof(res); size_t reslen = sizeof(res);
#if defined(__NetBSD__) || defined(__OpenBSD__)
int name[6] = {CTL_KERN, id, KERN_PROC_PID, pid, reslen, 1};
unsigned namelen = 6;
#else
int name[4] = {CTL_KERN, id, KERN_PROC_PID, pid}; int name[4] = {CTL_KERN, id, KERN_PROC_PID, pid};
if (sysctl(name, 4, &res, &reslen, NULL, 0) >= 0) { unsigned namelen = 4;
#endif
if (sysctl(name, namelen, &res, &reslen, NULL, 0) >= 0 && reslen > 0) {
#if defined(__APPLE__) #if defined(__APPLE__)
return sexp_c_string(ctx, res.kp_proc.p_comm, -1); return sexp_c_string(ctx, res.kp_proc.p_comm, -1);
#elif defined(__NetBSD__) || defined(__OpenBSD__) #elif defined(__NetBSD__) || defined(__OpenBSD__)

View file

@ -5,7 +5,7 @@
(define known-implementations (define known-implementations
'((chibi "chibi-scheme" (chibi-scheme -V) "0.7.3") '((chibi "chibi-scheme" (chibi-scheme -V) "0.7.3")
(chicken "chicken" (csi -p "(chicken-version)") "4.9.0") (chicken "chicken" (csi -release) "4.9.0")
(cyclone "cyclone" (icyc -vn) "0.5.3") (cyclone "cyclone" (icyc -vn) "0.5.3")
(foment "foment") (foment "foment")
(gauche "gosh" (gosh -E "print (gauche-version)" -E exit) "0.9.4") (gauche "gosh" (gosh -E "print (gauche-version)" -E exit) "0.9.4")
@ -1287,6 +1287,16 @@
(string->number (process->string '(csi -p "(##sys#fudge 42)"))) (string->number (process->string '(csi -p "(##sys#fudge 42)")))
8)) 8))
(define (get-chicken-repo-path)
(let ((release (string-trim (process->string '(csi -release))
char-whitespace?)))
(string-trim
(if (string-prefix? "4." release)
(process->string '(csi -p "(repository-path)"))
(process->string
'(csi -R chicken.platform -p "(car (repository-path))")))
char-whitespace?)))
(define (get-install-dirs impl cfg) (define (get-install-dirs impl cfg)
(define (guile-eval expr) (define (guile-eval expr)
(guard (exn (else #f)) (guard (exn (else #f))
@ -1304,9 +1314,7 @@
(cons share-dir (delete share-dir dirs)) (cons share-dir (delete share-dir dirs))
dirs))) dirs)))
((chicken) ((chicken)
(let ((dir (string-trim (let ((dir (get-chicken-repo-path)))
(process->string '(csi -p "(repository-path)"))
char-whitespace?)))
(list (list
(if (file-exists? dir) ; repository-path should always exist (if (file-exists? dir) ; repository-path should always exist
dir dir