X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=load-fragment.c;h=0cdaaa204a71d3c81a9f4b7a8e4d66434ffa4ebd;hp=2757506aba0d309f39fc737d2ea0b3fd30ba98da;hb=f50e0a012340fa8dfe6ec7f0cd869f5f3a052d7a;hpb=071830ff32351c19343ff1f0343c13d5c2b69250 diff --git a/load-fragment.c b/load-fragment.c index 2757506ab..0cdaaa204 100644 --- a/load-fragment.c +++ b/load-fragment.c @@ -35,19 +35,15 @@ static int config_parse_deps( FOREACH_WORD(w, &l, rvalue, state) { char *t; int r; - Unit *other; if (!(t = strndup(w, l))) return -ENOMEM; - r = manager_load_unit(u->meta.manager, t, &other); + r = unit_add_dependency_by_name(u, d, t); free(t); if (r < 0) return r; - - if ((r = unit_add_dependency(u, d, other)) < 0) - return r; } return 0; @@ -208,7 +204,8 @@ static int config_parse_nice( void *data, void *userdata) { - int *i = data, priority, r; + ExecContext *c = data; + int priority, r; assert(filename); assert(lvalue); @@ -225,7 +222,9 @@ static int config_parse_nice( return -ERANGE; } - *i = priority; + c->nice = priority; + c->nice_set = false; + return 0; } @@ -238,7 +237,8 @@ static int config_parse_oom_adjust( void *data, void *userdata) { - int *i = data, oa, r; + ExecContext *c = data; + int oa, r; assert(filename); assert(lvalue); @@ -255,7 +255,9 @@ static int config_parse_oom_adjust( return -ERANGE; } - *i = oa; + c->oom_adjust = oa; + c->oom_adjust_set = true; + return 0; } @@ -645,6 +647,8 @@ static int open_follow(char **filename, FILE **_f, Set *names, char **_id) { if (c++ >= FOLLOW_MAX) return -ELOOP; + path_kill_slashes(*filename); + /* Add the file name we are currently looking at to * the names of this unit */ name = file_name_from_path(*filename); @@ -709,8 +713,8 @@ static int load_from_path(Unit *u, const char *path) { { "User", config_parse_string, &(context).user, section }, \ { "Group", config_parse_string, &(context).group, section }, \ { "SupplementaryGroups", config_parse_strv, &(context).supplementary_groups, section }, \ - { "Nice", config_parse_nice, &(context).nice, section }, \ - { "OOMAdjust", config_parse_oom_adjust, &(context).oom_adjust, section }, \ + { "Nice", config_parse_nice, &(context), section }, \ + { "OOMAdjust", config_parse_oom_adjust, &(context), section }, \ { "UMask", config_parse_umask, &(context).umask, section }, \ { "Environment", config_parse_strv, &(context).environment, section }, \ { "Output", config_parse_output, &(context).output, section }, \ @@ -802,12 +806,13 @@ static int load_from_path(Unit *u, const char *path) { if ((r = unit_add_name(u, k)) < 0) goto finish; - if (id == k) - assert_se(u->meta.id = set_get(u->meta.names, k)); + if (id == k) + unit_choose_id(u, id); free(k); } + free(u->meta.load_path); u->meta.load_path = filename; filename = NULL; @@ -824,7 +829,7 @@ finish: } int unit_load_fragment(Unit *u) { - int r = -ENOENT; + int r = 0; ExecContext *c; assert(u); @@ -851,14 +856,16 @@ int unit_load_fragment(Unit *u) { if (r >= 0 && c && (c->output == EXEC_KERNEL || c->output == EXEC_SYSLOG)) { + int k; + /* If syslog or kernel logging is requested, make sure * our own logging daemon is run first. */ - if ((r = unit_add_dependency(u, UNIT_AFTER, u->meta.manager->special_units[SPECIAL_LOGGER_SOCKET])) < 0) - return r; + if ((k = unit_add_dependency_by_name(u, UNIT_AFTER, SPECIAL_LOGGER_SOCKET)) < 0) + return k; - if ((r = unit_add_dependency(u, UNIT_REQUIRES, u->meta.manager->special_units[SPECIAL_LOGGER_SOCKET])) < 0) - return r; + if ((k = unit_add_dependency_by_name(u, UNIT_REQUIRES, SPECIAL_LOGGER_SOCKET)) < 0) + return k; } return r;