diff --git a/aegisub/libaegisub/unix/access.cpp b/aegisub/libaegisub/unix/access.cpp index 0814176e4..2b64a6fc2 100644 --- a/aegisub/libaegisub/unix/access.cpp +++ b/aegisub/libaegisub/unix/access.cpp @@ -18,6 +18,10 @@ /// @brief Unix access methods. /// @ingroup libaegisub unix +#include "config.h" + +#include "libaegisub/access.h" + #ifndef LAGI_PRE #include #include @@ -88,20 +92,14 @@ void Check(const std::string &file, acs::Type type) { break; } - switch (type) { - case DirRead: - case FileRead: - file_status = access(file.c_str(), R_OK); - if (file_status != 0) - throw Read("File or directory is not readable."); - break; + file_status = access(file.c_str(), R_OK); + if (file_status != 0) + throw Read("File or directory is not readable."); - case DirWrite: - case FileWrite: - file_status = access(file.c_str(), W_OK); - if (file_status != 0) - throw Write("File or directory is not writable."); - break; + if (type == DirWrite || type == FileWrite) { + file_status = access(file.c_str(), W_OK); + if (file_status != 0) + throw Write("File or directory is not writable."); } } diff --git a/aegisub/libaegisub/unix/io.cpp b/aegisub/libaegisub/unix/io.cpp index d48394b43..23320f3af 100644 --- a/aegisub/libaegisub/unix/io.cpp +++ b/aegisub/libaegisub/unix/io.cpp @@ -20,6 +20,8 @@ #include "config.h" +#include "libaegisub/io.h" + #ifndef LAGI_PRE #include #include @@ -28,7 +30,7 @@ #include #endif -#include "libaegisub/io.h" +#include "libaegisub/access.h" #include "libaegisub/log.h" #include "libaegisub/util.h" @@ -57,12 +59,11 @@ Save::Save(const std::string& file, bool binary): file_name(file) { try { acs::CheckFileWrite(file); - } catch (acs::AcsNotFound& e) { + } 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. - std::ofstream fp_touch(file.c_str()); - fp_touch.close(); + std::ofstream(file.c_str()); } /// @todo This is a temp hack, proper implementation needs to come after diff --git a/aegisub/libaegisub/unix/util.cpp b/aegisub/libaegisub/unix/util.cpp index 50708f268..b268252e8 100644 --- a/aegisub/libaegisub/unix/util.cpp +++ b/aegisub/libaegisub/unix/util.cpp @@ -22,6 +22,8 @@ #include "libaegisub/util.h" +#include "libaegisub/access.h" + #ifndef LAGI_PRE #include #include @@ -55,7 +57,7 @@ void Rename(const std::string& from, const std::string& to) { try { acs::CheckFileWrite(to); - } catch (acs::AcsNotFound& e) { + } catch (FileNotFoundError const&) { acs::CheckDirWrite(DirName(to)); }