diff --git a/aegisub/libaegisub/include/libaegisub/io.h b/aegisub/libaegisub/include/libaegisub/io.h index 399164ee2..eafd0bfd7 100644 --- a/aegisub/libaegisub/include/libaegisub/io.h +++ b/aegisub/libaegisub/include/libaegisub/io.h @@ -47,7 +47,7 @@ class Save { const std::string file_name; public: - Save(const std::string& file); + Save(const std::string& file, bool binary = false); ~Save(); std::ofstream& Get(); }; diff --git a/aegisub/libaegisub/unix/io.cpp b/aegisub/libaegisub/unix/io.cpp index a9d3fbc48..e4ae52244 100644 --- a/aegisub/libaegisub/unix/io.cpp +++ b/aegisub/libaegisub/unix/io.cpp @@ -47,7 +47,7 @@ std::ifstream* Open(const std::string &file) { } -Save::Save(const std::string& file): file_name(file) { +Save::Save(const std::string& file, bool binary): file_name(file) { LOG_D("agi/io/save/file") << file; const std::string pwd = util::DirName(file); diff --git a/aegisub/libaegisub/windows/io.cpp b/aegisub/libaegisub/windows/io.cpp index 12b692df3..acb93cc8f 100644 --- a/aegisub/libaegisub/windows/io.cpp +++ b/aegisub/libaegisub/windows/io.cpp @@ -52,7 +52,7 @@ std::ifstream* Open(const std::string &file) { } -Save::Save(const std::string& file): file_name(file) { +Save::Save(const std::string& file, bool binary): file_name(file) { LOG_D("agi/io/save/file") << file; const std::string pwd = util::DirName(file); @@ -71,7 +71,7 @@ Save::Save(const std::string& file): file_name(file) { /// Windows support is added. The code in the destructor needs fixing /// as well. // This will open to file.XXXX. (tempfile) - fp = new std::ofstream(ConvertW(file + "_tmp").c_str()); + fp = new std::ofstream(ConvertW(file + "_tmp").c_str(), binary ? std::ios::binary : std::ios::out); } Save::~Save() { diff --git a/aegisub/src/text_file_writer.cpp b/aegisub/src/text_file_writer.cpp index 6b3c8f393..0e8473fc5 100644 --- a/aegisub/src/text_file_writer.cpp +++ b/aegisub/src/text_file_writer.cpp @@ -53,7 +53,7 @@ /// @param encoding /// TextFileWriter::TextFileWriter(wxString const& filename, wxString encoding) -: file(new agi::io::Save(STD_STR(filename))) +: file(new agi::io::Save(STD_STR(filename), true)) , conv() { if (encoding.empty()) encoding = lagi_wxString(OPT_GET("App/Save Charset")->GetString()); if (encoding.Lower() != wxSTRING_ENCODING) @@ -80,7 +80,11 @@ TextFileWriter::~TextFileWriter() { /// @param line /// @param addLineBreak void TextFileWriter::WriteLineToFile(wxString line, bool addLineBreak) { +#ifdef _WIN32 + if (addLineBreak) line += L"\r\n"; +#else if (addLineBreak) line += L"\n"; +#endif // On non-windows this cast does nothing const char *data = reinterpret_cast(line.wx_str());