summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Martin Szulecki2010-01-22 13:45:53 +0100
committerGravatar Martin Szulecki2010-01-22 13:45:53 +0100
commitab56c34e17f2f44fd51ff3e890c002215fbe7690 (patch)
tree75a8ba61bec72e351d466739ef5dfa751a1b46fd
parent808d461fea2c1b028e8fbb232eb09a94555856e8 (diff)
downloadlibimobiledevice-ab56c34e17f2f44fd51ff3e890c002215fbe7690.tar.gz
libimobiledevice-ab56c34e17f2f44fd51ff3e890c002215fbe7690.tar.bz2
Turn debug_plist into macro to show caller func/file/line and improve output
-rw-r--r--src/debug.c16
-rw-r--r--src/debug.h9
2 files changed, 20 insertions, 5 deletions
diff --git a/src/debug.c b/src/debug.c
index 2cdeebf..b194b0d 100644
--- a/src/debug.c
+++ b/src/debug.c
@@ -3,6 +3,7 @@
* contains utilitary functions for debugging
*
* Copyright (c) 2008 Jonathan Beck All Rights Reserved.
+ * Copyright (c) 2010 Martin S. All Rights Reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -56,10 +57,12 @@ static void debug_print_line(const char *func, const char *file, int line, const
(void)asprintf(&header, "%s %s:%d %s()", str_time, file, line, func);
free (str_time);
- /* always in light green */
+ /* trim ending newlines */
+
+ /* print header */
printf ("%s: ", header);
- /* different colors according to the severity */
+ /* print actual debug content */
printf ("%s\n", buffer);
/* flush this output, as we need to debug */
@@ -135,7 +138,7 @@ inline void debug_buffer_to_file(const char *file, const char *data, const int l
#endif
}
-inline void debug_plist(plist_t plist)
+inline void debug_plist_real(const char *func, const char *file, int line, plist_t plist)
{
#ifndef STRIP_DEBUG_CODE
if (!plist)
@@ -144,7 +147,12 @@ inline void debug_plist(plist_t plist)
char *buffer = NULL;
uint32_t length = 0;
plist_to_xml(plist, &buffer, &length);
- debug_info("plist size: %i\nbuffer :\n%s", length, buffer);
+
+ /* get rid of ending newline as one is already added in the debug line */
+ if (buffer[length-1] == '\n')
+ buffer[length-1] = '\0';
+
+ debug_info_real(func, file, line, "printing %i bytes plist:\n%s", length, buffer);
free(buffer);
#endif
}
diff --git a/src/debug.h b/src/debug.h
index 0a29be3..2fd0960 100644
--- a/src/debug.h
+++ b/src/debug.h
@@ -3,6 +3,7 @@
* contains utilitary functions for debugging
*
* Copyright (c) 2008 Jonathan Beck All Rights Reserved.
+ * Copyright (c) 2010 Martin S. All Rights Reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -27,10 +28,13 @@
#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L && !defined(STRIP_DEBUG_CODE)
#define debug_info(...) debug_info_real (__func__, __FILE__, __LINE__, __VA_ARGS__)
+#define debug_plist(a) debug_plist_real (__func__, __FILE__, __LINE__, a)
#elif defined(__GNUC__) && __GNUC__ >= 3 && !defined(STRIP_DEBUG_CODE)
#define debug_info(...) debug_info_real (__FUNCTION__, __FILE__, __LINE__, __VA_ARGS__)
+#define debug_plist(a) debug_plist_real (__FUNCTION__, __FILE__, __LINE__, a)
#else
#define debug_info(...)
+#define debug_plist(a)
#endif
G_GNUC_INTERNAL inline void debug_info_real(const char *func,
@@ -40,6 +44,9 @@ G_GNUC_INTERNAL inline void debug_info_real(const char *func,
G_GNUC_INTERNAL inline void debug_buffer(const char *data, const int length);
G_GNUC_INTERNAL inline void debug_buffer_to_file(const char *file, const char *data, const int length);
-G_GNUC_INTERNAL inline void debug_plist(plist_t plist);
+G_GNUC_INTERNAL inline void debug_plist_real(const char *func,
+ const char *file,
+ int line,
+ plist_t plist);
#endif