mirror of
https://github.com/labwc/labwc.git
synced 2025-11-03 09:01:51 -05:00
session: resolve variables in environment file
When parsing <key>=<value> pairs to set enrivonment variables,
resolve variables in <value>.
For example, resolve $bar in
foo=$bar
Fix issue #70
This commit is contained in:
parent
d4e1791c88
commit
71c8aa1361
1 changed files with 12 additions and 5 deletions
|
|
@ -7,6 +7,7 @@
|
|||
#include <string.h>
|
||||
#include <sys/stat.h>
|
||||
#include <wlr/util/log.h>
|
||||
#include "common/buf.h"
|
||||
#include "common/dir.h"
|
||||
#include "common/spawn.h"
|
||||
#include "common/string-helpers.h"
|
||||
|
|
@ -30,18 +31,24 @@ process_line(char *line)
|
|||
if (string_empty(line) || line[0] == '#') {
|
||||
return;
|
||||
}
|
||||
char *key = NULL, *value = NULL;
|
||||
char *key = NULL;
|
||||
char *p = strchr(line, '=');
|
||||
if (!p) {
|
||||
return;
|
||||
}
|
||||
*p = '\0';
|
||||
key = string_strip(line);
|
||||
value = string_strip(++p);
|
||||
if (string_empty(key) || string_empty(value)) {
|
||||
return;
|
||||
|
||||
struct buf value;
|
||||
buf_init(&value);
|
||||
buf_add(&value, string_strip(++p));
|
||||
buf_expand_shell_variables(&value);
|
||||
if (string_empty(key) || !value.len) {
|
||||
goto error;
|
||||
}
|
||||
setenv(key, value, 1);
|
||||
setenv(key, value.buf, 1);
|
||||
error:
|
||||
free(value.buf);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue