From e017d903c64838c8aa69d31590f9606e375fff25 Mon Sep 17 00:00:00 2001 From: Thomas Goyne Date: Sun, 21 Oct 2012 15:26:34 -0700 Subject: [PATCH] Timestamp temporary files to reduce the chance of name collisions --- aegisub/libaegisub/common/io.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/aegisub/libaegisub/common/io.cpp b/aegisub/libaegisub/common/io.cpp index 4992f6934..085eb02b8 100644 --- a/aegisub/libaegisub/common/io.cpp +++ b/aegisub/libaegisub/common/io.cpp @@ -30,13 +30,20 @@ #include "libaegisub/log.h" #include "libaegisub/util.h" +#ifdef _WIN32 +#define snprintf sprintf_s +#endif + namespace { std::string make_temp_name(std::string const& filename) { + char tmp[1024]; + snprintf(tmp, sizeof tmp, "_tmp_%lld", (long long)time(0)); + std::string::size_type pos = filename.rfind('.'); if (pos == std::string::npos) - return filename + "_tmp"; + return filename + tmp; - return filename.substr(0, pos) + "_tmp" + filename.substr(pos); + return filename.substr(0, pos) + tmp + filename.substr(pos); } }