aboutsummaryrefslogtreecommitdiffstats
path: root/src/log.c
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2008-12-29 17:28:34 +0100
committerMax Kellermann <max@duempel.org>2008-12-29 17:28:34 +0100
commit3fa5632704381ea3e77f481019b3c12639d84dff (patch)
tree97a4ed0dab63746fc5f6f9c6577917f1921e89e2 /src/log.c
parent95b3430f5277cf36bc9acc989e301ae302747a98 (diff)
downloadmpd-3fa5632704381ea3e77f481019b3c12639d84dff.tar.gz
mpd-3fa5632704381ea3e77f481019b3c12639d84dff.tar.xz
mpd-3fa5632704381ea3e77f481019b3c12639d84dff.zip
log: automatically append newline
If a log message does not include a newline character, append it.
Diffstat (limited to '')
-rw-r--r--src/log.c23
1 files changed, 19 insertions, 4 deletions
diff --git a/src/log.c b/src/log.c
index ed917fcb4..394ca46e3 100644
--- a/src/log.c
+++ b/src/log.c
@@ -68,6 +68,21 @@ static const char *log_date(void)
return buf;
}
+/**
+ * Determines the length of the string excluding trailing whitespace
+ * characters.
+ */
+static int
+chomp_length(const char *p)
+{
+ size_t length = strlen(p);
+
+ while (length > 0 && g_ascii_isspace(p[length - 1]))
+ --length;
+
+ return (int)length;
+}
+
static void
file_log_func(const gchar *log_domain,
G_GNUC_UNUSED GLogLevelFlags log_level,
@@ -90,10 +105,10 @@ file_log_func(const gchar *log_domain,
if (log_domain == NULL)
log_domain = "";
- fprintf(stderr, "%s%s%s%s",
+ fprintf(stderr, "%s%s%s%.*s\n",
stdout_mode ? "" : log_date(),
log_domain, *log_domain == 0 ? "" : ": ",
- message);
+ chomp_length(message), message);
g_free(converted);
}
@@ -170,9 +185,9 @@ syslog_log_func(const gchar *log_domain,
if (log_domain == NULL)
log_domain = "";
- syslog(glib_to_syslog_level(log_level), "%s%s%s",
+ syslog(glib_to_syslog_level(log_level), "%s%s%.*s",
log_domain, *log_domain == 0 ? "" : ": ",
- message);
+ chomp_length(message), message);
}
static void