diff options
author | Aleksander Morgado <aleksander@lanedo.com> | 2012-03-28 15:15:12 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@lanedo.com> | 2012-03-29 09:18:04 +0200 |
commit | f1d4e0fb637bd9c3f5ad72c22cb5a716c3e669c8 (patch) | |
tree | e2b27146ac7433b201e39aff92d15a88407bcc7b /cli/mmcli-common.c | |
parent | 422ed7b63331d1cbf8f58dcc694404bbb8b4a335 (diff) |
mmcli: prefix all NMEA traces in order to get a pretty print
Diffstat (limited to 'cli/mmcli-common.c')
-rw-r--r-- | cli/mmcli-common.c | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/cli/mmcli-common.c b/cli/mmcli-common.c index ff02b572..600939ae 100644 --- a/cli/mmcli-common.c +++ b/cli/mmcli-common.c @@ -19,6 +19,7 @@ */ #include <stdlib.h> +#include <string.h> #include <libmm-glib.h> @@ -1110,3 +1111,40 @@ mmcli_get_common_sms_string (void) { return sms_str; } + +gchar * +mmcli_prefix_newlines (const gchar *prefix, + const gchar *str) +{ + GString *prefixed_string = NULL; + const gchar *line_start = str; + const gchar *line_end; + + while ((line_end = strchr (line_start, '\n'))) { + gssize line_length; + + line_length = line_end - line_start; + if (line_start[line_length - 1] == '\r') + line_length--; + + if (line_length > 0) { + if (prefixed_string) { + /* If not the first line, add the prefix */ + g_string_append_printf (prefixed_string, + "\n%s", prefix); + } else { + prefixed_string = g_string_new (""); + } + + g_string_append_len (prefixed_string, + line_start, + line_length); + } + + line_start = line_end + 1; + } + + return (prefixed_string ? + g_string_free (prefixed_string, FALSE) : + NULL); +} |