process procedures should expect their env parameter in the same format get-environment-variables uses
|Reported by:||ckeen||Owned by:|
|Priority:||not urgent at all||Milestone:||5.0|
The current posix unit uses alists in get-environment-variables but expects lists of strings ("VAR=VAL" "VAR2"="VAL2") as the environment variable.
The reason for this is that they will get handed through to the libc's execve function.
My proposal is to change this behaviour to take alists as these are easier to handle in scheme and feel more natural.
Currently every user program needs to do this on its own, for example:
(define (update-environment updates) (let ((env (get-environment-variables))) (map (lambda (e) (string-append (car e) "=" (cdr e))) (fold (lambda (u env) (alist-update (car u) (cdr u) env equal?)) env updates))))
Potentially this will break a lot of code, therefore I propose this for CHICKEN 5.