summaryrefslogtreecommitdiff
path: root/src/common/file_util.cpp
diff options
context:
space:
mode:
authorGravatar Lioncash2018-04-26 19:17:35 -0400
committerGravatar Lioncash2018-04-26 20:09:58 -0400
commit3cfe77ae758d02a969831180fa3100d269237343 (patch)
tree8cfdf870baf70a5d260a0840e25f1a42a9aed362 /src/common/file_util.cpp
parentMerge pull request #402 from lioncash/core (diff)
downloadyuzu-3cfe77ae758d02a969831180fa3100d269237343.tar.gz
yuzu-3cfe77ae758d02a969831180fa3100d269237343.tar.xz
yuzu-3cfe77ae758d02a969831180fa3100d269237343.zip
common: Move logging macros over to new fmt-capable macros where applicable
Diffstat (limited to 'src/common/file_util.cpp')
-rw-r--r--src/common/file_util.cpp96
1 files changed, 48 insertions, 48 deletions
diff --git a/src/common/file_util.cpp b/src/common/file_util.cpp
index 4e1d702f7..37f9e996c 100644
--- a/src/common/file_util.cpp
+++ b/src/common/file_util.cpp
@@ -118,7 +118,7 @@ bool IsDirectory(const std::string& filename) {
118#endif 118#endif
119 119
120 if (result < 0) { 120 if (result < 0) {
121 LOG_DEBUG(Common_Filesystem, "stat failed on %s: %s", filename.c_str(), GetLastErrorMsg()); 121 NGLOG_DEBUG(Common_Filesystem, "stat failed on {}: {}", filename, GetLastErrorMsg());
122 return false; 122 return false;
123 } 123 }
124 124
@@ -128,31 +128,29 @@ bool IsDirectory(const std::string& filename) {
128// Deletes a given filename, return true on success 128// Deletes a given filename, return true on success
129// Doesn't supports deleting a directory 129// Doesn't supports deleting a directory
130bool Delete(const std::string& filename) { 130bool Delete(const std::string& filename) {
131 LOG_TRACE(Common_Filesystem, "file %s", filename.c_str()); 131 NGLOG_TRACE(Common_Filesystem, "file {}", filename);
132 132
133 // Return true because we care about the file no 133 // Return true because we care about the file no
134 // being there, not the actual delete. 134 // being there, not the actual delete.
135 if (!Exists(filename)) { 135 if (!Exists(filename)) {
136 LOG_DEBUG(Common_Filesystem, "%s does not exist", filename.c_str()); 136 NGLOG_DEBUG(Common_Filesystem, "{} does not exist", filename);
137 return true; 137 return true;
138 } 138 }
139 139
140 // We can't delete a directory 140 // We can't delete a directory
141 if (IsDirectory(filename)) { 141 if (IsDirectory(filename)) {
142 LOG_ERROR(Common_Filesystem, "Failed: %s is a directory", filename.c_str()); 142 NGLOG_ERROR(Common_Filesystem, "Failed: {} is a directory", filename);
143 return false; 143 return false;
144 } 144 }
145 145
146#ifdef _WIN32 146#ifdef _WIN32
147 if (!DeleteFileW(Common::UTF8ToUTF16W(filename).c_str())) { 147 if (!DeleteFileW(Common::UTF8ToUTF16W(filename).c_str())) {
148 LOG_ERROR(Common_Filesystem, "DeleteFile failed on %s: %s", filename.c_str(), 148 NGLOG_ERROR(Common_Filesystem, "DeleteFile failed on {}: {}", filename, GetLastErrorMsg());
149 GetLastErrorMsg());
150 return false; 149 return false;
151 } 150 }
152#else 151#else
153 if (unlink(filename.c_str()) == -1) { 152 if (unlink(filename.c_str()) == -1) {
154 LOG_ERROR(Common_Filesystem, "unlink failed on %s: %s", filename.c_str(), 153 NGLOG_ERROR(Common_Filesystem, "unlink failed on {}: {}", filename, GetLastErrorMsg());
155 GetLastErrorMsg());
156 return false; 154 return false;
157 } 155 }
158#endif 156#endif
@@ -162,16 +160,16 @@ bool Delete(const std::string& filename) {
162 160
163// Returns true if successful, or path already exists. 161// Returns true if successful, or path already exists.
164bool CreateDir(const std::string& path) { 162bool CreateDir(const std::string& path) {
165 LOG_TRACE(Common_Filesystem, "directory %s", path.c_str()); 163 NGLOG_TRACE(Common_Filesystem, "directory {}", path);
166#ifdef _WIN32 164#ifdef _WIN32
167 if (::CreateDirectoryW(Common::UTF8ToUTF16W(path).c_str(), nullptr)) 165 if (::CreateDirectoryW(Common::UTF8ToUTF16W(path).c_str(), nullptr))
168 return true; 166 return true;
169 DWORD error = GetLastError(); 167 DWORD error = GetLastError();
170 if (error == ERROR_ALREADY_EXISTS) { 168 if (error == ERROR_ALREADY_EXISTS) {
171 LOG_DEBUG(Common_Filesystem, "CreateDirectory failed on %s: already exists", path.c_str()); 169 NGLOG_DEBUG(Common_Filesystem, "CreateDirectory failed on {}: already exists", path);
172 return true; 170 return true;
173 } 171 }
174 LOG_ERROR(Common_Filesystem, "CreateDirectory failed on %s: %i", path.c_str(), error); 172 NGLOG_ERROR(Common_Filesystem, "CreateDirectory failed on {}: {}", path, error);
175 return false; 173 return false;
176#else 174#else
177 if (mkdir(path.c_str(), 0755) == 0) 175 if (mkdir(path.c_str(), 0755) == 0)
@@ -180,11 +178,11 @@ bool CreateDir(const std::string& path) {
180 int err = errno; 178 int err = errno;
181 179
182 if (err == EEXIST) { 180 if (err == EEXIST) {
183 LOG_DEBUG(Common_Filesystem, "mkdir failed on %s: already exists", path.c_str()); 181 NGLOG_DEBUG(Common_Filesystem, "mkdir failed on {}: already exists", path);
184 return true; 182 return true;
185 } 183 }
186 184
187 LOG_ERROR(Common_Filesystem, "mkdir failed on %s: %s", path.c_str(), strerror(err)); 185 NGLOG_ERROR(Common_Filesystem, "mkdir failed on {}: {}", path, strerror(err));
188 return false; 186 return false;
189#endif 187#endif
190} 188}
@@ -192,10 +190,10 @@ bool CreateDir(const std::string& path) {
192// Creates the full path of fullPath returns true on success 190// Creates the full path of fullPath returns true on success
193bool CreateFullPath(const std::string& fullPath) { 191bool CreateFullPath(const std::string& fullPath) {
194 int panicCounter = 100; 192 int panicCounter = 100;
195 LOG_TRACE(Common_Filesystem, "path %s", fullPath.c_str()); 193 NGLOG_TRACE(Common_Filesystem, "path {}", fullPath);
196 194
197 if (FileUtil::Exists(fullPath)) { 195 if (FileUtil::Exists(fullPath)) {
198 LOG_DEBUG(Common_Filesystem, "path exists %s", fullPath.c_str()); 196 NGLOG_DEBUG(Common_Filesystem, "path exists {}", fullPath);
199 return true; 197 return true;
200 } 198 }
201 199
@@ -211,14 +209,14 @@ bool CreateFullPath(const std::string& fullPath) {
211 // Include the '/' so the first call is CreateDir("/") rather than CreateDir("") 209 // Include the '/' so the first call is CreateDir("/") rather than CreateDir("")
212 std::string const subPath(fullPath.substr(0, position + 1)); 210 std::string const subPath(fullPath.substr(0, position + 1));
213 if (!FileUtil::IsDirectory(subPath) && !FileUtil::CreateDir(subPath)) { 211 if (!FileUtil::IsDirectory(subPath) && !FileUtil::CreateDir(subPath)) {
214 LOG_ERROR(Common, "CreateFullPath: directory creation failed"); 212 NGLOG_ERROR(Common, "CreateFullPath: directory creation failed");
215 return false; 213 return false;
216 } 214 }
217 215
218 // A safety check 216 // A safety check
219 panicCounter--; 217 panicCounter--;
220 if (panicCounter <= 0) { 218 if (panicCounter <= 0) {
221 LOG_ERROR(Common, "CreateFullPath: directory structure is too deep"); 219 NGLOG_ERROR(Common, "CreateFullPath: directory structure is too deep");
222 return false; 220 return false;
223 } 221 }
224 position++; 222 position++;
@@ -227,11 +225,11 @@ bool CreateFullPath(const std::string& fullPath) {
227 225
228// Deletes a directory filename, returns true on success 226// Deletes a directory filename, returns true on success
229bool DeleteDir(const std::string& filename) { 227bool DeleteDir(const std::string& filename) {
230 LOG_TRACE(Common_Filesystem, "directory %s", filename.c_str()); 228 NGLOG_TRACE(Common_Filesystem, "directory {}", filename);
231 229
232 // check if a directory 230 // check if a directory
233 if (!FileUtil::IsDirectory(filename)) { 231 if (!FileUtil::IsDirectory(filename)) {
234 LOG_ERROR(Common_Filesystem, "Not a directory %s", filename.c_str()); 232 NGLOG_ERROR(Common_Filesystem, "Not a directory {}", filename);
235 return false; 233 return false;
236 } 234 }
237 235
@@ -242,14 +240,14 @@ bool DeleteDir(const std::string& filename) {
242 if (rmdir(filename.c_str()) == 0) 240 if (rmdir(filename.c_str()) == 0)
243 return true; 241 return true;
244#endif 242#endif
245 LOG_ERROR(Common_Filesystem, "failed %s: %s", filename.c_str(), GetLastErrorMsg()); 243 NGLOG_ERROR(Common_Filesystem, "failed {}: {}", filename, GetLastErrorMsg());
246 244
247 return false; 245 return false;
248} 246}
249 247
250// renames file srcFilename to destFilename, returns true on success 248// renames file srcFilename to destFilename, returns true on success
251bool Rename(const std::string& srcFilename, const std::string& destFilename) { 249bool Rename(const std::string& srcFilename, const std::string& destFilename) {
252 LOG_TRACE(Common_Filesystem, "%s --> %s", srcFilename.c_str(), destFilename.c_str()); 250 NGLOG_TRACE(Common_Filesystem, "{} --> {}", srcFilename, destFilename);
253#ifdef _WIN32 251#ifdef _WIN32
254 if (_wrename(Common::UTF8ToUTF16W(srcFilename).c_str(), 252 if (_wrename(Common::UTF8ToUTF16W(srcFilename).c_str(),
255 Common::UTF8ToUTF16W(destFilename).c_str()) == 0) 253 Common::UTF8ToUTF16W(destFilename).c_str()) == 0)
@@ -258,21 +256,21 @@ bool Rename(const std::string& srcFilename, const std::string& destFilename) {
258 if (rename(srcFilename.c_str(), destFilename.c_str()) == 0) 256 if (rename(srcFilename.c_str(), destFilename.c_str()) == 0)
259 return true; 257 return true;
260#endif 258#endif
261 LOG_ERROR(Common_Filesystem, "failed %s --> %s: %s", srcFilename.c_str(), destFilename.c_str(), 259 NGLOG_ERROR(Common_Filesystem, "failed {} --> {}: {}", srcFilename, destFilename,
262 GetLastErrorMsg()); 260 GetLastErrorMsg());
263 return false; 261 return false;
264} 262}
265 263
266// copies file srcFilename to destFilename, returns true on success 264// copies file srcFilename to destFilename, returns true on success
267bool Copy(const std::string& srcFilename, const std::string& destFilename) { 265bool Copy(const std::string& srcFilename, const std::string& destFilename) {
268 LOG_TRACE(Common_Filesystem, "%s --> %s", srcFilename.c_str(), destFilename.c_str()); 266 NGLOG_TRACE(Common_Filesystem, "{} --> {}", srcFilename, destFilename);
269#ifdef _WIN32 267#ifdef _WIN32
270 if (CopyFileW(Common::UTF8ToUTF16W(srcFilename).c_str(), 268 if (CopyFileW(Common::UTF8ToUTF16W(srcFilename).c_str(),
271 Common::UTF8ToUTF16W(destFilename).c_str(), FALSE)) 269 Common::UTF8ToUTF16W(destFilename).c_str(), FALSE))
272 return true; 270 return true;
273 271
274 LOG_ERROR(Common_Filesystem, "failed %s --> %s: %s", srcFilename.c_str(), destFilename.c_str(), 272 NGLOG_ERROR(Common_Filesystem, "failed {} --> {}: {}", srcFilename, destFilename,
275 GetLastErrorMsg()); 273 GetLastErrorMsg());
276 return false; 274 return false;
277#else 275#else
278 276
@@ -284,8 +282,8 @@ bool Copy(const std::string& srcFilename, const std::string& destFilename) {
284 // Open input file 282 // Open input file
285 FILE* input = fopen(srcFilename.c_str(), "rb"); 283 FILE* input = fopen(srcFilename.c_str(), "rb");
286 if (!input) { 284 if (!input) {
287 LOG_ERROR(Common_Filesystem, "opening input failed %s --> %s: %s", srcFilename.c_str(), 285 NGLOG_ERROR(Common_Filesystem, "opening input failed {} --> {}: {}", srcFilename,
288 destFilename.c_str(), GetLastErrorMsg()); 286 destFilename, GetLastErrorMsg());
289 return false; 287 return false;
290 } 288 }
291 289
@@ -293,8 +291,8 @@ bool Copy(const std::string& srcFilename, const std::string& destFilename) {
293 FILE* output = fopen(destFilename.c_str(), "wb"); 291 FILE* output = fopen(destFilename.c_str(), "wb");
294 if (!output) { 292 if (!output) {
295 fclose(input); 293 fclose(input);
296 LOG_ERROR(Common_Filesystem, "opening output failed %s --> %s: %s", srcFilename.c_str(), 294 NGLOG_ERROR(Common_Filesystem, "opening output failed {} --> {}: {}", srcFilename,
297 destFilename.c_str(), GetLastErrorMsg()); 295 destFilename, GetLastErrorMsg());
298 return false; 296 return false;
299 } 297 }
300 298
@@ -304,8 +302,8 @@ bool Copy(const std::string& srcFilename, const std::string& destFilename) {
304 size_t rnum = fread(buffer, sizeof(char), BSIZE, input); 302 size_t rnum = fread(buffer, sizeof(char), BSIZE, input);
305 if (rnum != BSIZE) { 303 if (rnum != BSIZE) {
306 if (ferror(input) != 0) { 304 if (ferror(input) != 0) {
307 LOG_ERROR(Common_Filesystem, "failed reading from source, %s --> %s: %s", 305 NGLOG_ERROR(Common_Filesystem, "failed reading from source, {} --> {}: {}",
308 srcFilename.c_str(), destFilename.c_str(), GetLastErrorMsg()); 306 srcFilename, destFilename, GetLastErrorMsg());
309 goto bail; 307 goto bail;
310 } 308 }
311 } 309 }
@@ -313,8 +311,8 @@ bool Copy(const std::string& srcFilename, const std::string& destFilename) {
313 // write output 311 // write output
314 size_t wnum = fwrite(buffer, sizeof(char), rnum, output); 312 size_t wnum = fwrite(buffer, sizeof(char), rnum, output);
315 if (wnum != rnum) { 313 if (wnum != rnum) {
316 LOG_ERROR(Common_Filesystem, "failed writing to output, %s --> %s: %s", 314 NGLOG_ERROR(Common_Filesystem, "failed writing to output, {} --> {}: {}", srcFilename,
317 srcFilename.c_str(), destFilename.c_str(), GetLastErrorMsg()); 315 destFilename, GetLastErrorMsg());
318 goto bail; 316 goto bail;
319 } 317 }
320 } 318 }
@@ -334,12 +332,12 @@ bail:
334// Returns the size of filename (64bit) 332// Returns the size of filename (64bit)
335u64 GetSize(const std::string& filename) { 333u64 GetSize(const std::string& filename) {
336 if (!Exists(filename)) { 334 if (!Exists(filename)) {
337 LOG_ERROR(Common_Filesystem, "failed %s: No such file", filename.c_str()); 335 NGLOG_ERROR(Common_Filesystem, "failed {}: No such file", filename);
338 return 0; 336 return 0;
339 } 337 }
340 338
341 if (IsDirectory(filename)) { 339 if (IsDirectory(filename)) {
342 LOG_ERROR(Common_Filesystem, "failed %s: is a directory", filename.c_str()); 340 NGLOG_ERROR(Common_Filesystem, "failed {}: is a directory", filename);
343 return 0; 341 return 0;
344 } 342 }
345 343
@@ -350,11 +348,11 @@ u64 GetSize(const std::string& filename) {
350 if (stat(filename.c_str(), &buf) == 0) 348 if (stat(filename.c_str(), &buf) == 0)
351#endif 349#endif
352 { 350 {
353 LOG_TRACE(Common_Filesystem, "%s: %lld", filename.c_str(), (long long)buf.st_size); 351 NGLOG_TRACE(Common_Filesystem, "{}: {}", filename, buf.st_size);
354 return buf.st_size; 352 return buf.st_size;
355 } 353 }
356 354
357 LOG_ERROR(Common_Filesystem, "Stat failed %s: %s", filename.c_str(), GetLastErrorMsg()); 355 NGLOG_ERROR(Common_Filesystem, "Stat failed {}: {}", filename, GetLastErrorMsg());
358 return 0; 356 return 0;
359} 357}
360 358
@@ -362,7 +360,7 @@ u64 GetSize(const std::string& filename) {
362u64 GetSize(const int fd) { 360u64 GetSize(const int fd) {
363 struct stat buf; 361 struct stat buf;
364 if (fstat(fd, &buf) != 0) { 362 if (fstat(fd, &buf) != 0) {
365 LOG_ERROR(Common_Filesystem, "GetSize: stat failed %i: %s", fd, GetLastErrorMsg()); 363 NGLOG_ERROR(Common_Filesystem, "GetSize: stat failed {}: {}", fd, GetLastErrorMsg());
366 return 0; 364 return 0;
367 } 365 }
368 return buf.st_size; 366 return buf.st_size;
@@ -373,12 +371,14 @@ u64 GetSize(FILE* f) {
373 // can't use off_t here because it can be 32-bit 371 // can't use off_t here because it can be 32-bit
374 u64 pos = ftello(f); 372 u64 pos = ftello(f);
375 if (fseeko(f, 0, SEEK_END) != 0) { 373 if (fseeko(f, 0, SEEK_END) != 0) {
376 LOG_ERROR(Common_Filesystem, "GetSize: seek failed %p: %s", f, GetLastErrorMsg()); 374 NGLOG_ERROR(Common_Filesystem, "GetSize: seek failed {}: {}", fmt::ptr(f),
375 GetLastErrorMsg());
377 return 0; 376 return 0;
378 } 377 }
379 u64 size = ftello(f); 378 u64 size = ftello(f);
380 if ((size != pos) && (fseeko(f, pos, SEEK_SET) != 0)) { 379 if ((size != pos) && (fseeko(f, pos, SEEK_SET) != 0)) {
381 LOG_ERROR(Common_Filesystem, "GetSize: seek failed %p: %s", f, GetLastErrorMsg()); 380 NGLOG_ERROR(Common_Filesystem, "GetSize: seek failed {}: {}", fmt::ptr(f),
381 GetLastErrorMsg());
382 return 0; 382 return 0;
383 } 383 }
384 return size; 384 return size;
@@ -386,10 +386,10 @@ u64 GetSize(FILE* f) {
386 386
387// creates an empty file filename, returns true on success 387// creates an empty file filename, returns true on success
388bool CreateEmptyFile(const std::string& filename) { 388bool CreateEmptyFile(const std::string& filename) {
389 LOG_TRACE(Common_Filesystem, "%s", filename.c_str()); 389 NGLOG_TRACE(Common_Filesystem, "{}", filename);
390 390
391 if (!FileUtil::IOFile(filename, "wb")) { 391 if (!FileUtil::IOFile(filename, "wb")) {
392 LOG_ERROR(Common_Filesystem, "failed %s: %s", filename.c_str(), GetLastErrorMsg()); 392 NGLOG_ERROR(Common_Filesystem, "failed {}: {}", filename, GetLastErrorMsg());
393 return false; 393 return false;
394 } 394 }
395 395
@@ -398,7 +398,7 @@ bool CreateEmptyFile(const std::string& filename) {
398 398
399bool ForeachDirectoryEntry(unsigned* num_entries_out, const std::string& directory, 399bool ForeachDirectoryEntry(unsigned* num_entries_out, const std::string& directory,
400 DirectoryEntryCallable callback) { 400 DirectoryEntryCallable callback) {
401 LOG_TRACE(Common_Filesystem, "directory %s", directory.c_str()); 401 NGLOG_TRACE(Common_Filesystem, "directory {}", directory);
402 402
403 // How many files + directories we found 403 // How many files + directories we found
404 unsigned found_entries = 0; 404 unsigned found_entries = 0;
@@ -556,7 +556,7 @@ std::string GetCurrentDir() {
556 char* dir; 556 char* dir;
557 if (!(dir = getcwd(nullptr, 0))) { 557 if (!(dir = getcwd(nullptr, 0))) {
558#endif 558#endif
559 LOG_ERROR(Common_Filesystem, "GetCurrentDirectory failed: %s", GetLastErrorMsg()); 559 NGLOG_ERROR(Common_Filesystem, "GetCurrentDirectory failed: {}", GetLastErrorMsg());
560 return nullptr; 560 return nullptr;
561 } 561 }
562#ifdef _WIN32 562#ifdef _WIN32
@@ -676,7 +676,7 @@ std::string GetSysDirectory() {
676#endif 676#endif
677 sysDir += DIR_SEP; 677 sysDir += DIR_SEP;
678 678
679 LOG_DEBUG(Common_Filesystem, "Setting to %s:", sysDir.c_str()); 679 NGLOG_DEBUG(Common_Filesystem, "Setting to {}:", sysDir);
680 return sysDir; 680 return sysDir;
681} 681}
682 682
@@ -692,7 +692,7 @@ const std::string& GetUserPath(const unsigned int DirIDX, const std::string& new
692 if (!FileUtil::IsDirectory(paths[D_USER_IDX])) { 692 if (!FileUtil::IsDirectory(paths[D_USER_IDX])) {
693 paths[D_USER_IDX] = AppDataRoamingDirectory() + DIR_SEP EMU_DATA_DIR DIR_SEP; 693 paths[D_USER_IDX] = AppDataRoamingDirectory() + DIR_SEP EMU_DATA_DIR DIR_SEP;
694 } else { 694 } else {
695 LOG_INFO(Common_Filesystem, "Using the local user directory"); 695 NGLOG_INFO(Common_Filesystem, "Using the local user directory");
696 } 696 }
697 697
698 paths[D_CONFIG_IDX] = paths[D_USER_IDX] + CONFIG_DIR DIR_SEP; 698 paths[D_CONFIG_IDX] = paths[D_USER_IDX] + CONFIG_DIR DIR_SEP;
@@ -719,7 +719,7 @@ const std::string& GetUserPath(const unsigned int DirIDX, const std::string& new
719 719
720 if (!newPath.empty()) { 720 if (!newPath.empty()) {
721 if (!FileUtil::IsDirectory(newPath)) { 721 if (!FileUtil::IsDirectory(newPath)) {
722 LOG_ERROR(Common_Filesystem, "Invalid path specified %s", newPath.c_str()); 722 NGLOG_ERROR(Common_Filesystem, "Invalid path specified {}", newPath);
723 return paths[DirIDX]; 723 return paths[DirIDX];
724 } else { 724 } else {
725 paths[DirIDX] = newPath; 725 paths[DirIDX] = newPath;