blob: 9b9734f22c0bef99d8a5545e6d37a377975185eb [file] [log] [blame]
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