int libhaggle_trace(int err, const char *func, const char *fmt, ...) { static char buf[1024]; struct timeval now; va_list args; int len; if (!tr_out) return -1; if (trace_level == 0 || (trace_level == 1 && err == 0)) return 0; libhaggle_gettimeofday(&now, NULL); va_start(args, fmt); #ifdef WINCE len = _vsnprintf(buf, 1024, fmt, args); #else len = vsnprintf(buf, 1024, fmt, args); #endif va_end(args); #if defined(OS_ANDROID) len = __android_log_print(ANDROID_LOG_DEBUG, "LIBHAGGLE", "%ld.%06ld %s: %s", (long)now.tv_sec, (long)now.tv_usec, func, buf); #else fprintf((err ? tr_err : tr_out), "%ld.%06ld %s: %s", (long)now.tv_sec, (long)now.tv_usec, func, buf); fflush(tr_out); #endif return 0; }
void prng_init(void) { #if defined(OS_MACOSX) // No need for initialization #elif defined(OS_LINUX) srandom(time(NULL)); #elif defined(OS_WINDOWS_MOBILE) srand(GetTickCount()); #elif defined(OS_WINDOWS) struct timeval tv; libhaggle_gettimeofday(&tv, NULL); srand(tv.tv_sec + tv.tv_usec); #endif }