| From 353faffe13852c4204f158b5d4301405bd222c44 Mon Sep 17 00:00:00 2001 |
| From: Michal Vasko <mvasko@cesnet.cz> |
| Date: Fri, 20 Dec 2019 13:40:35 +0100 |
| Subject: [PATCH 9/9] sysrpeo-plugind BUGFIX create plugins dir recursively |
| |
| Refs #1719 |
| |
| [Patch from https://github.com/sysrepo/sysrepo/commit/353faffe13852c4204f158b5d4301405bd222c44] |
| |
| Signed-off-by: Heiko Thiery <heiko.thiery@kontron.com> |
| --- |
| src/executables/sysrepo-plugind.c | 30 +++++++++++++++++++++++++++++- |
| 1 file changed, 29 insertions(+), 1 deletion(-) |
| |
| diff --git a/src/executables/sysrepo-plugind.c b/src/executables/sysrepo-plugind.c |
| index ddb41c26..ca22140e 100644 |
| --- a/src/executables/sysrepo-plugind.c |
| +++ b/src/executables/sysrepo-plugind.c |
| @@ -206,6 +206,34 @@ daemon_init(int debug, sr_log_level_t log_level) |
| sr_log_syslog("sysrepo-plugind", log_level); |
| } |
| |
| +/* from src/common.c */ |
| +int |
| +sr_mkpath(const char *path, mode_t mode) |
| +{ |
| + char *p, *dup; |
| + |
| + dup = strdup(path); |
| + for (p = strchr(dup + 1, '/'); p; p = strchr(p + 1, '/')) { |
| + *p = '\0'; |
| + if (mkdir(dup, mode) == -1) { |
| + if (errno != EEXIST) { |
| + *p = '/'; |
| + return -1; |
| + } |
| + } |
| + *p = '/'; |
| + } |
| + free(dup); |
| + |
| + if (mkdir(path, mode) == -1) { |
| + if (errno != EEXIST) { |
| + return -1; |
| + } |
| + } |
| + |
| + return 0; |
| +} |
| + |
| static int |
| load_plugins(struct srpd_plugin_s **plugins, int *plugin_count) |
| { |
| @@ -231,7 +259,7 @@ load_plugins(struct srpd_plugin_s **plugins, int *plugin_count) |
| error_print(0, "Checking plugins dir existence failed (%s).", strerror(errno)); |
| return -1; |
| } |
| - if (mkdir(plugins_dir, 00777) == -1) { |
| + if (sr_mkpath(plugins_dir, 00777) == -1) { |
| error_print(0, "Creating plugins dir \"%s\" failed (%s).", plugins_dir, strerror(errno)); |
| return -1; |
| } |
| -- |
| 2.20.1 |
| |