aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@gmail.com>2023-10-31 12:09:05 -0400
committerJoseph Hunkeler <jhunkeler@gmail.com>2023-10-31 12:09:05 -0400
commit864a9c811567dc5b4a8f2a8701f814caafe8965e (patch)
tree710e2b1a5e1646f0ffa21d840986b8d9562f78e9
parentaa023f04838b571afc9d1891450373a840ad1dfe (diff)
downloadstasis-864a9c811567dc5b4a8f2a8701f814caafe8965e.tar.gz
Consume up to one '=', instead of splitting on all occurrences
-rw-r--r--src/environment.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/src/environment.c b/src/environment.c
index a979886..3718c47 100644
--- a/src/environment.c
+++ b/src/environment.c
@@ -274,7 +274,7 @@ char *runtime_get(RuntimeEnv *env, const char *key) {
* @param input String to parse
* @return success=expanded string, failure=`NULL`
*/
-char *runtime_expand_var(RuntimeEnv *env, const char *input) {
+char *runtime_expand_var(RuntimeEnv *env, char *input) {
const char delim = '$';
const char *delim_literal = "$$";
char *expanded = NULL;
@@ -412,8 +412,7 @@ void runtime_set(RuntimeEnv *env, const char *_key, const char *_value) {
if (key_offset < 0) {
strlist_append(env, now);
- }
- else {
+ } else {
strlist_set(env, key_offset, now);
}
free(now);
@@ -427,7 +426,7 @@ void runtime_set(RuntimeEnv *env, const char *_key, const char *_value) {
*/
void runtime_apply(RuntimeEnv *env) {
for (size_t i = 0; i < strlist_count(env); i++) {
- char **pair = split(strlist_item(env, i), "=", 0);
+ char **pair = split(strlist_item(env, i), "=", 1);
setenv(pair[0], pair[1], 1);
split_free(pair);
}