diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/NullOutputFile.h | 2 | ||||
| -rw-r--r-- | src/aria2api.cc | 2 | ||||
| -rw-r--r-- | src/console.cc | 47 | ||||
| -rw-r--r-- | src/console.h | 16 | ||||
| -rw-r--r-- | src/main.cc | 1 |
5 files changed, 38 insertions, 30 deletions
diff --git a/src/NullOutputFile.h b/src/NullOutputFile.h index ff14ef1b..97c05562 100644 --- a/src/NullOutputFile.h +++ b/src/NullOutputFile.h @@ -43,8 +43,8 @@ class NullOutputFile:public OutputFile { public: virtual ~NullOutputFile() {} virtual size_t write(const char* str) { return 0; } - virtual int vprintf(const char* format, va_list va) { return 0; } virtual int flush() { return 0; } + virtual int vprintf(const char* format, va_list va) { return 0; } virtual bool supportsColor() { return false; } }; diff --git a/src/aria2api.cc b/src/aria2api.cc index 22963e83..c9474a8b 100644 --- a/src/aria2api.cc +++ b/src/aria2api.cc @@ -56,6 +56,7 @@ #include "BitfieldMan.h" #include "DownloadContext.h" #include "RpcMethodImpl.h" +#include "console.h" namespace aria2 { @@ -72,6 +73,7 @@ Platform* platform = 0; int libraryInit() { + global::initConsole(true); try { platform = new Platform(); } catch(RecoverableException& e) { diff --git a/src/console.cc b/src/console.cc index cf0782a3..109c30ac 100644 --- a/src/console.cc +++ b/src/console.cc @@ -33,38 +33,47 @@ */ /* copyright --> */ #include "console.h" +#include "NullOutputFile.h" +#ifdef __MINGW32__ +# include "WinConsoleFile.h" +#else // !__MINGW32__ +# include "BufferedFile.h" +#endif // !__MINGW32__ namespace aria2 { namespace global { -#ifdef __MINGW32__ -const SharedHandle<WinConsoleFile>& cout() +namespace { +Console consoleCout; +Console consoleCerr; +}; + +void initConsole(bool suppress) { - static SharedHandle<WinConsoleFile> f(new WinConsoleFile(STD_OUTPUT_HANDLE)); - return f; -} + if(suppress) { + consoleCerr.reset(new NullOutputFile()); + consoleCout.reset(new NullOutputFile()); + } else { +#ifdef __MINGW32__ + consoleCout.reset(new WinConsoleFile(STD_OUTPUT_HANDLE)); + consoleCerr.reset(new WinConsoleFile(STD_ERROR_HANDLE)); #else // !__MINGW32__ -const SharedHandle<BufferedFile>& cout() -{ - static SharedHandle<BufferedFile> f(new BufferedFile(stdout)); - return f; -} + consoleCout.reset(new BufferedFile(stdout)); + consoleCerr.reset(new BufferedFile(stderr)); #endif // !__MINGW32__ + } +} -#ifdef __MINGW32__ -const SharedHandle<WinConsoleFile>& cerr() +const Console& cout() { - static SharedHandle<WinConsoleFile> f(new WinConsoleFile(STD_ERROR_HANDLE)); - return f; + return consoleCout; } -#else // !__MINGW32__ -const SharedHandle<BufferedFile>& cerr() + +const Console& cerr() { - static SharedHandle<BufferedFile> f(new BufferedFile(stderr)); - return f; + return consoleCerr; } -#endif // !__MINGW32__ } // namespace global diff --git a/src/console.h b/src/console.h index 3944b415..8b99f7f1 100644 --- a/src/console.h +++ b/src/console.h @@ -37,22 +37,18 @@ #include "common.h" #include "SharedHandle.h" -#ifdef __MINGW32__ -# include "WinConsoleFile.h" -#else // !__MINGW32__ -# include "BufferedFile.h" -#endif // !__MINGW32__ +#include "OutputFile.h" namespace aria2 { -#ifdef __MINGW32__ -typedef SharedHandle<WinConsoleFile> Console; -#else // !__MINGW32__ -typedef SharedHandle<BufferedFile> Console; -#endif // !__MINGW32__ +typedef SharedHandle<OutputFile> Console; namespace global { +// Initialize console output facility. If the |suppress| is true, all +// output sent to the console objects are discarded. +void initConsole(bool suppress); + const Console& cout(); const Console& cerr(); diff --git a/src/main.cc b/src/main.cc index ebb7e9de..3bb11889 100644 --- a/src/main.cc +++ b/src/main.cc @@ -62,6 +62,7 @@ error_code::Value main(int argc, char** argv) int main(int argc, char** argv) { aria2::error_code::Value r; + aria2::global::initConsole(false); try { aria2::Platform platform; r = aria2::main(argc, argv); |
