Summary

process procedures should expect their env parameter in the same format get-environment-variables uses

Metadata

Description

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.

Changes and comments

[2016-08-25 20:39:30 UTC] sjamaan set difficulty to easy

[2016-08-25 20:39:30 UTC] sjamaan changed version from 4.10.x to 4.11.0

[2017-03-15 10:06:19 UTC] kooda changed status from new to closed

[2017-03-15 10:06:19 UTC] kooda set resolution to fixed

[2017-03-15 10:06:19 UTC] kooda wrote:

Done in the chicken-5 branch, commit: 83010488d7649aafc577344182dd518015ac6fdf