Added fun_version and env_all as opcodes and some fixes in httpserver. (0.37.30)
This commit is contained in:
parent
17c2b44c1a
commit
a27ff12b08
12 changed files with 126 additions and 6 deletions
35
src/vm/os/env_all.c
Normal file
35
src/vm/os/env_all.c
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
/**
|
||||
* This file is part of the Fun programming language.
|
||||
* https://fun-lang.xyz/
|
||||
*
|
||||
* Copyright 2025 Johannes Findeisen <you@hanez.org>
|
||||
* Licensed under the terms of the Apache-2.0 license.
|
||||
* https://opensource.org/license/apache-2-0
|
||||
*
|
||||
* Added: 2025-12-28
|
||||
*/
|
||||
|
||||
// Get all environment variables of the operation system and push them as a map.
|
||||
|
||||
case OP_ENV_ALL: {
|
||||
extern char **environ;
|
||||
Value m = make_map_empty();
|
||||
if (environ) {
|
||||
for (char **env = environ; *env; ++env) {
|
||||
char *entry = *env;
|
||||
char *equals = strchr(entry, '=');
|
||||
if (equals) {
|
||||
size_t key_len = equals - entry;
|
||||
char *key = malloc(key_len + 1);
|
||||
if (key) {
|
||||
memcpy(key, entry, key_len);
|
||||
key[key_len] = '\0';
|
||||
map_set(&m, key, make_string(equals + 1));
|
||||
free(key);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
push_value(vm, m);
|
||||
break;
|
||||
}
|
||||
20
src/vm/os/fun_version.c
Normal file
20
src/vm/os/fun_version.c
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
/**
|
||||
* This file is part of the Fun programming language.
|
||||
* https://fun-lang.xyz/
|
||||
*
|
||||
* Copyright 2025 Johannes Findeisen <you@hanez.org>
|
||||
* Licensed under the terms of the Apache-2.0 license.
|
||||
* https://opensource.org/license/apache-2-0
|
||||
*
|
||||
* Added: 2025-12-28
|
||||
*/
|
||||
|
||||
// Pushes the current Fun version string onto the stack.
|
||||
|
||||
case OP_FUN_VERSION: {
|
||||
#ifndef FUN_VERSION
|
||||
#define FUN_VERSION "0.0.0-dev"
|
||||
#endif
|
||||
push_value(vm, make_string(FUN_VERSION));
|
||||
break;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue