Opened 13 months ago

Closed 2 weeks ago

#1270 closed change request (fixed)

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
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 7 months ago by sjamaan

  • Estimated difficulty set to easy
  • Version changed from 4.10.x to 4.11.0

comment:2 Changed 2 weeks ago by kooda

  • Resolution set to fixed
  • Status changed from new to closed

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

Note: See TracTickets for help on using tickets.