From 44989bc95754b40f4c00f10db43ed91f64a3e475 Mon Sep 17 00:00:00 2001 From: Juan Linietsky Date: Fri, 15 Dec 2017 17:05:12 -0300 Subject: Test and warn of case mismatch on Windows Will throw a warning when a file is opened with a different case than what is stored on the Windows filesystem. --- drivers/windows/file_access_windows.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/drivers/windows/file_access_windows.cpp b/drivers/windows/file_access_windows.cpp index 23c8ea2ec7..d4b8a8c361 100644 --- a/drivers/windows/file_access_windows.cpp +++ b/drivers/windows/file_access_windows.cpp @@ -78,6 +78,7 @@ Error FileAccessWindows::_open(const String &p_path, int p_mode_flags) { /* pretty much every implementation that uses fopen as primary backend supports utf8 encoding */ + struct _stat st; if (_wstat(path.c_str(), &st) == 0) { @@ -85,6 +86,23 @@ Error FileAccessWindows::_open(const String &p_path, int p_mode_flags) { return ERR_FILE_CANT_OPEN; }; +#ifdef TOOLS_ENABLED + if (p_mode_flags==READ) { + WIN32_FIND_DATAW d = {0}; + HANDLE f = FindFirstFileW(filename.c_str(),&d); + if (f) { + String fname = d.cFileName; + if (fname!=String()) { + + String base_file = filename.get_file(); + if (base_file!=fname && base_file.findn(fname)==0) { + WARN_PRINTS("Case mismatch opening file '"+base_file+"', stored as '"+fname+"' in the filesystem. This file will not open when exported to other platforms."); + } + } + FindClose(f); + } + } +#endif if (is_backup_save_enabled() && p_mode_flags & WRITE && !(p_mode_flags & READ)) { save_path = path; path = path + ".tmp"; -- cgit v1.2.3