Opened 9 years ago

Closed 8 years ago

#1270 closed change request (fixed)

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

Reported by: Christian Kellermann Owned by:
Priority: not urgent at all Milestone: 5.0
Component: core libraries Version: 4.11.0
Keywords: Cc:
Estimated difficulty: easy

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.

Change History (2)

comment:1 Changed 8 years ago by sjamaan

Estimated difficulty: easy
Version: 4.10.x4.11.0

comment:2 Changed 8 years ago by Kooda

Resolution: fixed
Status: newclosed

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

Note: See TracTickets for help on using tickets.