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(&value, separator + 1)) {
25            return false;
26        }
27        if (!pw_map_update(result, &key, &value)) {
28            return false;
29        }
30    }
31}