diff options
author | Lennart Poettering <lennart@poettering.net> | 2012-09-11 01:11:32 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2012-09-11 01:14:25 +0200 |
commit | b5b46d599524341ddd7407e5dff1021af8ff5089 (patch) | |
tree | 05e2bb1a8800ab7800f1c7c3455d7c07cb7a1af5 /src/shared/install.c | |
parent | 802840582c71e9679637a4631866ce2d179f03c5 (diff) |
when determining unit file list, include invalid unit names in an "invalid" state
Diffstat (limited to 'src/shared/install.c')
-rw-r--r-- | src/shared/install.c | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/src/shared/install.c b/src/shared/install.c index ef1c3f584d..1a69337f5a 100644 --- a/src/shared/install.c +++ b/src/shared/install.c @@ -2003,25 +2003,24 @@ int unit_file_get_list( free(f->path); free(f); goto finish; - } else if (r > 0) + } else if (r > 0) { + f->state = UNIT_FILE_ENABLED; goto found; + } r = unit_file_can_install(&paths, root_dir, f->path, true); - if (r < 0) { + if (r == -EINVAL || /* Invalid setting? */ + r == -EBADMSG || /* Invalid format? */ + r == -ENOENT /* Included file not found? */) + f->state = UNIT_FILE_INVALID; + else if (r < 0) { free(f->path); free(f); goto finish; - } else if (r > 0) { + } else if (r > 0) f->state = UNIT_FILE_DISABLED; - goto found; - } else { + else f->state = UNIT_FILE_STATIC; - goto found; - } - - free(f->path); - free(f); - continue; found: r = hashmap_put(h, path_get_file_name(f->path), f); @@ -2051,7 +2050,8 @@ static const char* const unit_file_state_table[_UNIT_FILE_STATE_MAX] = { [UNIT_FILE_MASKED] = "masked", [UNIT_FILE_MASKED_RUNTIME] = "masked-runtime", [UNIT_FILE_STATIC] = "static", - [UNIT_FILE_DISABLED] = "disabled" + [UNIT_FILE_DISABLED] = "disabled", + [UNIT_FILE_INVALID] = "invalid", }; DEFINE_STRING_TABLE_LOOKUP(unit_file_state, UnitFileState); |