Outdated egg!
This is an egg for CHICKEN 4, the unsupported old release. You're almost certainly looking for the CHICKEN 5 version of this egg, if it exists.
If it does not exist, there may be equivalent functionality provided by another egg; have a look at the egg index. Otherwise, please consider porting this egg to the current version of CHICKEN.
call-with-environment-variables
Set up and take down environment vars
call-with-environment-variables
[procedure] (call-with-environment-variables variables thunk) → unspecifiedSets up environment variable via dynamic-wind which are taken down after thunk.
- variables
 - An alist of the form '(("var" . "value") ...)
 - thunk
 - The thunk to execute with a modified environment
 
(define (call-with-environment-variables variables thunk)
  (let ((pre-existing-variables
          (map (lambda (var-value)
                 (let ((var (car var-value)))
                   (cons var (get-environment-variable var))))
               variables)))
    (dynamic-wind
      (lambda () (void))
      (lambda ()
        (use posix)
        (for-each
          (lambda (var-value) (setenv (car var-value) (cdr var-value)))
          variables)
        (thunk))
      (lambda ()
        (for-each
          (lambda (var-value)
            (let ((var (car var-value)) (value (cdr var-value)))
              (if value (setenv var value) (unsetenv var))))
          pre-existing-variables)))))
About this egg
Author
Repository
https://github.com/klutometis/call-with-environment-variables
License
BSD
Dependencies
Versions
- 0.1
 - Initial release
 - 0.1.1
 - Add the actual code.
 - 0.1.2
 - Fix versions.
 - 0.1.3
 - Update docs.
 - 0.1.4
 - With a note about cock-utils
 - 0.1.5
 - Docs
 - 0.1.6
 - Use hahn.
 - 0.1.7
 - Specify hahn-version.
 
Colophon
Documented by hahn.