summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Persch <chpe@src.gnome.org>2018-05-02 19:32:52 +0200
committerChristian Persch <chpe@src.gnome.org>2018-05-02 19:32:52 +0200
commitd62c6ee988371cdf2af84a7898cee686c484aff8 (patch)
tree409a12aa4ed77e9499d1999f5237cdfe9556a2c1
parente8ee9f7868dfdbce6bb9607bcd659bb30580cb5f (diff)
downloadgnome-terminal-d62c6ee988371cdf2af84a7898cee686c484aff8.tar.gz
client: legacy: Fix output commenting
Make sure each line starts with '#' even if the message contains embedded newlines.
-rw-r--r--src/terminal-options.c28
1 files changed, 13 insertions, 15 deletions
diff --git a/src/terminal-options.c b/src/terminal-options.c
index e00ca925..d1e8a4a4 100644
--- a/src/terminal-options.c
+++ b/src/terminal-options.c
@@ -41,27 +41,25 @@
static int verbosity = 1;
-/* @freeme is a workaround for Clang; see gnome-terminal bug 790318. */
-static char * G_GNUC_FORMAT (2)
-format_as_comment (char** freeme, const char *format)
-{
- return *freeme = g_strdup_printf ("# %s", format);
-}
-
void
terminal_fprintf (FILE* fp,
int verbosity_level,
const char* format,
...)
{
- if (verbosity < verbosity_level)
- return;
-
- gs_free char* freeme;
- va_list args;
- va_start(args, format);
- g_vfprintf(fp, format_as_comment(&freeme, format), args);
- va_end(args);
+ if (verbosity < verbosity_level)
+ return;
+
+ va_list args;
+ va_start(args, format);
+ gs_free char *str = g_strdup_vprintf(format, args);
+ va_end(args);
+
+ gs_strfreev char **lines = g_strsplit_set(str, "\n\r", -1);
+ for (gsize i = 0; lines[i]; ++i) {
+ if (lines[i][0] != '\0')
+ g_fprintf(fp, "# %s\n", lines[i]);
+ }
}
#if GLIB_CHECK_VERSION (2, 50, 0)