1#include "include/pw.h"
2
3extern char** environ;
4
5bool pw_read_environment(PwValuePtr result)
6{
7 if (!pw_create_map(result)) {
8 return false;
9 }
10 for (char** env = environ;;) {{
11 char8_t* var = (char8_t*) *env++;
12 if (var == nullptr) {
13 return true;
14 }
15 char8_t* separator = (char8_t*) strchr((char*) var, '=');
16 if (!separator) {
17 continue;
18 }
19 PwValue key = PW_STRING("");
20 if (!pw_string_append(&key, var, separator)) {
21 return false;
22 }
23 PwValue value = PW_NULL;
24 if (!pw_create_string(separator + 1, &value)) {
25 return false;
26 }
27 if (!pw_map_update(result, &key, &value)) {
28 return false;
29 }
30 }}
31}