+(define (setup-env config)
+ (with-current-working-directory
+ (config-root-dir config)
+ (lambda ()
+ (if (and (file-exists? eval-env-file) (file-readable? eval-env-file))
+ (with-input-from-file eval-env-file
+ (lambda ()
+ (let loop ((next-expr (read)))
+ (unless (eof-object? next-expr)
+ (eval next-expr eval-env)
+ (loop (read))))))))))
+
+(define (drop-privs config)
+ (let ((uid (config-uid config))
+ (gid (config-gid config)))
+ (if gid ; Group first, since only root can switch groups.
+ (set! (current-group-id) gid))
+ (if uid
+ (set! (current-user-id) uid))))
+
+