logging: add new log_targets_reopen() function

This function will re-open all existing log files in the application,
praticularly useful for SIGHUP handlers in case of logrotate
diff --git a/include/osmocom/core/logging.h b/include/osmocom/core/logging.h
index fa3365a..1d57e22 100644
--- a/include/osmocom/core/logging.h
+++ b/include/osmocom/core/logging.h
@@ -203,6 +203,7 @@
 struct log_target *log_target_create_syslog(const char *ident, int option,
 					    int facility);
 int log_target_file_reopen(struct log_target *tgt);
+int log_targets_reopen(void);
 
 void log_add_target(struct log_target *target);
 void log_del_target(struct log_target *target);
diff --git a/src/logging.c b/src/logging.c
index eab8bdf..ffe6ecf 100644
--- a/src/logging.c
+++ b/src/logging.c
@@ -597,6 +597,26 @@
 	return 0;
 }
 
+/*! \brief close and re-open a log file (for log file rotation) */
+int log_targets_reopen(void)
+{
+	struct log_target *tar;
+	int rc = 0;
+
+	llist_for_each_entry(tar, &osmo_log_target_list, entry) {
+		switch (tar->type) {
+		case LOG_TGT_TYPE_FILE:
+			if (log_target_file_reopen(tar) < 0)
+				rc = -1;
+			break;
+		default:
+			break;
+		}
+	}
+
+	return rc;
+}
+
 /*! \brief Generates the logging command string for VTY
  *  \param[in] unused_info Deprecated parameter, no longer used!
  */