diff options
author | Lennart Poettering <lennart@poettering.net> | 2018-12-04 18:42:31 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2018-12-05 12:52:47 +0100 |
commit | 7f6b1a213999d23d34dc6f9411d3874cf058b8ec (patch) | |
tree | 65597a6b52f343362413e91a39299e126d110170 /src/rc-local-generator/rc-local-generator.c | |
parent | c5df80a06da02b8d652c5154084370205b3ecb85 (diff) | |
download | systemd-7f6b1a213999d23d34dc6f9411d3874cf058b8ec.tar.gz |
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
Diffstat (limited to 'src/rc-local-generator/rc-local-generator.c')
-rw-r--r-- | src/rc-local-generator/rc-local-generator.c | 25 |
1 files 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"); |