summaryrefslogtreecommitdiffstats
path: root/src/common/file_util.cpp (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Revert "Merge pull request #5173 from lioncash/common-fs"Morph2020-12-121-89/+350
| | | | | This reverts commit ce5fcb6bb2c358b0251a2ce87945bda52789a76d, reversing changes made to 6f41763061082d5fa2ab039c554427152243cb46.
* Revert "Merge pull request #5174 from ReinUsesLisp/fs-fix"Morph2020-12-121-28/+2
| | | | | This reverts commit 5fe55b16a11d9ec607fb8a3fdddc77a4393cd96a, reversing changes made to e94dd7e2c4fc3f7ca2c15c01bdc301be2b8a4c1b.
* Revert "Merge pull request #5179 from ReinUsesLisp/fs-path"Morph2020-12-121-1/+1
| | | | | This reverts commit 4e94d0d53af2cdb7b03ef9de23cc29f3565df97a, reversing changes made to 6d6115475b4edccdf1bb4e96ecc3d3b1be319e76.
* Revert "Merge pull request #5181 from Morph1984/5174-review"Morph2020-12-121-3/+9
| | | | | This reverts commit cdb36aef9ec9d30bdef1953f9ed46776ae2f12af, reversing changes made to 5e9b77129f2cf8c039a8d98033cae4ac0f93f515.
* common/file_util: Simplify the behavior of CreateFullPathMorph2020-12-101-9/+3
|
* common/file_util: Let std::filesystem cast from UTF16 to std::stringReinUsesLisp2020-12-091-1/+1
| | | | Fix invalid encoding paths when iterating over a directory on Windows.
* common/file_util: Fix and deprecate CreateFullPath, add CreateDirsReinUsesLisp2020-12-091-2/+23
| | | | | | | | Fix CreateFullPath to have its intended previous behavior (whatever that was), and deprecate it in favor of the new CreateDirs function. Unlike CreateDir, CreateDirs is marked as [[nodiscard]] to avoid new code ignoring its result value.
* common/file_util: Succeed on CreateDir when the directory existsReinUsesLisp2020-12-091-0/+5
|
* file_util: Migrate remaining file handling functions over to std::filesystemLioncash2020-12-091-297/+81
| | | | | | | Converts creation and deletion functions over to std::filesystem, simplifying our file-handling code. Notably with this, CopyDir will now function on Windows.
* file_util: Migrate Exists() and IsDirectory() over to std::filesystemLioncash2020-12-091-53/+8
| | | | Greatly simplifies our file-handling code for these functions.
* common: Enable warnings as errorsLioncash2020-11-021-13/+18
| | | | Cleans up common so that we can enable warnings as errors.
* Merge pull request #4539 from lioncash/discbunnei2020-08-191-2/+2
|\ | | | | common: Silence two discarded result warnings
| * common: Silence two discarded result warningsLioncash2020-08-161-2/+2
| | | | | | | | | | | | | | These are intentionally discarded internally, since the rest of the public API allows querying success. We want all non-internal uses of these functions to be explicitly checked, so we can signify that we intentionally want to discard the return values here.
* | common/fileutil: Convert namespace to Common::FSLioncash2020-08-161-28/+36
|/ | | | | | | | | | | | Migrates a remaining common file over to the Common namespace, making it consistent with the rest of common files. This also allows for high-traffic FS related code to alias the filesystem function namespace as namespace FS = Common::FS; for more concise typing.
* common: Add a screenshots directorylat9nq2020-07-211-0/+1
| | | | Adds a screenshots directory as a path managed by FileUtil.
* Merge pull request #3630 from benru/open-windows-network-filesbunnei2020-04-181-1/+8
|\ | | | | common/file_util: Allow access to files on network shares
| * common/file_util: Allow access to files on network sharesBen Russell2020-04-091-1/+8
| | | | | | | | | | | | | | | | On Windows, network shares use paths like \\server\share\file which were being broken by FileUtil::SanitizePath() removing double slashes. Changed the code in SanitizePath to permit a double-backslash if it occurs at the start of a filepath (on Windows only).
* | file_util: Early-exit in WriteArray and ReadArray if specified lengths are zeroLioncash2020-04-151-0/+28
|/ | | | | | | | | | | | | It's undefined behavior to pass a null pointer to std::fread and std::fwrite, even if the length passed in is zero, so we must perform the precondition checking ourselves. A common case where this can occur is when passing in the data of an empty std::vector and size, as an empty vector will typically have a null internal buffer. While we're at it, we can move the implementation out of line and add debug checks against passing in nullptr to std::fread and std::fwrite.
* common: Port some changes from dolphin (#5127)Vitor K2020-04-011-9/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * IOFile: Make the move constructor and move assignment operator noexcept Certain parts of the standard library try to determine whether or not a transfer operation should either be a copy or a move. The prevalent notion of move constructors/assignment operators is that they should not throw, they simply move an already existing resource somewhere else. This is typically done with 'std::move_if_noexcept'. Like the name says, if a type's move constructor is noexcept, then the functions retrieves an r-value reference (for move semantics), or an l-value (for copy semantics) if it is not noexcept. As IOFile deletes the copy constructor and copy assignment operators, using IOFile with certain parts of the standard library can fail in unexcepted ways (especially when used with various container implementations). This prevents that. * fix various instances of -1 being assigned to unsigned types * do not assign in conditional statements * File/IOFile: Check _tfopen_s properly * common/file_util.cpp: address review comments Co-authored-by: Lioncash <mathew1800@gmail.com> Co-authored-by: Shawn Hoffman <godisgovernment@gmail.com> Co-authored-by: Sepalani <sepalani@hotmail.fr>
* common/file_util: Silence -WswitchReinUsesLisp2019-10-051-1/+2
|
* common/file_util: Remove unnecessary return at end of void StripTailDirSlashes()Lioncash2019-05-231-6/+8
| | | | While we're at it, also invert the conditional into a guard clause.
* common/file_util: Make GetCurrentDir() return a std::optionalLioncash2019-05-231-2/+2
| | | | | | | | | | | nullptr was being returned in the error case, which, at a glance may seem perfectly OK... until you realize that std::string has the invariant that it may not be constructed from a null pointer. This means that if this error case was ever hit, then the application would most likely crash from a thrown exception in std::string's constructor. Instead, we can change the function to return an optional value, indicating if a failure occurred.
* common/file_util: Remove duplicated documentation commentsLioncash2019-05-231-25/+0
| | | | | These are already present within the header, so they don't need to be repeated in the cpp file.
* common/file_util: Make ReadFileToString and WriteStringToFile consistentLioncash2019-05-231-3/+3
| | | | | | | | | | | Makes the parameter ordering consistent, and also makes the filename parameter a std::string. A std::string would be constructed anyways with the previous code, as IOFile's only constructor with a filepath is one taking a std::string. We can also make WriteStringToFile's string parameter utilize a std::string_view for the string, making use of our previous changes to IOFile.
* file_util: Add shader directoryReinUsesLisp2019-02-071-0/+1
|
* only redefine 64 bit file operation for MSVCWeiyi Wang2018-10-231-5/+8
| | | | MinGW provides POSIX functions
* common_paths: Add Load and Dump dirsZach Hilman2018-09-221-0/+2
|
* Port #4182 from Citra: "Prefix all size_t with std::"fearlessTobi2018-09-151-8/+8
|
* file_util: Correct return value in early exit of ReadFileToString()Lioncash2018-08-241-1/+1
| | | | | While still essentially being zero, we should be returning a numeric value here, not a boolean typed value.
* file_util: Add getter for NAND registration directoryZach Hilman2018-08-121-0/+6
|
* file_util: Use enum instead of bool for specifing path behaviorZach Hilman2018-08-091-4/+4
|
* file_util: Add platform-specific slash option to SanitizePathZach Hilman2018-08-091-3/+13
|
* Allow key loading from %YUZU_DIR%/keys in addition to ~/.switchZach Hilman2018-08-011-0/+1
|
* Use SHGetKnownFolderPath instead of SHGetFolderPathAZach Hilman2018-08-011-3/+4
|
* Extract mbedtls to cpp fileZach Hilman2018-08-011-1/+1
|
* Remove files that are not usedZach Hilman2018-08-011-0/+12
|
* VFS Regression and Accuracy Fixes (#776)Zach Hilman2018-07-241-1/+10
| | | | | | | | | | | | | | | | * Regression and Mode Fixes * Review Fixes * string_view correction * Add operator& for FileSys::Mode * Return std::string from SanitizePath * Farming Simulator Fix * Use != With mode operator&
* Merge pull request #768 from lioncash/string-viewbunnei2018-07-221-34/+48
|\ | | | | file_util, vfs: Use std::string_view where applicable
| * file_util, vfs: Use std::string_view where applicableLioncash2018-07-221-34/+48
| | | | | | | | | | Avoids unnecessary construction of std::string instances where applicable.
* | Merge pull request #765 from lioncash/filebunnei2018-07-221-24/+14
|\ \ | |/ |/| file_util: Remove goto usages from Copy()
| * file_util: Remove goto usages from Copy()Lioncash2018-07-221-24/+14
| | | | | | | | | | | | We can just leverage std::unique_ptr to automatically close these for us in error cases instead of jumping to the end of the function to call fclose on them.
* | file_util: Use a u64 to represent number of entriesLioncash2018-07-221-9/+9
| | | | | | | | | | This avoids a truncating cast on size. I doubt we'd ever traverse a directory this large, however we also shouldn't truncate sizes away.
* | file_util: std::move FST entries in ScanDirectoryTree()Lioncash2018-07-221-1/+1
|/ | | | Avoids unnecessary copies when building up the FST entries.
* Merge pull request #759 from lioncash/redundantbunnei2018-07-221-2/+1
|\ | | | | file_util: Remove redundant duplicate return in GetPathWithoutTop()
| * file_util: Remove explicit type from std::min() in GetPathWithoutTop()Lioncash2018-07-211-1/+1
| | | | | | | | | | Given both operands are the same type, there won't be an issue with overload selection that requires making this explicit.
| * file_util: Remove redundant duplicate return in GetPathWithoutTop()Lioncash2018-07-211-1/+0
| |
* | file_util: Use an enum class for GetUserPath()Lioncash2018-07-211-33/+35
|/ | | | | | | | | | | | | Instead of using an unsigned int as a parameter and expecting a user to always pass in the correct values, we can just convert the enum into an enum class and use that type as the parameter type instead, which makes the interface more type safe. We also get rid of the bookkeeping "NUM_" element in the enum by just using an unordered map. This function is generally low-frequency in terms of calls (and I'd hope so, considering otherwise would mean we're slamming the disk with IO all the time) so I'd consider this acceptable in this case.
* file_util: return string by const reference for GetExeDirectory()Lioncash2018-07-191-1/+1
| | | | | This disallows modifying the internal string buffer (which shouldn't be modified anyhow).
* Virtual Filesystem 2: Electric Boogaloo (#676)Zach Hilman2018-07-191-26/+81
| | | | | | | | | | * Virtual Filesystem * Fix delete bug and documentate * Review fixes + other stuff * Fix puyo regression
* Revert "Virtual Filesystem (#597)"bunnei2018-07-081-67/+26
| | | | This reverts commit 77c684c1140f6bf3fb7d4560d06d2efb1a2ee5e2.
* Merge pull request #630 from FearlessTobi/remove-citra-referencesbunnei2018-07-061-1/+1
|\ | | | | Remove some references to Citra
| * Remove some references to CitrafearlessTobi2018-07-061-1/+1
| |
* | Virtual Filesystem (#597)Zach Hilman2018-07-061-26/+67
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Add VfsFile and VfsDirectory classes * Finish abstract Vfs classes * Implement RealVfsFile (computer fs backend) * Finish RealVfsFile and RealVfsDirectory * Finished OffsetVfsFile * More changes * Fix import paths * Major refactor * Remove double const * Use experimental/filesystem or filesystem depending on compiler * Port partition_filesystem * More changes * More Overhaul * FSP_SRV fixes * Fixes and testing * Try to get filesystem to compile * Filesystem on linux * Remove std::filesystem and document/test * Compile fixes * Missing include * Bug fixes * Fixes * Rename v_file and v_dir * clang-format fix * Rename NGLOG_* to LOG_* * Most review changes * Fix TODO * Guess 'main' to be Directory by filename
* Add configurable logging backendsJames Rowe2018-07-031-5/+12
|
* Update clang formatJames Rowe2018-07-031-10/+8
|
* Rename logging macro back to LOG_*James Rowe2018-07-031-40/+40
|
* file_util: Make move constructor/assignment operator and related functions noexceptLioncash2018-04-301-3/+3
| | | | | | | Without this, it's possible to get compilation failures in the (rare) scenario where a container is used to store a bunch of live IOFile instances, as they may be using std::move_if_noexcept under the hood. Given these definitely don't throw exceptions this is also not incorrect to add either.
* general: Convert assertion macros over to be fmt-compatibleLioncash2018-04-271-3/+3
|
* common: Move logging macros over to new fmt-capable macros where applicableLioncash2018-04-271-48/+48
|
* Format: Run the new clang format on everythingJames Rowe2018-01-211-9/+8
|
* file_util: Log when using local user directorywwylele2017-03-111-0/+2
|
* file_util: lower logging level for harmless caseswwylele2017-03-081-9/+7
|
* file_util: Fixed implicit type conversion warning (#2503)noah the goodra2017-01-311-2/+2
|
* file_util: fix missing sysdata pathwwylele2016-12-231-3/+1
|
* file_util: Remove unused paths.bunnei2016-12-221-49/+3
|
* Common: Fix gcc build on macOSJeffrey Pfau2016-12-131-0/+11
|
* WINVER definition moved to CMake and cleanupfreiro2016-11-301-3/+0
|
* Removed /user/ from pathfreiro2016-11-261-2/+1
|
* Switch to AppData/Roamingfreiro2016-11-241-3/+3
|
* Return by value and other fixesfreiro2016-11-191-13/+7
|
* Win32 move default user folder location to AppDatafreiro2016-11-191-0/+23
|
* common: convert to standard stat()/fstat() interfacesAnthony J. Bentley2016-10-281-15/+10
| | | | | | | | | | | | | Most modern Unix environments use 64-bit off_t by default: OpenBSD, FreeBSD, OS X, and Linux libc implementations such as Musl. glibc is the lone exception; it can default to 32 bits but this is configurable by setting _FILE_OFFSET_BITS. Avoiding the stat64()/fstat64() interfaces is desirable because they are nonstandard and not implemented on many systems (including OpenBSD and FreeBSD), and using 64 bits for stat()/fstat() is either the default or trivial to set up.
* common: stat64 is non-standard, hide on a random UnixJan Beich2016-10-281-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | src/common/file_util.cpp:79:19: error: variable has incomplete type 'struct stat64' struct stat64 file_info; ^ src/common/file_util.cpp:79:12: note: forward declaration of 'stat64' struct stat64 file_info; ^ src/common/file_util.cpp:99:19: error: variable has incomplete type 'struct stat64' struct stat64 file_info; ^ src/common/file_util.cpp:99:12: note: forward declaration of 'stat64' struct stat64 file_info; ^ src/common/file_util.cpp:342:19: error: variable has incomplete type 'struct stat64' struct stat64 buf; ^ src/common/file_util.cpp:342:12: note: forward declaration of 'stat64' struct stat64 buf; ^ src/common/file_util.cpp:359:19: error: variable has incomplete type 'struct stat64' struct stat64 buf; ^ src/common/file_util.cpp:359:12: note: forward declaration of 'stat64' struct stat64 buf; ^ 4 errors generated.
* Remove special rules for Windows.h and library includesYuri Kunde Schlesner2016-09-211-0/+1
|
* Use negative priorities to avoid special-casing the self-includeYuri Kunde Schlesner2016-09-211-1/+1
|
* Remove empty newlines in #include blocks.Emmanuel Gil Peyrot2016-09-211-1/+0
| | | | | | | This makes clang-format useful on those. Also add a bunch of forgotten transitive includes, which otherwise prevented compilation.
* Manually tweak source formatting and then re-run clang-formatYuri Kunde Schlesner2016-09-191-2/+1
|
* Sources: Run clang-format on everything.Emmanuel Gil Peyrot2016-09-181-292/+223
|
* Common: readdir_r() is deprecated, switch to readdir().Emmanuel Gil Peyrot2016-09-131-6/+2
|
* Fix recursive scanning of directoriesYuri Kunde Schlesner2016-06-191-12/+10
| | | | | | ForeachDirectoryEntry didn't actually do anything with the `recursive` parameter, and the corresponding callback parameter was shadowing the actual recursion counters in the user functions.
* Common: Make recursive FileUtil functions take a maximum recursionEmmanuel Gil Peyrot2016-05-211-20/+28
| | | | | | | | | | Fixes #1115. Also improves the performances of DiskArchive’s directory implementation a lot, simply by not going through the entire tree instead of just listing the first level files. Thanks to JayRoxFox for rebasing this on current master!
* Merge pull request #1672 from wwylele/win-driver-fixbunnei2016-04-191-3/+12
|\ | | | | Fix driver root identification on Windows
| * fix driver root identification on Windowswwylele2016-04-151-3/+12
| |
* | file_util: In-class initialize data membersLioncash2016-04-141-4/+2
| |
* | file_util: const qualify IOFile's Tell and GetSize functionsLioncash2016-04-141-6/+6
| |
* | file_util: Don't expose IOFile internals through the APILioncash2016-04-141-22/+3
|/
* remove debug codeLFsWang2016-03-311-1/+1
|
* fix unicode url problem on windowsLFsWang2016-03-311-6/+18
|
* Fix encode problem On WindowsLFsWang2016-03-311-12/+17
|
* DiskDirectory: Initialize the directory member with valid info.Subv2016-01-161-1/+1
|
* Add missing return values in ForeachDirectoryEntryLFsWang2015-12-231-4/+14
| | | | | ForeachDirectoryEntry is changed by #1256 ,but return value at last line was missing.
* Refactor ScanDirectoryTreeAndCallback to separate errors and retvalsarchshift2015-11-271-37/+35
| | | | | | | | | ScanDirectoryTreeAndCallback, before this change, coupled error/return codes and actual return values (number of entries found). This caused confusion and difficulty interpreting the precise way the function worked. Supersedes, and closes #1255.
* Merge pull request #1095 from archshift/game-listbunnei2015-10-021-100/+60
|\ | | | | Initial implementation of a game list
| * Split up FileUtil::ScanDirectoryTree to be able to use callbacks for custom behaviorarchshift2015-10-011-100/+60
| | | | | | | | | | Converted FileUtil::ScanDirectoryTree and FileUtil::DeleteDirRecursively to use the new ScanDirectoryTreeAndCallback function internally.
* | general: Silence some warnings when using clangLioncash2015-09-161-2/+2
|/
* Common: Fix FileUtil includes, and everything relying on those.Emmanuel Gil Peyrot2015-06-281-2/+9
|
* Remove every trailing whitespace from the project (but externals).Emmanuel Gil Peyrot2015-05-291-1/+1
|
* Common: Remove common.hYuri Kunde Schlesner2015-05-071-2/+4
|
* Common: Move IO-specific compatibility macros to file_util.cppYuri Kunde Schlesner2015-05-071-18/+26
|
* Common: Remove many unnecessary cross-platform compatibility macrosYuri Kunde Schlesner2015-05-071-2/+2
|
* Common: Switch to the XDG Base Directory Specification for directory selection.Emmanuel Gil Peyrot2015-02-251-9/+68
| | | | This allows for easily movable and independent configuration and data directories, using standardized paths.
* Common: Change names containing “Dolphin” or “PPSSPP” to something more generic.Emmanuel Gil Peyrot2015-02-201-7/+7
|
* Archives: Changed the way paths are built for the archives.Subv2015-01-041-10/+2
| | | | Each archive now takes a mount point of either NAND or SDMC, and builds its own directory structure there, trying to simulate an HLE-friendly hardware layout
* Archives: Change the folder layout of some archives.Subv2015-01-031-0/+2
| | | | This is to better represent the hardware layout, they are still aren't quite accurate, but this better and will help a bit when implementing the other archives like NAND-RO and NAND-RW
* Archives: Reduced duplicate code in RomFS and SaveCheck.Subv2015-01-031-0/+2
| | | | Fixed a few warnings and cleaned up the code
* Archives: Implemented ExtSaveData and SharedExtSaveDataSubv2014-12-301-0/+2
| | | | | | | | They will be stored in /extsavedata/SDMC and /extsavedata/NAND respectively. Also redirect some APT_A functions to their APT_U equivalents. Implemented the gamecoin.dat file in SharedExtSaveData in the PTM module. Implemented formatting the savegame. Retake a previous savegame if it exists instead of reporting them as not formatted every time a game is loaded.
* License changepurpasmart962014-12-211-2/+2
|
* SaveData: Implemented the SystemSaveData archive.Subv2014-12-181-0/+2
| | | | It will be stored in the /syssavedata folder. This archive is user by various Services and possibly games via the FS:U service.
* Filesystem/Archives: Implemented the SaveData archiveSubv2014-12-181-0/+2
| | | | | | | | | | The savedata for each game is stored in /savedata/<ProgramID> for NCCH files. ELF files and 3DSX files use the folder 0 because they have no ID information Got rid of the code duplication in File and Directory Files that deal with the host machine's file system now live in DiskFile, similarly for directories and DiskDirectory and archives with DiskArchive. FS_U: Use the correct error code when a file wasn't found
* Convert old logging calls to new logging macrosYuri Kunde Schlesner2014-12-131-42/+42
|
* Common: Add "sysdata" to GetUserPath and cleanup.bunnei2014-12-121-13/+1
|
* Change NULLs to nullptrs.Rohit Nirmal2014-12-031-12/+12
|
* Remove trailing spaces in every file but the ones imported from SkyEye, AOSP or generatedEmmanuel Gil Peyrot2014-11-191-31/+31
|
* Merge pull request #133 from archshift/sdmc-enabledbunnei2014-10-241-2/+4
|\ | | | | Use config files to store whether SDMC is enabled or not, auto-create SDMC dir.
| * Common: Return from CreateFullPath early if the directory creation failsarchshift2014-10-231-2/+4
| |
* | Use std sized types instead of platform specific typedefsYuri Kunde Schlesner2014-10-231-0/+1
|/
* Merge pull request #108 from archshift/configbunnei2014-10-081-36/+36
|\ | | | | Configuration files
| * Added configuration file system.archshift2014-10-081-36/+36
| | | | | | | | Uses QSettings on citra-qt, and inih on citra-cli.
* | Common: Add a helper function to generate a 8.3 filename from a long one.Emmanuel Gil Peyrot2014-10-061-0/+42
| | | | | | | | Core: Fix the SDMC Directory implementation to make blargSnes work.
* | Fix warnings in core and commonLioncash2014-09-281-2/+2
|/
* Use the citra user path for the sdmc directoryarchshift2014-09-211-0/+2
|
* Common: Rename the File namespace to FileUtil, to match the filename and prevent collisions.Emmanuel Gil Peyrot2014-09-171-19/+19
|
* Merge pull request #99 from archshift/ext-checkbunnei2014-09-111-13/+13
|\ | | | | loader.cpp: improved file extension checking, made Upper/LowerStr useful, moved string_util into Common namespace
| * Added string_util to common, small changes in loader.cpparchshift2014-09-091-13/+13
| |
* | common: Prune all redundant includesarchshift2014-09-091-7/+0
|/
* Common: Move remaining C header includes over to their C++ equivalentLioncash2014-08-171-2/+2
|
* fixes to build on linuxbunnei2014-04-231-1/+1
|
* fixed project includes to use new directory structurebunnei2014-04-091-5/+5
|
* got rid of 'src' folders in each sub-projectbunnei2014-04-091-0/+910