aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--rcynic/rcynic.c29
1 files changed, 28 insertions, 1 deletions
diff --git a/rcynic/rcynic.c b/rcynic/rcynic.c
index 9ef543d9..09add560 100644
--- a/rcynic/rcynic.c
+++ b/rcynic/rcynic.c
@@ -69,7 +69,7 @@ typedef struct rcynic_ctx {
char *jane, *rsync, *authenticated, *old_authenticated, *unauthenticated;
STACK *rsync_cache;
int indent;
- int rsync_verbose, mkdir_verbose;
+ int rsync_verbose, mkdir_verbose, err_verbose;
} rcynic_ctx_t;
/*
@@ -111,6 +111,28 @@ static void logmsg(const rcynic_ctx_t *rc, const char *fmt, ...)
}
/*
+ * Print OpenSSL library errors.
+ */
+static void log_openssl_errors(const rcynic_ctx_t *rc)
+{
+ const char *data, *file;
+ unsigned long code;
+ char error[256];
+ int flags, line;
+
+ if (!rc->err_verbose)
+ return;
+
+ while ((code = ERR_get_error_line_data(&file, &line, &data, &flags))) {
+ ERR_error_string_n(code, error, sizeof(error));
+ if (data && (flags & ERR_TXT_STRING))
+ logmsg(rc, "OpenSSL error %s:%d: %s", file, line, error, data);
+ else
+ logmsg(rc, "OpenSSL error %s:%d", file, line, error);
+ }
+}
+
+/*
* Make a directory if it doesn't already exist.
*/
static int mkdir_maybe(const rcynic_ctx_t *rc, const char *name)
@@ -1067,6 +1089,9 @@ int main(int argc, char *argv[])
else if (!name_cmp(val->name, "mkdir-verbose"))
rc.mkdir_verbose = atoi(val->value);
+ else if (!name_cmp(val->name, "err-verbose"))
+ rc.err_verbose = atoi(val->value);
+
else if (!name_cmp(val->name, "rsync-program"))
rc.rsync = strdup(val->value);
}
@@ -1146,6 +1171,8 @@ int main(int argc, char *argv[])
ret = 0;
done:
+ log_openssl_errors(&rc);
+
/*
* Do NOT free cfg_section, NCONF_free() takes care of that
*/