| OLD | NEW | 
|---|
| 1 /* | 1 /* | 
| 2  * This file is part of Adblock Plus <https://adblockplus.org/>, | 2  * This file is part of Adblock Plus <https://adblockplus.org/>, | 
| 3  * Copyright (C) 2006-2017 eyeo GmbH | 3  * Copyright (C) 2006-2017 eyeo GmbH | 
| 4  * | 4  * | 
| 5  * Adblock Plus is free software: you can redistribute it and/or modify | 5  * Adblock Plus is free software: you can redistribute it and/or modify | 
| 6  * it under the terms of the GNU General Public License version 3 as | 6  * it under the terms of the GNU General Public License version 3 as | 
| 7  * published by the Free Software Foundation. | 7  * published by the Free Software Foundation. | 
| 8  * | 8  * | 
| 9  * Adblock Plus is distributed in the hope that it will be useful, | 9  * Adblock Plus is distributed in the hope that it will be useful, | 
| 10  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 68 | 68 | 
| 69 std::shared_ptr<std::istream> | 69 std::shared_ptr<std::istream> | 
| 70 DefaultFileSystem::Read(const std::string& path) const | 70 DefaultFileSystem::Read(const std::string& path) const | 
| 71 { | 71 { | 
| 72   std::shared_ptr<std::istream> result(new std::ifstream(NormalizePath(path).c_s
     tr())); | 72   std::shared_ptr<std::istream> result(new std::ifstream(NormalizePath(path).c_s
     tr())); | 
| 73   if (result->fail()) | 73   if (result->fail()) | 
| 74     throw RuntimeErrorWithErrno("Failed to open " + path); | 74     throw RuntimeErrorWithErrno("Failed to open " + path); | 
| 75   return result; | 75   return result; | 
| 76 } | 76 } | 
| 77 | 77 | 
|  | 78 void DefaultFileSystem::Read(const std::string& path, | 
|  | 79                              const ReadCallback& callback) const | 
|  | 80 { | 
|  | 81   try | 
|  | 82   { | 
|  | 83     auto result = Read(path); | 
|  | 84     callback(result); | 
|  | 85   } | 
|  | 86   catch (...) | 
|  | 87   { | 
|  | 88   } | 
|  | 89 } | 
|  | 90 | 
| 78 void DefaultFileSystem::Write(const std::string& path, | 91 void DefaultFileSystem::Write(const std::string& path, | 
| 79                               std::istream& data) | 92                               std::istream& data) | 
| 80 { | 93 { | 
| 81   std::ofstream file(NormalizePath(path).c_str(), std::ios_base::out | std::ios_
     base::binary); | 94   std::ofstream file(NormalizePath(path).c_str(), std::ios_base::out | std::ios_
     base::binary); | 
| 82   file << Utils::Slurp(data); | 95   file << Utils::Slurp(data); | 
| 83 } | 96 } | 
| 84 | 97 | 
|  | 98 void DefaultFileSystem::Write(const std::string& path, | 
|  | 99                               std::istream& data, | 
|  | 100                               const Callback& callback) | 
|  | 101 { | 
|  | 102   Write(path, data); | 
|  | 103   callback(); | 
|  | 104 } | 
|  | 105 | 
| 85 void DefaultFileSystem::Move(const std::string& fromPath, | 106 void DefaultFileSystem::Move(const std::string& fromPath, | 
| 86                              const std::string& toPath) | 107                              const std::string& toPath) | 
| 87 { | 108 { | 
| 88   if (rename(NormalizePath(fromPath).c_str(), NormalizePath(toPath).c_str())) | 109   if (rename(NormalizePath(fromPath).c_str(), NormalizePath(toPath).c_str())) | 
| 89     throw RuntimeErrorWithErrno("Failed to move " + fromPath + " to " + toPath); | 110     throw RuntimeErrorWithErrno("Failed to move " + fromPath + " to " + toPath); | 
| 90 } | 111 } | 
| 91 | 112 | 
|  | 113 void DefaultFileSystem::Move(const std::string& fromPath, | 
|  | 114                              const std::string& toPath, | 
|  | 115                              const Callback& callback) | 
|  | 116 { | 
|  | 117   try | 
|  | 118   { | 
|  | 119     Move(fromPath, toPath); | 
|  | 120     callback(); | 
|  | 121   } | 
|  | 122   catch (...) | 
|  | 123   { | 
|  | 124   } | 
|  | 125 } | 
|  | 126 | 
| 92 void DefaultFileSystem::Remove(const std::string& path) | 127 void DefaultFileSystem::Remove(const std::string& path) | 
| 93 { | 128 { | 
| 94   if (remove(NormalizePath(path).c_str())) | 129   if (remove(NormalizePath(path).c_str())) | 
| 95     throw RuntimeErrorWithErrno("Failed to remove " + path); | 130     throw RuntimeErrorWithErrno("Failed to remove " + path); | 
| 96 } | 131 } | 
| 97 | 132 | 
|  | 133 void DefaultFileSystem::Remove(const std::string& path, | 
|  | 134                                const Callback& callback) | 
|  | 135 { | 
|  | 136   try | 
|  | 137   { | 
|  | 138     Remove(path); | 
|  | 139     callback(); | 
|  | 140   } | 
|  | 141   catch (...) | 
|  | 142   { | 
|  | 143   } | 
|  | 144 } | 
|  | 145 | 
| 98 FileSystem::StatResult DefaultFileSystem::Stat(const std::string& path) const | 146 FileSystem::StatResult DefaultFileSystem::Stat(const std::string& path) const | 
| 99 { | 147 { | 
| 100   FileSystem::StatResult result; | 148   FileSystem::StatResult result; | 
| 101 #ifdef WIN32 | 149 #ifdef WIN32 | 
| 102   WIN32_FILE_ATTRIBUTE_DATA data; | 150   WIN32_FILE_ATTRIBUTE_DATA data; | 
| 103   if (!GetFileAttributesExW(NormalizePath(path).c_str(), GetFileExInfoStandard, 
     &data)) | 151   if (!GetFileAttributesExW(NormalizePath(path).c_str(), GetFileExInfoStandard, 
     &data)) | 
| 104   { | 152   { | 
| 105     DWORD err = GetLastError(); | 153     DWORD err = GetLastError(); | 
| 106     if (err == ERROR_FILE_NOT_FOUND || | 154     if (err == ERROR_FILE_NOT_FOUND || | 
| 107         err == ERROR_PATH_NOT_FOUND || | 155         err == ERROR_PATH_NOT_FOUND || | 
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 154 #if _POSIX_C_SOURCE >= 200809L | 202 #if _POSIX_C_SOURCE >= 200809L | 
| 155   result.lastModified = static_cast<int64_t>(nativeStat.st_mtim.tv_sec) * MSEC_I
     N_SEC | 203   result.lastModified = static_cast<int64_t>(nativeStat.st_mtim.tv_sec) * MSEC_I
     N_SEC | 
| 156                       +  static_cast<int64_t>(nativeStat.st_mtim.tv_nsec) / NSEC
     _IN_MSEC; | 204                       +  static_cast<int64_t>(nativeStat.st_mtim.tv_nsec) / NSEC
     _IN_MSEC; | 
| 157 #else | 205 #else | 
| 158   result.lastModified = static_cast<int64_t>(nativeStat.st_mtime) * MSEC_IN_SEC; | 206   result.lastModified = static_cast<int64_t>(nativeStat.st_mtime) * MSEC_IN_SEC; | 
| 159 #endif | 207 #endif | 
| 160   return result; | 208   return result; | 
| 161 #endif | 209 #endif | 
| 162 } | 210 } | 
| 163 | 211 | 
|  | 212 void DefaultFileSystem::Stat(const std::string& path, | 
|  | 213                              const StatCallback& callback) const | 
|  | 214 { | 
|  | 215   try | 
|  | 216   { | 
|  | 217     auto stats = Stat(path); | 
|  | 218     callback(stats); | 
|  | 219   } | 
|  | 220   catch (...) | 
|  | 221   { | 
|  | 222   } | 
|  | 223 } | 
|  | 224 | 
| 164 std::string DefaultFileSystem::Resolve(const std::string& path) const | 225 std::string DefaultFileSystem::Resolve(const std::string& path) const | 
| 165 { | 226 { | 
| 166   if (basePath == "") | 227   if (basePath == "") | 
| 167   { | 228   { | 
| 168     return path; | 229     return path; | 
| 169   } | 230   } | 
| 170   else | 231   else | 
| 171   { | 232   { | 
| 172 #ifdef _WIN32 | 233 #ifdef _WIN32 | 
| 173   if (PathIsRelative(NormalizePath(path).c_str())) | 234   if (PathIsRelative(NormalizePath(path).c_str())) | 
| 174 #else | 235 #else | 
| 175   if (path.length() && *path.begin() != PATH_SEPARATOR) | 236   if (path.length() && *path.begin() != PATH_SEPARATOR) | 
| 176 #endif | 237 #endif | 
| 177     { | 238     { | 
| 178       return basePath + PATH_SEPARATOR + path; | 239       return basePath + PATH_SEPARATOR + path; | 
| 179     } | 240     } | 
| 180     else | 241     else | 
| 181     { | 242     { | 
| 182       return path; | 243       return path; | 
| 183     } | 244     } | 
| 184   } | 245   } | 
| 185 } | 246 } | 
|  | 247 void DefaultFileSystem::Resolve(const std::string& path, | 
|  | 248                                 const ResolveCallback& callback) const | 
|  | 249 { | 
|  | 250   callback(Resolve(path)); | 
|  | 251 } | 
| 186 | 252 | 
| 187 void DefaultFileSystem::SetBasePath(const std::string& path) | 253 void DefaultFileSystem::SetBasePath(const std::string& path) | 
| 188 { | 254 { | 
| 189   basePath = path; | 255   basePath = path; | 
| 190 | 256 | 
| 191   if (*basePath.rbegin() == PATH_SEPARATOR) | 257   if (*basePath.rbegin() == PATH_SEPARATOR) | 
| 192   { | 258   { | 
| 193     basePath.resize(basePath.size() - 1); | 259     basePath.resize(basePath.size() - 1); | 
| 194   } | 260   } | 
| 195 } | 261 } | 
| 196 | 262 | 
| OLD | NEW | 
|---|