diff options
author | Max Kellermann <max@duempel.org> | 2008-12-29 17:28:34 +0100 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2008-12-29 17:28:34 +0100 |
commit | 3fa5632704381ea3e77f481019b3c12639d84dff (patch) | |
tree | 97a4ed0dab63746fc5f6f9c6577917f1921e89e2 | |
parent | 95b3430f5277cf36bc9acc989e301ae302747a98 (diff) | |
download | mpd-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.
-rw-r--r-- | src/log.c | 23 |
1 files changed, 19 insertions, 4 deletions
@@ -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 |