summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/NullOutputFile.h2
-rw-r--r--src/aria2api.cc2
-rw-r--r--src/console.cc47
-rw-r--r--src/console.h16
-rw-r--r--src/main.cc1
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);