Make bionic compile even if resolver debugging is enabled.
The code now compiles with all combinations of DEBUG and
DEBUG_DATA except DEBUG_DATA=1, DEBUG=0, which is unsupported.
Change-Id: I9035a65c649df73092f1fc0864ae1cdd9a14aa3b
diff --git a/libc/dns/resolv/res_cache.c b/libc/dns/resolv/res_cache.c
index c431835..573fcbe 100644
--- a/libc/dns/resolv/res_cache.c
+++ b/libc/dns/resolv/res_cache.c
@@ -28,6 +28,8 @@
#include "resolv_cache.h"
#include <resolv.h>
+#include <stdarg.h>
+#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
@@ -45,6 +47,8 @@
#include "resolv_netid.h"
#include "res_private.h"
+#include "private/libc_logging.h"
+
/* This code implements a small and *simple* DNS resolver cache.
*
* It is only used to cache DNS answers for a time defined by the smallest TTL
@@ -152,13 +156,21 @@
/* set to 1 to debug query data */
#define DEBUG_DATA 0
-#undef XLOG
#if DEBUG
-# include "private/libc_logging.h"
-# define XLOG(...) __libc_format_log(ANDROID_LOG_DEBUG,"libc",__VA_ARGS__)
+#define __DEBUG__
+#else
+#define __DEBUG__ __attribute__((unused))
+#endif
-#include <stdio.h>
-#include <stdarg.h>
+#undef XLOG
+
+#define XLOG(...) ({ \
+ if (DEBUG) { \
+ __libc_format_log(ANDROID_LOG_DEBUG,"libc",__VA_ARGS__); \
+ } else { \
+ ((void)0); \
+ } \
+})
/** BOUNDED BUFFER FORMATTING
**/
@@ -205,7 +217,7 @@
*/
/* add a char to a bounded buffer */
-static char*
+char*
_bprint_c( char* p, char* end, int c )
{
if (p < end) {
@@ -220,7 +232,7 @@
}
/* add a sequence of bytes to a bounded buffer */
-static char*
+char*
_bprint_b( char* p, char* end, const char* buf, int len )
{
int avail = end - p;
@@ -243,15 +255,15 @@
}
/* add a string to a bounded buffer */
-static char*
+char*
_bprint_s( char* p, char* end, const char* str )
{
return _bprint_b(p, end, str, strlen(str));
}
/* add a formatted string to a bounded buffer */
-static char*
-_bprint( char* p, char* end, const char* format, ... )
+char* _bprint( char* p, char* end, const char* format, ... ) __DEBUG__;
+char* _bprint( char* p, char* end, const char* format, ... )
{
int avail, n;
va_list args;
@@ -278,7 +290,7 @@
}
/* add a hex value to a bounded buffer, up to 8 digits */
-static char*
+char*
_bprint_hex( char* p, char* end, unsigned value, int numDigits )
{
char text[sizeof(unsigned)*2];
@@ -291,7 +303,7 @@
}
/* add the hexadecimal dump of some memory area to a bounded buffer */
-static char*
+char*
_bprint_hexdump( char* p, char* end, const uint8_t* data, int datalen )
{
int lineSize = 16;
@@ -330,20 +342,17 @@
}
/* dump the content of a query of packet to the log */
-static void
-XLOG_BYTES( const void* base, int len )
+void XLOG_BYTES( const void* base, int len ) __DEBUG__;
+void XLOG_BYTES( const void* base, int len )
{
- char buff[1024];
- char* p = buff, *end = p + sizeof(buff);
+ if (DEBUG_DATA) {
+ char buff[1024];
+ char* p = buff, *end = p + sizeof(buff);
- p = _bprint_hexdump(p, end, base, len);
- XLOG("%s",buff);
-}
-
-#else /* !DEBUG */
-# define XLOG(...) ((void)0)
-# define XLOG_BYTES(a,b) ((void)0)
-#endif
+ p = _bprint_hexdump(p, end, base, len);
+ XLOG("%s",buff);
+ }
+} __DEBUG__
static time_t
_time_now( void )