From d5891fdacf761130c9babdb5e50367504d29970c Mon Sep 17 00:00:00 2001 From: =?utf8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sun, 16 Sep 2012 12:35:46 +0200 Subject: [PATCH 1/1] install: treat non-existent directory as empty When looking for symlinks, it doesn't make sense to error-out if the directory is missing. The user might delete an empty directory. This check caused test-unit-file to fail when run before installation. --- src/shared/install.c | 5 ++++- src/test/test-unit-file.c | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/shared/install.c b/src/shared/install.c index 1a69337f5..0d38bccd7 100644 --- a/src/shared/install.c +++ b/src/shared/install.c @@ -524,8 +524,11 @@ static int find_symlinks( assert(same_name_link); fd = open(config_path, O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC|O_NOFOLLOW); - if (fd < 0) + if (fd < 0) { + if (errno == ENOENT) + return 0; return -errno; + } /* This takes possession of fd and closes it */ return find_symlinks_fd(name, fd, config_path, config_path, same_name_link); diff --git a/src/test/test-unit-file.c b/src/test/test-unit-file.c index b390c44b0..95e2b6801 100644 --- a/src/test/test-unit-file.c +++ b/src/test/test-unit-file.c @@ -40,7 +40,7 @@ int main(int argc, char *argv[]) { assert(h); r = unit_file_get_list(UNIT_FILE_SYSTEM, NULL, h); - log_info("%s", strerror(-r)); + log_info("unit_file_get_list: %s", strerror(-r)); assert(r >= 0); HASHMAP_FOREACH(p, h, i) -- 2.30.2