From 0f8efe9693f3b39494fb21428766c70aa4e70360 Mon Sep 17 00:00:00 2001 From: Justin Ethier Date: Sun, 10 Jan 2016 22:44:51 -0500 Subject: [PATCH] Added get-environment-variable --- scheme/process-context.sld | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/scheme/process-context.sld b/scheme/process-context.sld index ba570bd5..03e8cac1 100644 --- a/scheme/process-context.sld +++ b/scheme/process-context.sld @@ -3,7 +3,7 @@ command-line ;exit - already defined as a primitive, at least for now emergency-exit - ; TODO: get-environment-variable + get-environment-variable ; TODO: get-environment-variables ) ; (import (scheme base) @@ -28,4 +28,18 @@ lis = pl; } return_closcall1(data, k, lis); ") + (define-c get-environment-variable + "(void *data, int argc, closure _, object k, object env_var)" + ;; TODO: consolidate with Cyc_command_line_arguments from runtime.c + " + const char *v = NULL; + Cyc_check_str(data, env_var); + v = getenv(string_str(env_var)); + if (v == NULL) { + return_closcall1(data, k, boolean_f); + } else { + make_string(str, v); + return_closcall1(data, k, &str); + } + ") ))