return strdup(s);
}
-char *normalize_env_assignment(const char *s) {
- _cleanup_free_ char *value = NULL;
- const char *eq;
- char *p, *name;
-
- eq = strchr(s, '=');
- if (!eq) {
- char *r, *t;
-
- r = strdup(s);
- if (!r)
- return NULL;
-
- t = strstrip(r);
- if (t != r)
- memmove(r, t, strlen(t) + 1);
-
- return r;
- }
-
- name = strndupa(s, eq - s);
- p = strdupa(eq + 1);
-
- value = unquote(strstrip(p), QUOTES);
- if (!value)
- return NULL;
-
- return strjoin(strstrip(name), "=", value, NULL);
-}
-
int wait_for_terminate(pid_t pid, siginfo_t *status) {
siginfo_t dummy;
int touch_file(const char *path, bool parents, usec_t stamp, uid_t uid, gid_t gid, mode_t mode);
int touch(const char *path);
-char *normalize_env_assignment(const char *s);
-
int wait_for_terminate(pid_t pid, siginfo_t *status);
int wait_for_terminate_and_warn(const char *name, pid_t pid, bool check_exit_code);
assert_se(strv_length(r) == 9);
}
-static void test_one_normalize(const char *input, const char *output) {
- _cleanup_free_ char *t;
-
- t = normalize_env_assignment(input);
- assert_se(t);
- assert_se(streq(t, output));
-}
-
-static void test_normalize_env_assignment(void) {
- test_one_normalize("foo=bar", "foo=bar");
- test_one_normalize("=bar", "=bar");
- test_one_normalize("foo=", "foo=");
- test_one_normalize("=", "=");
- test_one_normalize("", "");
- test_one_normalize("a=\"waldo\"", "a=waldo");
- test_one_normalize("a=\"waldo", "a=\"waldo");
- test_one_normalize("a=waldo\"", "a=waldo\"");
- test_one_normalize("a=\'", "a='");
- test_one_normalize("a=\'\'", "a=");
- test_one_normalize(" xyz ", "xyz");
- test_one_normalize(" xyz = bar ", "xyz=bar");
- test_one_normalize(" xyz = 'bar ' ", "xyz=bar ");
- test_one_normalize(" ' xyz' = 'bar ' ", "' xyz'=bar ");
-}
-
static void test_env_clean(void) {
_cleanup_strv_free_ char **e;
test_strv_env_set();
test_strv_env_merge();
test_replace_env_arg();
- test_normalize_env_assignment();
test_env_clean();
test_env_name_is_valid();