mirror of
https://github.com/justinethier/cyclone.git
synced 2025-07-13 07:47:39 +02:00
WIP for get-environment-variables
This commit is contained in:
parent
0c1b36602b
commit
6bd21b422c
3 changed files with 28 additions and 1 deletions
|
@ -47,6 +47,7 @@ extern long global_heap_size;
|
||||||
extern const object Cyc_EOF;
|
extern const object Cyc_EOF;
|
||||||
|
|
||||||
char **get_env_variables();
|
char **get_env_variables();
|
||||||
|
void pack_env_variables(void *data, object k);
|
||||||
void set_env_variables(char **vars);
|
void set_env_variables(char **vars);
|
||||||
|
|
||||||
object cell_get(object cell);
|
object cell_get(object cell);
|
||||||
|
|
22
runtime.c
22
runtime.c
|
@ -158,6 +158,28 @@ char **get_env_variables()
|
||||||
return env_variables;
|
return env_variables;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void pack_env_variables(void *data, object k)
|
||||||
|
{
|
||||||
|
char **env = env_variables;
|
||||||
|
object tail;
|
||||||
|
object head = NULL;
|
||||||
|
tail = head;
|
||||||
|
for (; *env != NULL; env++) {
|
||||||
|
char *e = *env;
|
||||||
|
make_string_noalloc(stmp, e, strlen(e));
|
||||||
|
make_pair(tmp, boolean_t, &stmp);
|
||||||
|
|
||||||
|
make_pair(p, &tmp, NULL);
|
||||||
|
if (head == NULL) {
|
||||||
|
tail = head = &p;
|
||||||
|
} else {
|
||||||
|
cdr(tail) = &p;
|
||||||
|
tail = &p;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return_closcall1(data, k, &head);
|
||||||
|
}
|
||||||
|
|
||||||
void set_env_variables(char **vars)
|
void set_env_variables(char **vars)
|
||||||
{
|
{
|
||||||
env_variables = vars;
|
env_variables = vars;
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
;exit - not needed because already defined as a primitive, at least for now
|
;exit - not needed because already defined as a primitive, at least for now
|
||||||
emergency-exit
|
emergency-exit
|
||||||
get-environment-variable
|
get-environment-variable
|
||||||
; TODO: get-environment-variables
|
get-environment-variables
|
||||||
)
|
)
|
||||||
(begin
|
(begin
|
||||||
(define emergency-exit exit)
|
(define emergency-exit exit)
|
||||||
|
@ -48,4 +48,8 @@
|
||||||
return_closcall1(data, k, &str);
|
return_closcall1(data, k, &str);
|
||||||
}
|
}
|
||||||
")
|
")
|
||||||
|
(define-c get-environment-variables
|
||||||
|
"(void *data, int argc, closure _, object k)"
|
||||||
|
"pack_env_variables(data, k);
|
||||||
|
")
|
||||||
))
|
))
|
||||||
|
|
Loading…
Add table
Reference in a new issue