From 8909aeaadcab68ca55c65831f8a130faad6a332b Mon Sep 17 00:00:00 2001 From: Arvid Norberg Date: Thu, 15 May 2008 16:38:04 +0000 Subject: [PATCH] attempt to fix removal of files on windows with unicode (to fix #216) --- src/storage.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/storage.cpp b/src/storage.cpp index 4e5373087..9c5bd4472 100755 --- a/src/storage.cpp +++ b/src/storage.cpp @@ -527,12 +527,23 @@ namespace libtorrent std::pair ret = directories.insert((m_save_path / bp).string()); bp = bp.branch_path(); } +#elif defined(_WIN32) && defined(UNICODE) + try + { fs::remove(safe_convert(p)); } + catch (std::exception& e) + { + error = e.what(); + error_file = p; + result = 1; + } +#else if (std::remove(p.c_str()) != 0 && errno != ENOENT) { error = std::strerror(errno); error_file = p; result = errno; } +#else } // remove the directories. Reverse order to delete @@ -541,12 +552,23 @@ namespace libtorrent for (std::set::reverse_iterator i = directories.rbegin() , end(directories.rend()); i != end; ++i) { +#elif defined(_WIN32) && defined(UNICODE) + try + { fs::remove(safe_convert(*i)); } + catch (std::exception& e) + { + error = e.what(); + error_file = *i; + result = 1; + } +#else if (std::remove(i->c_str()) != 0 && errno != ENOENT) { error = std::strerror(errno); error_file = *i; result = errno; } +#else } if (!error.empty())