diff --git a/aegisub/build/libaegisub_vs2008/libaegisub_vs2008.vcproj b/aegisub/build/libaegisub_vs2008/libaegisub_vs2008.vcproj index 9db8cbaff..c351d3029 100644 --- a/aegisub/build/libaegisub_vs2008/libaegisub_vs2008.vcproj +++ b/aegisub/build/libaegisub_vs2008/libaegisub_vs2008.vcproj @@ -287,6 +287,10 @@ RelativePath="..\..\libaegisub\common\hotkey.cpp" > + + @@ -349,10 +353,6 @@ RelativePath="..\..\libaegisub\windows\charset_conv_win.cpp" > - - diff --git a/aegisub/libaegisub/Makefile b/aegisub/libaegisub/Makefile index 4c2665ae5..6af3cec9e 100644 --- a/aegisub/libaegisub/Makefile +++ b/aegisub/libaegisub/Makefile @@ -25,6 +25,7 @@ SRC += \ common/charset_conv.cpp \ common/charset_ucd.cpp \ common/hotkey.cpp \ + common/io.cpp \ common/json.cpp \ common/mru.cpp \ common/option.cpp \ @@ -37,7 +38,6 @@ SRC += \ common/validator.cpp \ common/vfr.cpp \ unix/util.cpp \ - unix/io.cpp \ unix/access.cpp \ unix/log.cpp \ unix/path.cpp diff --git a/aegisub/libaegisub/windows/io.cpp b/aegisub/libaegisub/common/io.cpp similarity index 87% rename from aegisub/libaegisub/windows/io.cpp rename to aegisub/libaegisub/common/io.cpp index 411362878..8d74258e6 100644 --- a/aegisub/libaegisub/windows/io.cpp +++ b/aegisub/libaegisub/common/io.cpp @@ -11,12 +11,10 @@ // WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN // ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF // OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -// -// $Id$ /// @file io.cpp /// @brief Windows IO methods. -/// @ingroup libaegisub windows +/// @ingroup libaegisub #ifndef LAGI_PRE #include @@ -32,17 +30,20 @@ #include "libaegisub/log.h" #include "libaegisub/util.h" - namespace agi { namespace io { using agi::charset::ConvertW; +#ifndef _WIN32 +#define ConvertW +#endif + std::ifstream* Open(const std::string &file, bool binary) { LOG_D("agi/io/open/file") << file; acs::CheckFileRead(file); - std::ifstream *stream = new std::ifstream(ConvertW(file).c_str(), std::ios::in | (binary ? std::ios::binary : 0)); + std::ifstream *stream = new std::ifstream(ConvertW(file).c_str(), (binary ? std::ios::binary : std::ios::in)); if (stream->fail()) { delete stream; @@ -52,7 +53,6 @@ std::ifstream* Open(const std::string &file, bool binary) { return stream; } - 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); @@ -68,10 +68,6 @@ Save::Save(const std::string& file, bool binary): file_name(file) { std::ofstream fp_touch(ConvertW(file).c_str()); } - /// @todo This is a temp hack, proper implementation needs to come after - /// 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(), binary ? std::ios::binary : std::ios::out); } @@ -84,6 +80,5 @@ std::ofstream& Save::Get() { return *fp; } - } // namespace io } // namespace agi diff --git a/aegisub/libaegisub/include/libaegisub/io.h b/aegisub/libaegisub/include/libaegisub/io.h index bc4c8784d..9a7ed1957 100644 --- a/aegisub/libaegisub/include/libaegisub/io.h +++ b/aegisub/libaegisub/include/libaegisub/io.h @@ -31,15 +31,6 @@ namespace agi { DEFINE_BASE_EXCEPTION_NOINNER(IOError, Exception) DEFINE_SIMPLE_EXCEPTION_NOINNER(IOFatal, IOError, "io/fatal") -/* -DEFINE_SIMPLE_EXCEPTION_NOINNER(IOAccess, IOError, "io/access") -DEFINE_SIMPLE_EXCEPTION_NOINNER(IONotFound, IOError, "io/notfound") -DEFINE_SIMPLE_EXCEPTION_NOINNER(IONotAFile, IOError, "io/file") -DEFINE_SIMPLE_EXCEPTION_NOINNER(IONotADirectory, IOError, "io/directory") -DEFINE_SIMPLE_EXCEPTION_NOINNER(IOAccessRead, IOError, "io/read") -DEFINE_SIMPLE_EXCEPTION_NOINNER(IOAccessWrite, IOError, "io/write") -*/ - std::ifstream* Open(const std::string &file, bool binary = false); class Save { @@ -52,8 +43,5 @@ public: std::ofstream& Get(); }; - } // namespace io } // namespace agi - - diff --git a/aegisub/libaegisub/unix/io.cpp b/aegisub/libaegisub/unix/io.cpp deleted file mode 100644 index 4a4c91dbc..000000000 --- a/aegisub/libaegisub/unix/io.cpp +++ /dev/null @@ -1,92 +0,0 @@ -// Copyright (c) 2010, Amar Takhar -// -// Permission to use, copy, modify, and distribute this software for any -// purpose with or without fee is hereby granted, provided that the above -// copyright notice and this permission notice appear in all copies. -// -// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -// -// $Id$ - -/// @file io.cpp -/// @brief Unix IO methods. -/// @ingroup libaegisub unix - -#include "config.h" - -#include "libaegisub/io.h" - -#ifndef LAGI_PRE -#include -#include - -#include -#include -#endif - -#include "libaegisub/access.h" -#include "libaegisub/log.h" -#include "libaegisub/util.h" - - -namespace agi { - namespace io { - -std::ifstream* Open(const std::string &file, bool) { - LOG_D("agi/io/open/file") << file; - acs::CheckFileRead(file); - - std::ifstream *stream = new std::ifstream(file.c_str()); - - if (stream->fail()) - throw IOFatal("Unknown fatal error as occurred"); - - return stream; -} - - -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); - - acs::CheckDirWrite(pwd.c_str()); - - try { - acs::CheckFileWrite(file); - } catch (FileNotFoundError const&) { - // If the file doesn't exist we create a 0 byte file, this so so - // util::Rename will find it, and to let users know something went - // wrong by leaving a 0 byte file. - (void)std::ofstream(file.c_str()); - } - - /// @todo This is a temp hack, proper implementation needs to come after - /// Windows support is added. The code in the destructor needs fixing - /// as well. - const std::string tmp = file + "_tmp"; - - // This will open to file.XXXX. (tempfile) - fp = new std::ofstream(tmp.c_str()); -} - -Save::~Save() { - - const std::string tmp(file_name + "_tmp"); - util::Rename(tmp, file_name); - delete fp; - fp = 0; // to avoid any silly errors. -} - -std::ofstream& Save::Get() { - return *fp; -} - - - } // namespace io -} // namespace agi