From c5df80a06da02b8d652c5154084370205b3ecb85 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 4 Dec 2018 18:41:27 +0100 Subject: [PATCH 1/2] rc-local-generator: small shortification --- src/rc-local-generator/rc-local-generator.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/rc-local-generator/rc-local-generator.c b/src/rc-local-generator/rc-local-generator.c index 11f18b1173..5b432e6b02 100644 --- a/src/rc-local-generator/rc-local-generator.c +++ b/src/rc-local-generator/rc-local-generator.c @@ -21,7 +21,6 @@ static const char *arg_dest = "/tmp"; static int add_symlink(const char *service, const char *where) { const char *from, *to; - int r; assert(service); assert(where); @@ -31,8 +30,7 @@ static int add_symlink(const char *service, const char *where) { (void) mkdir_parents_label(to, 0755); - r = symlink(from, to); - if (r < 0) { + if (symlink(from, to) < 0) { if (errno == EEXIST) return 0; From 7f6b1a213999d23d34dc6f9411d3874cf058b8ec Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 4 Dec 2018 18:42:31 +0100 Subject: [PATCH 2/2] rc-local-generator: tweak log message generation Let's be more explicit, and not use LOG_WARNING log level when there's nothing really wrong. Fixes: #11044 Follow-up for: #10955 --- src/rc-local-generator/rc-local-generator.c | 25 ++++++++++++++------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/src/rc-local-generator/rc-local-generator.c b/src/rc-local-generator/rc-local-generator.c index 5b432e6b02..cd5510bf12 100644 --- a/src/rc-local-generator/rc-local-generator.c +++ b/src/rc-local-generator/rc-local-generator.c @@ -40,6 +40,21 @@ static int add_symlink(const char *service, const char *where) { return 1; } +static int check_executable(const char *path) { + assert(path); + + if (access(path, X_OK) < 0) { + if (errno == ENOENT) + return log_debug_errno(errno, "%s does not exist, skipping.", path); + if (errno == EACCES) + return log_info_errno(errno, "%s is not marked executable, skipping.", path); + + return log_warning_errno(errno, "Couldn't determine if %s exists and is executable, skipping: %m", path); + } + + return 0; +} + static int run(int argc, char *argv[]) { int r = 0, k = 0; @@ -51,19 +66,13 @@ static int run(int argc, char *argv[]) { if (argc > 1) arg_dest = argv[1]; - if (access(RC_LOCAL_SCRIPT_PATH_START, X_OK) < 0) - log_full_errno(errno == ENOENT ? LOG_DEBUG : LOG_WARNING, errno, - RC_LOCAL_SCRIPT_PATH_START " is not executable: %m"); - else { + if (check_executable(RC_LOCAL_SCRIPT_PATH_START) >= 0) { log_debug("Automatically adding rc-local.service."); r = add_symlink("rc-local.service", "multi-user.target"); } - if (access(RC_LOCAL_SCRIPT_PATH_STOP, X_OK) < 0) - log_full_errno(errno == ENOENT ? LOG_DEBUG : LOG_WARNING, errno, - RC_LOCAL_SCRIPT_PATH_STOP " is not executable: %m"); - else { + if (check_executable(RC_LOCAL_SCRIPT_PATH_STOP) >= 0) { log_debug("Automatically adding halt-local.service."); k = add_symlink("halt-local.service", "final.target");