summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2018-04-18 14:41:52 +0200
committerRémi Verschelde <rverschelde@gmail.com>2018-04-18 14:52:05 +0200
commitff8c07448010d4e9c3a392aa82a09b9e77ef6d14 (patch)
tree6cc04daebbd4b271f6632e0a757fdbce00962d37 /drivers
parenta2f26a96dc6a09eaba796c89f3bd17b9e73848a4 (diff)
Fix case mismatch check on Windows
@reduz pushed the old 44989bc95754b40f4c00f10db43ed91f64a3e475 commit today which he had forgotten in his local clone, and apparently it does not compile. Also fixed style.
Diffstat (limited to 'drivers')
-rw-r--r--drivers/windows/file_access_windows.cpp21
1 files changed, 12 insertions, 9 deletions
diff --git a/drivers/windows/file_access_windows.cpp b/drivers/windows/file_access_windows.cpp
index d4b8a8c361..8b09d76bef 100644
--- a/drivers/windows/file_access_windows.cpp
+++ b/drivers/windows/file_access_windows.cpp
@@ -78,7 +78,6 @@ 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) {
@@ -87,26 +86,30 @@ Error FileAccessWindows::_open(const String &p_path, int p_mode_flags) {
};
#ifdef TOOLS_ENABLED
- if (p_mode_flags==READ) {
- WIN32_FIND_DATAW d = {0};
- HANDLE f = FindFirstFileW(filename.c_str(),&d);
+ // Windows is case insensitive, but all other platforms are sensitive to it
+ // To ease cross-platform development, we issue a warning if users try to access
+ // a file using the wrong case (which *works* on Windows, but won't on other
+ // platforms).
+ if (p_mode_flags == READ) {
+ WIN32_FIND_DATAW d = { 0 };
+ HANDLE f = FindFirstFileW(path.c_str(), &d);
if (f) {
String fname = d.cFileName;
- if (fname!=String()) {
+ 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.");
+ String base_file = path.get_file();
+ if (base_file != fname && base_file.findn(fname) == 0) {
+ WARN_PRINTS("Case mismatch opening requested file '" + base_file + "', stored as '" + fname + "' in the filesystem. This file will not open when exported to other case-sensitive platforms.");
}
}
FindClose(f);
}
}
#endif
+
if (is_backup_save_enabled() && p_mode_flags & WRITE && !(p_mode_flags & READ)) {
save_path = path;
path = path + ".tmp";
- //print_line("saving instead to "+path);
}
f = _wfopen(path.c_str(), mode_string);