00001 #ifdef WIN32 00002 #include <windows.h> 00003 #endif 00004 00005 #include "debug.h" 00006 00007 00008 namespace audiere { 00009 00010 FILE* Log::handle; 00011 int Log::indent_count; 00012 00013 00014 void 00015 Log::Write(const char* str) 00016 { 00017 std::string s(std::string(indent_count * 2, ' ') + str + "\n"); 00018 00019 #ifdef WIN32 00020 OutputDebugString(s.c_str()); 00021 #endif 00022 00023 EnsureOpen(); 00024 if (handle) { 00025 fputs(s.c_str(), handle); 00026 fflush(handle); 00027 } 00028 } 00029 00030 00031 void 00032 Log::EnsureOpen() 00033 { 00034 if (!handle) { 00035 char* log = getenv("ADR_LOG_FILE"); 00036 if (log && log[0]) { 00037 handle = fopen(log, "w"); 00038 } else { 00039 #ifdef WIN32 00040 handle = fopen("C:/audiere_debug.log", "w"); 00041 #else 00042 std::string home(getenv("HOME")); 00043 handle = fopen((home + "/audiere_debug.log").c_str(), "w"); 00044 #endif 00045 } 00046 00047 if (!handle) { 00048 handle = stderr; 00049 } 00050 00051 atexit(Close); 00052 } 00053 } 00054 00055 00056 void 00057 Log::Close() 00058 { 00059 fclose(handle); 00060 } 00061 00062 }