Left: | ||
Right: |
OLD | NEW |
---|---|
1 #include <AdblockPlus/DefaultFileSystem.h> | 1 #include <AdblockPlus/DefaultFileSystem.h> |
2 #include <cstdio> | 2 #include <cstdio> |
3 #include <cstring> | 3 #include <cstring> |
4 #include <fstream> | 4 #include <fstream> |
5 #include <stdexcept> | 5 #include <stdexcept> |
6 | 6 |
7 #include <cerrno> | 7 #include <cerrno> |
8 #include <sys/types.h> | 8 #include <sys/types.h> |
9 #include <sys/stat.h> | 9 #include <sys/stat.h> |
10 | 10 |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
78 FileSystem::StatResult result; | 78 FileSystem::StatResult result; |
79 result.exists = true; | 79 result.exists = true; |
80 result.isFile = S_ISREG(nativeStat.st_mode); | 80 result.isFile = S_ISREG(nativeStat.st_mode); |
81 result.isDirectory = S_ISDIR(nativeStat.st_mode); | 81 result.isDirectory = S_ISDIR(nativeStat.st_mode); |
82 result.lastModified = static_cast<int64_t>(nativeStat.st_mtime) * 1000; | 82 result.lastModified = static_cast<int64_t>(nativeStat.st_mtime) * 1000; |
83 return result; | 83 return result; |
84 } | 84 } |
85 | 85 |
86 std::string DefaultFileSystem::Resolve(const std::string& path) const | 86 std::string DefaultFileSystem::Resolve(const std::string& path) const |
87 { | 87 { |
88 #ifdef WIN32 | 88 return basePath + "\\" + path; |
Felix Dahlke
2013/04/30 09:14:52
\\ won't work on UNIX, but I think / should work e
Wladimir Palant
2013/04/30 09:29:50
1) This path separator is Windows-specific. Please
| |
89 // Resolve to LocalLow folder | 89 } |
90 | 90 |
91 OSVERSIONINFOEX osvi; | 91 void DefaultFileSystem::SetBasePath(const std::string& path) |
92 ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX)); | 92 { |
93 osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX); | |
94 BOOL res = GetVersionEx((OSVERSIONINFO*) &osvi); | |
95 | 93 |
96 if(res == 0 ) return std::string(path); | 94 if (path.rfind('\\') == (path.length() - 1)) |
Felix Dahlke
2013/04/30 09:14:52
How about if (*path.rbegin() == '\\')?
This also
Wladimir Palant
2013/04/30 09:29:50
Please search for PATH_SEPARATOR here as well, not
| |
97 | |
98 std::wstring resolvedW = L""; | |
99 wchar_t resolvedPath[MAX_PATH]; | |
100 HRESULT hr; | |
101 if (osvi.dwMajorVersion >= 6) | |
102 { | 95 { |
103 hr = SHGetFolderPath(NULL, CSIDL_LOCAL_APPDATA, 0, 0, resolvedPath); | 96 basePath = path.substr(0, path.length() - 1); |
Felix Dahlke
2013/04/30 09:14:52
Never used this, but basePath.pop_back(); seems to
| |
104 } | 97 } |
105 else | 98 else |
106 { | 99 { |
107 hr = SHGetFolderPath(NULL, CSIDL_APPDATA, 0, 0, resolvedPath); | 100 basePath = path; |
108 } | 101 } |
109 if (FAILED(hr)) | |
110 return std::string(path); | |
111 resolvedW.assign(resolvedPath); | |
112 | |
113 // TODO: Better conversion here | |
114 std::string resolved(resolvedW.begin(), resolvedW.end()); | |
115 if (osvi.dwMajorVersion >= 6) | |
116 { | |
117 resolved.append("Low\\AdblockPlus\\"); | |
118 } | |
119 else | |
120 { | |
121 resolved.append("\\AdblockPlus\\"); | |
122 } | |
123 resolved.append(path); | |
124 return resolved; | |
125 #else | |
126 return std::string(path); | |
127 #endif | |
128 } | 102 } |
129 | 103 |
OLD | NEW |