feat(vars): get_var_or_env

This commit is contained in:
william.valenduc 2026-01-17 23:58:15 +00:00
parent cf5da6f231
commit 0c9c5dc1f8
2 changed files with 15 additions and 1 deletions

View file

@ -2,7 +2,7 @@
#include "vars.h"
#include <stdbool.h>
#include <stddef.h>
#include <stdlib.h>
#include <string.h>
#include "../hash_map/hash_map.h"
@ -19,6 +19,14 @@ char *get_var(const struct hash_map *vars, const char *key)
return (char *)hash_map_get(vars, key);
}
char *get_var_or_env(const struct hash_map *vars, const char *key)
{
char *value = (char *)hash_map_get(vars, key);
if (value == NULL)
value = getenv(key);
return value;
}
bool set_var(struct hash_map *vars, const char *key, const char *value)
{
if (key == NULL || value == NULL)

View file

@ -15,6 +15,12 @@ struct hash_map *vars_init(void);
*/
char *get_var(const struct hash_map *vars, const char *key);
/**
* Get the value of a variable, from the environment if not found in vars,
* NULL if not found in either.
*/
char *get_var_or_env(const struct hash_map *vars, const char *key);
/**
* Set the value of a variable. Key and value ownership are transferred to
* the hash_map and need to be on the heap. Returns true on success, false on