aboutsummaryrefslogtreecommitdiff
path: root/cli/mmcli-common.c
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@lanedo.com>2012-03-28 15:15:12 +0200
committerAleksander Morgado <aleksander@lanedo.com>2012-03-29 09:18:04 +0200
commitf1d4e0fb637bd9c3f5ad72c22cb5a716c3e669c8 (patch)
treee2b27146ac7433b201e39aff92d15a88407bcc7b /cli/mmcli-common.c
parent422ed7b63331d1cbf8f58dcc694404bbb8b4a335 (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.c38
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);
+}