X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fcore%2Fload-fragment.c;h=d3859683a1b62841fa5a45b1df4e3055679d6ab0;hb=652212b0c2b60b9ef9b2e24eae82401f880fa21a;hp=2ee16bdef9e005782df4b2b729e79eef33d3afa3;hpb=59fccdc587bc179c1638916ee16a24099f94f81f;p=elogind.git diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c index 2ee16bdef..d3859683a 100644 --- a/src/core/load-fragment.c +++ b/src/core/load-fragment.c @@ -76,10 +76,23 @@ int config_parse_warn_compat( const char *rvalue, void *data, void *userdata) { + Disabled reason = ltype; + + switch(reason) { + case DISABLED_CONFIGURATION: + log_syntax(unit, LOG_DEBUG, filename, line, EINVAL, + "Support for option %s= has been disabled at compile time and it is ignored", lvalue); + break; + case DISABLED_LEGACY: + log_syntax(unit, LOG_INFO, filename, line, EINVAL, + "Support for option %s= has been removed and it is ignored", lvalue); + break; + case DISABLED_EXPERIMENTAL: + log_syntax(unit, LOG_INFO, filename, line, EINVAL, + "Support for option %s= has not yet been enabled and it is ignored", lvalue); + break; + }; - log_syntax(unit, LOG_DEBUG, filename, line, EINVAL, - "Support for option %s= has been disabled at compile time and is ignored", - lvalue); return 0; } #endif @@ -1313,6 +1326,56 @@ int config_parse_exec_apparmor_profile( return 0; } +int config_parse_exec_smack_process_label( + const char *unit, + const char *filename, + unsigned line, + const char *section, + unsigned section_line, + const char *lvalue, + int ltype, + const char *rvalue, + void *data, + void *userdata) { + + ExecContext *c = data; + Unit *u = userdata; + bool ignore; + char *k; + int r; + + assert(filename); + assert(lvalue); + assert(rvalue); + assert(data); + + if (isempty(rvalue)) { + free(c->smack_process_label); + c->smack_process_label = NULL; + c->smack_process_label_ignore = false; + return 0; + } + + if (rvalue[0] == '-') { + ignore = true; + rvalue++; + } else + ignore = false; + + r = unit_name_printf(u, rvalue, &k); + if (r < 0) { + log_syntax(unit, LOG_ERR, filename, line, -r, + "Failed to resolve specifiers, ignoring: %s", strerror(-r)); + return 0; + } + + free(c->smack_process_label); + c->smack_process_label = k; + c->smack_process_label_ignore = ignore; + + return 0; +} + int config_parse_timer(const char *unit, const char *filename, unsigned line, @@ -2437,7 +2500,6 @@ int config_parse_address_families( void *userdata) { ExecContext *c = data; - Unit *u = userdata; bool invert = false; const char *word, *state; size_t l; @@ -2446,7 +2508,6 @@ int config_parse_address_families( assert(filename); assert(lvalue); assert(rvalue); - assert(u); if (isempty(rvalue)) { /* Empty assignment resets the list */