summaryrefslogtreecommitdiff
path: root/src/main.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2011-08-09 23:33:55 +0900
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2011-08-09 23:33:55 +0900
commita10cda2f17916895d8c6bc3cd69a360947017771 (patch)
tree0740833f77a3e239ea58e870a9dcb9086d43e516 /src/main.cc
parent02307cee0a395d8405d0e160664d4a37c79fe16c (diff)
Use global::cout to output string to stdout.
In MinGW32 build, global::cout is WinConsoleFile. When outputing to console, it uses WriteConsoleW, so Unicode characters are written. Fixed memory leak in WChar<->MultiByte conversion functions. The portion of code which uses std::cout is rewritten to use global::cout.
Diffstat (limited to 'src/main.cc')
-rw-r--r--src/main.cc25
1 files changed, 12 insertions, 13 deletions
diff --git a/src/main.cc b/src/main.cc
index 03f464f5..07f2ed60 100644
--- a/src/main.cc
+++ b/src/main.cc
@@ -38,10 +38,9 @@
#include <unistd.h>
#include <getopt.h>
-#include <fstream>
-#include <iostream>
#include <numeric>
#include <vector>
+#include <iostream>
#include "SharedHandle.h"
#include "LogFactory.h"
@@ -69,6 +68,8 @@
#include "SocketCore.h"
#include "DownloadContext.h"
#include "fmt.h"
+#include "NullOutputFile.h"
+#include "console.h"
#ifdef ENABLE_BITTORRENT
# include "bittorrent_helper.h"
#endif // ENABLE_BITTORRENT
@@ -85,9 +86,6 @@ extern int optind, opterr, optopt;
namespace aria2 {
-// output stream to /dev/null
-std::ofstream nullout(DEV_NULL);
-
SharedHandle<StatCalc> getStatCalc(const SharedHandle<Option>& op)
{
SharedHandle<StatCalc> statCalc;
@@ -104,12 +102,12 @@ SharedHandle<StatCalc> getStatCalc(const SharedHandle<Option>& op)
return statCalc;
}
-std::ostream& getSummaryOut(const SharedHandle<Option>& op)
+SharedHandle<OutputFile> getSummaryOut(const SharedHandle<Option>& op)
{
if(op->getAsBool(PREF_QUIET)) {
- return nullout;
+ return SharedHandle<OutputFile>(new NullOutputFile());
} else {
- return std::cout;
+ return global::cout;
}
}
@@ -120,7 +118,7 @@ void showTorrentFile(const std::string& uri)
SharedHandle<Option> op(new Option());
SharedHandle<DownloadContext> dctx(new DownloadContext());
bittorrent::load(uri, dctx, op);
- bittorrent::print(std::cout, dctx);
+ bittorrent::print(*global::cout, dctx);
}
} // namespace
#endif // ENABLE_BITTORRENT
@@ -135,8 +133,9 @@ void showMetalinkFile
op->get(PREF_METALINK_BASE_URI));
std::vector<SharedHandle<FileEntry> > fileEntries;
MetalinkEntry::toFileEntry(fileEntries, metalinkEntries);
- util::toStream(fileEntries.begin(), fileEntries.end(), std::cout);
- std::cout << std::endl;
+ util::toStream(fileEntries.begin(), fileEntries.end(), *global::cout);
+ global::cout->write("\n");
+ global::cout->flush();
}
} // namespace
#endif // ENABLE_METALINK
@@ -168,7 +167,7 @@ void showFiles
printf("\n\n");
}
} catch(RecoverableException& e) {
- std::cout << e.stackTrace() << std::endl;
+ global::cout->printf("%s\n", e.stackTrace().c_str());
}
}
}
@@ -269,7 +268,7 @@ error_code::Value main(int argc, char* argv[])
op->remove(PREF_SELECT_FILE);
op->remove(PREF_PAUSE);
if(!op->getAsBool(PREF_ENABLE_RPC) && requestGroups.empty()) {
- std::cout << MSG_NO_FILES_TO_DOWNLOAD << std::endl;
+ global::cout->printf("%s\n", MSG_NO_FILES_TO_DOWNLOAD);
} else {
exitStatus = MultiUrlRequestInfo(requestGroups, op, getStatCalc(op),
getSummaryOut(op)).execute();