summaryrefslogtreecommitdiff
path: root/src/common/file_util.cpp (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Merge pull request #3630 from benru/open-windows-network-filesGravatar bunnei2020-04-171-1/+8
|\ | | | | common/file_util: Allow access to files on network shares
| * common/file_util: Allow access to files on network sharesGravatar Ben 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 zeroGravatar Lioncash2020-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)Gravatar 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 -WswitchGravatar ReinUsesLisp2019-10-041-1/+2
|
* common/file_util: Remove unnecessary return at end of void StripTailDirSlashes()Gravatar 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::optionalGravatar Lioncash2019-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 commentsGravatar Lioncash2019-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 consistentGravatar Lioncash2019-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 directoryGravatar ReinUsesLisp2019-02-061-0/+1
|
* only redefine 64 bit file operation for MSVCGravatar Weiyi Wang2018-10-231-5/+8
| | | | MinGW provides POSIX functions
* common_paths: Add Load and Dump dirsGravatar Zach Hilman2018-09-211-0/+2
|
* Port #4182 from Citra: "Prefix all size_t with std::"Gravatar fearlessTobi2018-09-151-8/+8
|
* file_util: Correct return value in early exit of ReadFileToString()Gravatar 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 directoryGravatar Zach Hilman2018-08-111-0/+6
|
* file_util: Use enum instead of bool for specifing path behaviorGravatar Zach Hilman2018-08-081-4/+4
|
* file_util: Add platform-specific slash option to SanitizePathGravatar Zach Hilman2018-08-081-3/+13
|
* Allow key loading from %YUZU_DIR%/keys in addition to ~/.switchGravatar Zach Hilman2018-08-011-0/+1
|
* Use SHGetKnownFolderPath instead of SHGetFolderPathAGravatar Zach Hilman2018-08-011-3/+4
|
* Extract mbedtls to cpp fileGravatar Zach Hilman2018-08-011-1/+1
|
* Remove files that are not usedGravatar Zach Hilman2018-08-011-0/+12
|
* VFS Regression and Accuracy Fixes (#776)Gravatar Zach Hilman2018-07-231-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-viewGravatar bunnei2018-07-221-34/+48
|\ | | | | file_util, vfs: Use std::string_view where applicable
| * file_util, vfs: Use std::string_view where applicableGravatar Lioncash2018-07-221-34/+48
| | | | | | | | | | Avoids unnecessary construction of std::string instances where applicable.
* | Merge pull request #765 from lioncash/fileGravatar bunnei2018-07-221-24/+14
|\ \ | |/ |/| file_util: Remove goto usages from Copy()
| * file_util: Remove goto usages from Copy()Gravatar Lioncash2018-07-211-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 entriesGravatar Lioncash2018-07-211-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()Gravatar Lioncash2018-07-211-1/+1
|/ | | | Avoids unnecessary copies when building up the FST entries.
* Merge pull request #759 from lioncash/redundantGravatar bunnei2018-07-211-2/+1
|\ | | | | file_util: Remove redundant duplicate return in GetPathWithoutTop()
| * file_util: Remove explicit type from std::min() in GetPathWithoutTop()Gravatar 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()Gravatar Lioncash2018-07-211-1/+0
| |
* | file_util: Use an enum class for GetUserPath()Gravatar 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()Gravatar Lioncash2018-07-191-1/+1
| | | | | This disallows modifying the internal string buffer (which shouldn't be modified anyhow).
* Virtual Filesystem 2: Electric Boogaloo (#676)Gravatar Zach Hilman2018-07-181-26/+81
| | | | | | | | | | * Virtual Filesystem * Fix delete bug and documentate * Review fixes + other stuff * Fix puyo regression
* Revert "Virtual Filesystem (#597)"Gravatar bunnei2018-07-071-67/+26
| | | | This reverts commit 77c684c1140f6bf3fb7d4560d06d2efb1a2ee5e2.
* Merge pull request #630 from FearlessTobi/remove-citra-referencesGravatar bunnei2018-07-061-1/+1
|\ | | | | Remove some references to Citra
| * Remove some references to CitraGravatar fearlessTobi2018-07-061-1/+1
| |
* | Virtual Filesystem (#597)Gravatar 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 backendsGravatar James Rowe2018-07-021-5/+12
|
* Update clang formatGravatar James Rowe2018-07-021-10/+8
|
* Rename logging macro back to LOG_*Gravatar James Rowe2018-07-021-40/+40
|
* file_util: Make move constructor/assignment operator and related functions ↵Gravatar Lioncash2018-04-291-3/+3
| | | | | | | | | noexcept 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-compatibleGravatar Lioncash2018-04-271-3/+3
|
* common: Move logging macros over to new fmt-capable macros where applicableGravatar Lioncash2018-04-261-48/+48
|
* Format: Run the new clang format on everythingGravatar James Rowe2018-01-201-9/+8
|
* file_util: Log when using local user directoryGravatar wwylele2017-03-111-0/+2
|
* file_util: lower logging level for harmless casesGravatar wwylele2017-03-081-9/+7
|
* file_util: Fixed implicit type conversion warning (#2503)Gravatar noah the goodra2017-01-301-2/+2
|
* file_util: fix missing sysdata pathGravatar wwylele2016-12-231-3/+1
|
* file_util: Remove unused paths.Gravatar bunnei2016-12-211-49/+3
|