systemctl: fail in the case that no unit files were found

Previously systemctl died with message

-bash-4.2# systemctl --root /rawhi list-unit-files
(src/systemctl/systemctl.c:868) Out of memory.

in the case that no unit files were found in the --root
or the directory did not exist.

So lets return ENOENT in the case that --root does not exist
and empty list in the case that there are no unit files.
This commit is contained in:
Lukas Nykryn
2014-08-19 20:53:29 +02:00
parent 5d0ae62c66
commit fdbdf6ec29
2 changed files with 10 additions and 0 deletions

View File

@@ -2044,6 +2044,12 @@ int unit_file_get_list(
if (root_dir && scope != UNIT_FILE_SYSTEM)
return -EINVAL;
if (root_dir) {
r = access(root_dir, F_OK);
if (r < 0)
return -errno;
}
r = lookup_paths_init_from_scope(&paths, scope, root_dir);
if (r < 0)
return r;

View File

@@ -1350,6 +1350,10 @@ static int list_unit_files(sd_bus *bus, char **args) {
}
n_units = hashmap_size(h);
if (n_units == 0)
return 0;
units = new(UnitFileList, n_units);
if (!units) {
unit_file_list_free(h);