1
0
Fork 0
forked from fun/fun

Added fun_version and env_all as opcodes and some fixes in httpserver. (0.37.30)

This commit is contained in:
Johannes Findeisen 2025-12-28 23:36:37 +01:00
commit a27ff12b08
12 changed files with 126 additions and 6 deletions

35
src/vm/os/env_all.c Normal file
View 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
View 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;
}