[gnome-terminal] client: legacy: Fix output commenting



commit d62c6ee988371cdf2af84a7898cee686c484aff8
Author: Christian Persch <chpe src gnome org>
Date:   Wed May 2 19:32:52 2018 +0200

    client: legacy: Fix output commenting
    
    Make sure each line starts with '#' even if the message
    contains embedded newlines.

 src/terminal-options.c |   26 ++++++++++++--------------
 1 files changed, 12 insertions(+), 14 deletions(-)
---
diff --git a/src/terminal-options.c b/src/terminal-options.c
index e00ca92..d1e8a4a 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)


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]