diff --git a/network/ulogd2/0001-replace-syslog_dummy.patch b/network/ulogd2/0001-replace-syslog_dummy.patch new file mode 100644 index 000000000..98c46c03f --- /dev/null +++ b/network/ulogd2/0001-replace-syslog_dummy.patch @@ -0,0 +1,76 @@ +# --- SDE-COPYRIGHT-NOTE-BEGIN --- +# This copyright note is auto-generated by ./scripts/Create-CopyPatch. +# +# Filename: package/.../ulogd2/0001-replace-syslog_dummy.patch +# Copyright (C) 2013 The OpenSDE Project +# +# More information can be found in the files COPYING and README. +# +# This patch file is dual-licensed. It is available under the license the +# patched project is licensed under, as long as it is an OpenSource license +# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms +# of the GNU General Public License as published by the Free Software +# Foundation; either version 2 of the License, or (at your option) any later +# version. +# --- SDE-COPYRIGHT-NOTE-END --- + +Do not use the FILE struct as marker to check if the user requested to use +syslog. + +In musl the FILE struct is opaque, thus its storage size is not known to +the application. +This means that when using musl it has to be use as a pointer like it was +intended to be used. + +--- ./src/ulogd.c.orig 2013-08-29 11:45:45.175597529 +0200 ++++ ./src/ulogd.c 2013-08-29 11:53:51.722856392 +0200 +@@ -78,7 +78,7 @@ + static FILE *logfile = NULL; /* logfile pointer */ + static char *ulogd_logfile = NULL; + static const char *ulogd_configfile = ULOGD_CONFIGFILE; +-static FILE syslog_dummy; ++static int use_syslog; + + static int info_mode = 0; + +@@ -420,7 +420,7 @@ + if (level < loglevel_ce.u.value) + return; + +- if (logfile == &syslog_dummy) { ++ if (use_syslog) { + /* FIXME: this omits the 'file' string */ + va_start(ap, format); + vsyslog(ulogd2syslog_level(level), format, ap); +@@ -937,11 +937,12 @@ + ulogd_logfile = strdup(name); + } + ++ use_syslog = 0; + if (!strcmp(name, "stdout")) { + logfile = stdout; + } else if (!strcmp(name, "syslog")) { + openlog("ulogd", LOG_PID, LOG_DAEMON); +- logfile = &syslog_dummy; ++ use_syslog = 1; + } else { + logfile = fopen(ulogd_logfile, "a"); + if (!logfile) { +@@ -1070,7 +1071,7 @@ + unload_plugins(); + #endif + +- if (logfile != NULL && logfile != stdout && logfile != &syslog_dummy) { ++ if (logfile != NULL && logfile != stdout) { + fclose(logfile); + logfile = NULL; + } +@@ -1090,7 +1091,7 @@ + switch (signal) { + case SIGHUP: + /* reopen logfile */ +- if (logfile != stdout && logfile != &syslog_dummy) { ++ if (logfile != stdout && !use_syslog) { + fclose(logfile); + logfile = fopen(ulogd_logfile, "a"); + if (!logfile) {