summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRussell King <rmk@arm.linux.org.uk>2012-10-18 15:04:26 +0100
committerRussell King <rmk@arm.linux.org.uk>2012-10-23 11:14:41 +0100
commitc4d46b886a302defa7c99608c4761eb0fe7de340 (patch)
treecc6fdb919df2a4cca02762ebf2fa214e969839f0
parent23d335ed2bacd2a4aa40eb50bdc11bcb1cd6b715 (diff)
Cleanup debug output function
-rw-r--r--vmeta_lib.c57
1 files changed, 25 insertions, 32 deletions
diff --git a/vmeta_lib.c b/vmeta_lib.c
index dea64c4..de811ad 100644
--- a/vmeta_lib.c
+++ b/vmeta_lib.c
@@ -549,45 +549,38 @@ SIGN32 vdec_os_driver_clean(void)
}
/* display debug message */
-static int dbg_printf(UNSG32 dbglevel, const char* format, ...) {
- char dbgBuf[256] = {'\0'};
- va_list var;
-#if VMETA_LOG_ON
- FILE *fp_log = fopen(VMETA_LOG_FILE,"a+");
- if(fp_log == NULL) {
- return -1;
- }
-#endif
+static int dbg_printf(UNSG32 dbglevel, const char* format, ...)
+{
+ /* Fast exit path */
+ if (globalDbgLevel == VDEC_DEBUG_NONE)
+ return 0;
+
+ if (globalDbgLevel & (dbglevel | VDEC_DEBUG_ALL)) {
+ FILE *f;
+ char buf[256];
+ va_list ap;
+ int ret;
+
+ va_start(ap, format);
+ ret = vsnprintf(buf, sizeof(buf), format, ap);
+ va_end(ap);
- if(VDEC_DEBUG_NONE == globalDbgLevel)
- goto DBG_EXIT;
- else {
- va_start(var, format);
- vsprintf(dbgBuf, format, var);
- va_end(var);
-
- if(VDEC_DEBUG_ALL & globalDbgLevel)
- goto DBG_PRINT;
- else if((VDEC_DEBUG_MEM & globalDbgLevel) && (dbglevel == VDEC_DEBUG_MEM))
- goto DBG_PRINT;
- else if((VDEC_DEBUG_LOCK & globalDbgLevel) && (dbglevel == VDEC_DEBUG_LOCK))
- goto DBG_PRINT;
- else if((VDEC_DEBUG_VER & globalDbgLevel) && (dbglevel == VDEC_DEBUG_VER))
- goto DBG_PRINT;
- else
- goto DBG_EXIT;
- }
-DBG_PRINT:
#if VMETA_LOG_ON
- fprintf(fp_log,dbgBuf);
+ f = fopen(VMETA_LOG_FILE, "a+");
+ if (f == NULL)
+ return -1;
#else
- printf("%s", dbgBuf);
+ f = stderr;
#endif
+ fputs(buf, f);
-DBG_EXIT:
+ if (ret >= sizeof(buf))
+ fputs("... (output truncated)\n", f);
#if VMETA_LOG_ON
- fclose(fp_log);
+ fclose(f);
#endif
+ }
+
return 0;
}