core: introduce a new load state "bad-setting"
Since bb28e68477 parsing failures of
certain unit file settings will result in load failures of units. This
introduces a new load state "bad-setting" that is entered in precisely
this case.
With this addition error messages on bad settings should be a lot more
explicit, as we don't have to show some generic "errno" error in that
case, but can explicitly say that a bad setting is at fault.
Internally this unit load state is entered as soon as any configuration
loader call returns ENOEXEC. Hence: config parser calls should return
ENOEXEC now for such essential unit file settings. Turns out, they
generally already do.
Fixes: #9107
This commit is contained in:
@@ -93,6 +93,7 @@ static const char* const unit_load_state_table[_UNIT_LOAD_STATE_MAX] = {
|
||||
[UNIT_STUB] = "stub",
|
||||
[UNIT_LOADED] = "loaded",
|
||||
[UNIT_NOT_FOUND] = "not-found",
|
||||
[UNIT_BAD_SETTING] = "bad-setting",
|
||||
[UNIT_ERROR] = "error",
|
||||
[UNIT_MERGED] = "merged",
|
||||
[UNIT_MASKED] = "masked"
|
||||
|
||||
@@ -30,8 +30,9 @@ typedef enum UnitType {
|
||||
typedef enum UnitLoadState {
|
||||
UNIT_STUB = 0,
|
||||
UNIT_LOADED,
|
||||
UNIT_NOT_FOUND,
|
||||
UNIT_ERROR,
|
||||
UNIT_NOT_FOUND, /* error condition #1: unit file not found */
|
||||
UNIT_BAD_SETTING, /* error condition #2: we couldn't parse some essential unit file setting */
|
||||
UNIT_ERROR, /* error condition #3: other "system" error, catchall for the rest */
|
||||
UNIT_MERGED,
|
||||
UNIT_MASKED,
|
||||
_UNIT_LOAD_STATE_MAX,
|
||||
|
||||
Reference in New Issue
Block a user