/** * wpa_printf - conditional printf * @level: priority level (MSG_*) of the message * @fmt: printf format string, followed by optional arguments * * This function is used to print conditional debugging and error messages. The * output may be directed to stdout, stderr, and/or syslog based on * configuration. * * Note: New line '\n' is added to the end of the text when printing to stdout. */ void wpa_printf(int level, const char *fmt, ...) { va_list ap; /* @@@ debug for now @@@ */ //wpa_debug_level = MSG_MSGDUMP; va_start(ap, fmt); if (level >= wpa_debug_level) { #ifdef CONFIG_DEBUG_SYSLOG if (wpa_debug_syslog) { vsyslog(syslog_priority(level), fmt, ap); } else { #endif /* CONFIG_DEBUG_SYSLOG */ wpa_debug_print_timestamp(); #ifdef CONFIG_DEBUG_FILE if (out_file) { vfprintf(out_file, fmt, ap); fprintf(out_file, "\n"); } else { #endif /* CONFIG_DEBUG_FILE */ vprintf(fmt, ap); printf("\n"); #ifdef CONFIG_DEBUG_FILE } #endif /* CONFIG_DEBUG_FILE */ #ifdef CONFIG_DEBUG_SYSLOG } #endif /* CONFIG_DEBUG_SYSLOG */ } va_end(ap); }
/** * wpa_printf - conditional printf * @level: priority level (MSG_*) of the message * @fmt: printf format string, followed by optional arguments * * This function is used to print conditional debugging and error messages. The * output may be directed to stdout, stderr, and/or syslog based on * configuration. * * Note: New line '\n' is added to the end of the text when printing to stdout. */ void wpa_printf(int level, const char *fmt, ...) { va_list ap; va_start(ap, fmt); if (level >= wpa_debug_level) { #ifdef CONFIG_DEBUG_SYSLOG if (wpa_debug_syslog) { vsyslog(syslog_priority(level), fmt, ap); } else { #endif /* CONFIG_DEBUG_SYSLOG */ wpa_debug_print_timestamp(); #ifdef CONFIG_DEBUG_FILE if (out_file) { #if defined TIZEN_EXT struct stat buf; fstat(fileno(out_file), &buf); if (buf.st_size >= MAX_LOG_SIZE) { fclose(out_file); out_file = NULL; __wpa_log_make_backup(); out_file = fopen(out_file_name, "a"); if (out_file == NULL) { wpa_printf(MSG_ERROR, "wpa_debug_open_file: Failed to open " "output file, using standard output"); return; } } #endif vfprintf(out_file, fmt, ap); fprintf(out_file, "\n"); } else { #endif /* CONFIG_DEBUG_FILE */ vprintf(fmt, ap); printf("\n"); #ifdef CONFIG_DEBUG_FILE } #endif /* CONFIG_DEBUG_FILE */ #ifdef CONFIG_DEBUG_SYSLOG } #endif /* CONFIG_DEBUG_SYSLOG */ } va_end(ap); }
/** * wpa_printf - conditional printf * @level: priority level (MSG_*) of the message * @fmt: printf format string, followed by optional arguments * * This function is used to print conditional debugging and error messages. The * output may be directed to stdout, stderr, and/or syslog based on * configuration. * * Note: New line '\n' is added to the end of the text when printing to stdout. */ void wpa_printf(int level, const char *fmt, ...) { va_list ap; va_start(ap, fmt); if (level >= wpa_debug_level) { #ifdef CONFIG_ANDROID_LOG __android_log_vprint(wpa_to_android_level(level), ANDROID_LOG_NAME, fmt, ap); #else /* CONFIG_ANDROID_LOG */ #ifdef CONFIG_DEBUG_SYSLOG if (wpa_debug_syslog) { vsyslog(syslog_priority(level), fmt, ap); } else { #endif /* CONFIG_DEBUG_SYSLOG */ wpa_debug_print_timestamp(); #ifdef CONFIG_DEBUG_FILE if (out_file) { vfprintf(out_file, fmt, ap); fprintf(out_file, "\n"); fflush(out_file); } else { #endif /* CONFIG_DEBUG_FILE */ vprintf(fmt, ap); printf("\n"); #ifdef CONFIG_DEBUG_FILE } #endif /* CONFIG_DEBUG_FILE */ #ifdef CONFIG_DEBUG_SYSLOG } #endif /* CONFIG_DEBUG_SYSLOG */ #endif /* CONFIG_ANDROID_LOG */ } va_end(ap); #ifdef CONFIG_DEBUG_LINUX_TRACING if (wpa_debug_tracing_file != NULL) { va_start(ap, fmt); fprintf(wpa_debug_tracing_file, WPAS_TRACE_PFX, level); vfprintf(wpa_debug_tracing_file, fmt, ap); fprintf(wpa_debug_tracing_file, "\n"); fflush(wpa_debug_tracing_file); va_end(ap); } #endif /* CONFIG_DEBUG_LINUX_TRACING */ }
static void _wpa_hexdump(int level, const char *title, const u8 *buf, size_t len, int show) { size_t i; #ifdef CONFIG_DEBUG_LINUX_TRACING if (wpa_debug_tracing_file != NULL) { fprintf(wpa_debug_tracing_file, WPAS_TRACE_PFX "%s - hexdump(len=%lu):", level, title, (unsigned long) len); if (buf == NULL) { fprintf(wpa_debug_tracing_file, " [NULL]\n"); } else if (!show) { fprintf(wpa_debug_tracing_file, " [REMOVED]\n"); } else { for (i = 0; i < len; i++) fprintf(wpa_debug_tracing_file, " %02x", buf[i]); } fflush(wpa_debug_tracing_file); } #endif /* CONFIG_DEBUG_LINUX_TRACING */ if (level < wpa_debug_level) return; #ifdef CONFIG_ANDROID_LOG { const char *display; char *strbuf = NULL; size_t slen = len; if (buf == NULL) { display = " [NULL]"; } else if (len == 0) { display = ""; } else if (show && len) { /* Limit debug message length for Android log */ if (slen > 32) slen = 32; strbuf = os_malloc(1 + 3 * slen); if (strbuf == NULL) { wpa_printf(MSG_ERROR, "wpa_hexdump: Failed to " "allocate message buffer"); return; } for (i = 0; i < slen; i++) os_snprintf(&strbuf[i * 3], 4, " %02x", buf[i]); display = strbuf; } else { display = " [REMOVED]"; } __android_log_print(wpa_to_android_level(level), ANDROID_LOG_NAME, "%s - hexdump(len=%lu):%s%s", title, (long unsigned int) len, display, len > slen ? " ..." : ""); os_free(strbuf); return; } #else /* CONFIG_ANDROID_LOG */ #ifdef CONFIG_DEBUG_SYSLOG if (wpa_debug_syslog) { const char *display; char *strbuf = NULL; if (buf == NULL) { display = " [NULL]"; } else if (len == 0) { display = ""; } else if (show && len) { strbuf = os_malloc(1 + 3 * len); if (strbuf == NULL) { wpa_printf(MSG_ERROR, "wpa_hexdump: Failed to " "allocate message buffer"); return; } for (i = 0; i < len; i++) os_snprintf(&strbuf[i * 3], 4, " %02x", buf[i]); display = strbuf; } else { display = " [REMOVED]"; } syslog(syslog_priority(level), "%s - hexdump(len=%lu):%s", title, (unsigned long) len, display); os_free(strbuf); return; } #endif /* CONFIG_DEBUG_SYSLOG */ wpa_debug_print_timestamp(); #ifdef CONFIG_DEBUG_FILE if (out_file) { fprintf(out_file, "%s - hexdump(len=%lu):", title, (unsigned long) len); if (buf == NULL) { fprintf(out_file, " [NULL]"); } else if (show) { for (i = 0; i < len; i++) fprintf(out_file, " %02x", buf[i]); } else { fprintf(out_file, " [REMOVED]"); } fprintf(out_file, "\n"); } else { #endif /* CONFIG_DEBUG_FILE */ printf("%s - hexdump(len=%lu):", title, (unsigned long) len); if (buf == NULL) { printf(" [NULL]"); } else if (show) { for (i = 0; i < len; i++) printf(" %02x", buf[i]); } else { printf(" [REMOVED]"); } printf("\n"); #ifdef CONFIG_DEBUG_FILE } #endif /* CONFIG_DEBUG_FILE */ #endif /* CONFIG_ANDROID_LOG */ }
static void _wpa_hexdump(int level, const char *title, const u8 *buf, size_t len, int show) { size_t i; if (level < wpa_debug_level) return; #ifdef CONFIG_DEBUG_SYSLOG if (wpa_debug_syslog) { const char *display; char *strbuf = NULL; if (buf == NULL) { display = " [NULL]"; } else if (len == 0) { display = ""; } else if (show && len) { strbuf = os_malloc(1 + 3 * len); if (strbuf == NULL) { wpa_printf(MSG_ERROR, "wpa_hexdump: Failed to " "allocate message buffer"); return; } for (i = 0; i < len; i++) os_snprintf(&strbuf[i * 3], 4, " %02x", buf[i]); display = strbuf; } else { display = " [REMOVED]"; } syslog(syslog_priority(level), "%s - hexdump(len=%lu):%s", title, len, display); os_free(strbuf); return; } #endif /* CONFIG_DEBUG_SYSLOG */ wpa_debug_print_timestamp(); #ifdef CONFIG_DEBUG_FILE if (out_file) { fprintf(out_file, "%s - hexdump(len=%lu):", title, (unsigned long) len); if (buf == NULL) { fprintf(out_file, " [NULL]"); } else if (show) { for (i = 0; i < len; i++) fprintf(out_file, " %02x", buf[i]); } else { fprintf(out_file, " [REMOVED]"); } fprintf(out_file, "\n"); } else { #endif /* CONFIG_DEBUG_FILE */ printf("%s - hexdump(len=%lu):", title, (unsigned long) len); if (buf == NULL) { printf(" [NULL]"); } else if (show) { for (i = 0; i < len; i++) printf(" %02x", buf[i]); } else { printf(" [REMOVED]"); } printf("\n"); #ifdef CONFIG_DEBUG_FILE } #endif /* CONFIG_DEBUG_FILE */ }
void write(level channel, char const * msg) override { scoped_lock_type lock(basic<concurrency,names>::m_lock); if (!this->dynamic_test(channel)) { return; } ::syslog(syslog_priority(channel), "[%s] %s", names::channel_name(channel), msg); }