X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fload-fragment.c;h=4395fb280c45154a839559474c9c17ed2ba931a0;hb=5c78d8e24289e8a88e355345192f6a416c1ebfc3;hp=c9ed6798ae2adc06af3ff3e5c06cba53d8fe40f9;hpb=2528a7a62c4ad9b2f4773b608d208239299da50c;p=elogind.git diff --git a/src/load-fragment.c b/src/load-fragment.c index c9ed6798a..4395fb280 100644 --- a/src/load-fragment.c +++ b/src/load-fragment.c @@ -42,7 +42,20 @@ #include "unit-name.h" #include "bus-errors.h" -#define COMMENTS "#;\n" +#ifndef HAVE_SYSV_COMPAT +static int config_parse_warn_compat( + const char *filename, + unsigned line, + const char *section, + const char *lvalue, + const char *rvalue, + void *data, + void *userdata) { + + log_debug("[%s:%u] Support for option %s= has been disabled at compile time and is ignored", filename, line, lvalue); + return 0; +} +#endif static int config_parse_deps( const char *filename, @@ -299,7 +312,7 @@ static int config_parse_nice( return 0; } -static int config_parse_oom_adjust( +static int config_parse_oom_score_adjust( const char *filename, unsigned line, const char *section, @@ -317,17 +330,17 @@ static int config_parse_oom_adjust( assert(data); if ((r = safe_atoi(rvalue, &oa)) < 0) { - log_error("[%s:%u] Failed to parse OOM adjust value, ignoring: %s", filename, line, rvalue); + log_error("[%s:%u] Failed to parse the OOM score adjust value, ignoring: %s", filename, line, rvalue); return 0; } - if (oa < OOM_DISABLE || oa > OOM_ADJUST_MAX) { - log_error("[%s:%u] OOM adjust value out of range, ignoring: %s", filename, line, rvalue); + if (oa < OOM_SCORE_ADJ_MIN || oa > OOM_SCORE_ADJ_MAX) { + log_error("[%s:%u] OOM score adjust value out of range, ignoring: %s", filename, line, rvalue); return 0; } - c->oom_adjust = oa; - c->oom_adjust_set = true; + c->oom_score_adjust = oa; + c->oom_score_adjust_set = true; return 0; } @@ -961,6 +974,7 @@ static int config_parse_cgroup( return 0; } +#ifdef HAVE_SYSV_COMPAT static int config_parse_sysv_priority( const char *filename, unsigned line, @@ -986,6 +1000,7 @@ static int config_parse_sysv_priority( *priority = (int) i; return 0; } +#endif static DEFINE_CONFIG_PARSE_ENUM(config_parse_kill_mode, kill_mode, KillMode, "Failed to parse kill mode"); @@ -1425,7 +1440,7 @@ static void dump_items(FILE *f, const ConfigItem *items) { { config_parse_path, "PATH" }, { config_parse_strv, "STRING [...]" }, { config_parse_nice, "NICE" }, - { config_parse_oom_adjust, "OOMADJUST" }, + { config_parse_oom_score_adjust, "OOMSCOREADJUST" }, { config_parse_io_class, "IOCLASS" }, { config_parse_io_priority, "IOPRIORITY" }, { config_parse_cpu_sched_policy, "CPUSCHEDPOLICY" }, @@ -1448,7 +1463,11 @@ static void dump_items(FILE *f, const ConfigItem *items) { { config_parse_exec, "PATH [ARGUMENT [...]]" }, { config_parse_service_type, "SERVICETYPE" }, { config_parse_service_restart, "SERVICERESTART" }, +#ifdef HAVE_SYSV_COMPAT { config_parse_sysv_priority, "SYSVPRIORITY" }, +#else + { config_parse_warn_compat, "NOTSUPPORTED" }, +#endif { config_parse_kill_mode, "KILLMODE" }, { config_parse_kill_signal, "SIGNAL" }, { config_parse_listen, "SOCKET [...]" }, @@ -1515,7 +1534,7 @@ static int load_from_path(Unit *u, const char *path) { { "Group", config_parse_string_printf, &(context).group, section }, \ { "SupplementaryGroups", config_parse_strv, &(context).supplementary_groups, section }, \ { "Nice", config_parse_nice, &(context), section }, \ - { "OOMAdjust", config_parse_oom_adjust, &(context), section }, \ + { "OOMScoreAdjust", config_parse_oom_score_adjust,&(context), section }, \ { "IOSchedulingClass", config_parse_io_class, &(context), section }, \ { "IOSchedulingPriority", config_parse_io_priority, &(context), section }, \ { "CPUSchedulingPolicy", config_parse_cpu_sched_policy,&(context), section }, \ @@ -1599,7 +1618,11 @@ static int load_from_path(Unit *u, const char *path) { { "PermissionsStartOnly", config_parse_bool, &u->service.permissions_start_only, "Service" }, { "RootDirectoryStartOnly", config_parse_bool, &u->service.root_directory_start_only, "Service" }, { "RemainAfterExit", config_parse_bool, &u->service.remain_after_exit, "Service" }, +#ifdef HAVE_SYSV_COMPAT { "SysVStartPriority", config_parse_sysv_priority, &u->service.sysv_start_priority, "Service" }, +#else + { "SysVStartPriority", config_parse_warn_compat, NULL, "Service" }, +#endif { "NonBlocking", config_parse_bool, &u->service.exec_context.non_blocking, "Service" }, { "BusName", config_parse_string_printf, &u->service.bus_name, "Service" }, { "NotifyAccess", config_parse_notify_access, &u->service.notify_access, "Service" }, @@ -1823,10 +1846,20 @@ int unit_load_fragment(Unit *u) { } /* And now, try looking for it under the suggested (originally linked) path */ - if (u->meta.load_state == UNIT_STUB && u->meta.fragment_path) + if (u->meta.load_state == UNIT_STUB && u->meta.fragment_path) { + if ((r = load_from_path(u, u->meta.fragment_path)) < 0) return r; + if (u->meta.load_state == UNIT_STUB) { + /* Hmm, this didn't work? Then let's get rid + * of the fragment path stored for us, so that + * we don't point to an invalid location. */ + free(u->meta.fragment_path); + u->meta.fragment_path = NULL; + } + } + /* Look for a template */ if (u->meta.load_state == UNIT_STUB && u->meta.instance) { char *k;