summaryrefslogtreecommitdiffstats
path: root/src/common/file_util.h (follow)
Commit message (Collapse)AuthorAgeFilesLines
* common/fileutil: Convert namespace to Common::FSLioncash2020-08-161-12/+12
| | | | | | | | | | | | 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: Make use of [[nodiscard]] where applicableLioncash2020-08-151-27/+34
| | | | | | Now that clang-format makes [[nodiscard]] attributes format sensibly, we can apply them to several functions within the common library to allow the compiler to complain about any misuses of the functions.
* common: Add a screenshots directorylat9nq2020-07-211-0/+1
| | | | Adds a screenshots directory as a path managed by FileUtil.
* file_util: Early-exit in WriteArray and ReadArray if specified lengths are zeroLioncash2020-04-151-9/+5
| | | | | | | | | | | | | 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/file_util: Make GetCurrentDir() return a std::optionalLioncash2019-05-231-1/+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: Make ReadFileToString and WriteStringToFile consistentLioncash2019-05-231-2/+2
| | | | | | | | | | | 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.
* common/file_util: Remove unnecessary c_str() callsLioncash2019-05-231-2/+2
| | | | | | The file stream open functions have supported std::string overloads since C++11, so we don't need to use c_str() here. Same behavior, less code.
* common/file_util: Make IOFile's WriteString take a std::string_viewLioncash2019-05-231-2/+2
| | | | | | We don't need to force the usage of a std::string here, and can instead use a std::string_view, which allows writing out other forms of strings (e.g. C-style strings) without any unnecessary heap allocations.
* file_util: Add shader directoryReinUsesLisp2019-02-071-0/+1
|
* string_util: remove TString conversion for windowsWeiyi Wang2018-10-021-1/+1
| | | | First of all they are foundamentally broken. As our convention is that std::string is always UTF-8, these functions assume that the multi-byte character version of TString (std::string) from windows is also in UTF-8, which is almost always wrong. We are not going to build multi-byte character build, and even if we do, this dirty work should be handled by frontend framework early.
* 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-12/+13
|
* file_util: Add getter for NAND registration directoryZach Hilman2018-08-121-0/+2
|
* file_util: Use enum instead of bool for specifing path behaviorZach Hilman2018-08-091-2/+5
|
* file_util: Add platform-specific slash option to SanitizePathZach Hilman2018-08-091-2/+3
|
* Merge pull request #966 from lioncash/modernizebunnei2018-08-081-5/+5
|\ | | | | common: Convert type traits templates over to variable template versions where applicable
| * common: Convert type traits templates over to variable template versions where applicableLioncash2018-08-081-5/+5
| | | | | | | | Uses the C++17 inline variable variants
* | file_util: Avoid sign-conversions in WriteArray() and ReadArray()Lioncash2018-08-071-4/+8
|/ | | | Prevents compiler warnings.
* Allow key loading from %YUZU_DIR%/keys in addition to ~/.switchZach Hilman2018-08-011-0/+1
|
* Remove files that are not usedZach Hilman2018-08-011-0/+2
|
* VFS Regression and Accuracy Fixes (#776)Zach Hilman2018-07-241-0/+3
| | | | | | | | | | | | | | | | * 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&
* file_util, vfs: Use std::string_view where applicableLioncash2018-07-221-6/+7
| | | | | Avoids unnecessary construction of std::string instances where applicable.
* file_util: Use a u64 to represent number of entriesLioncash2018-07-221-4/+4
| | | | | 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: Use an enum class for GetUserPath()Lioncash2018-07-211-14/+13
| | | | | | | | | | | | | 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-31/+35
| | | | | | | | | | * Virtual Filesystem * Fix delete bug and documentate * Review fixes + other stuff * Fix puyo regression
* Revert "Virtual Filesystem (#597)"bunnei2018-07-081-32/+31
| | | | This reverts commit 77c684c1140f6bf3fb7d4560d06d2efb1a2ee5e2.
* Virtual Filesystem (#597)Zach Hilman2018-07-061-31/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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-2/+9
|
* 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.
* file_util: Add static assertions to ReadBytes() and WriteBytes()Lioncash2018-04-301-2/+6
| | | | | | Ensure that the actual types being passed in are trivially copyable. The internal call to ReadArray() and WriteArray() will always succeed, since they're passed a pointer to char* which is always trivially copyable.
* file_util: Remove compiler version checks around is_trivially_copyable()Lioncash2018-04-281-8/+0
| | | | | | The minimum clang/GCC versions we support already support this. We can also remove is_standard_layout(), as fread and fwrite only require the type to be trivially copyable.
* file_util.h: Update Comment from citra to yuzuN00byKing2018-03-261-1/+1
|
* Format: Run the new clang format on everythingJames Rowe2018-01-211-1/+1
|
* file_util: Remove unused paths.bunnei2016-12-221-20/+0
|
* Switch to AppData/Roamingfreiro2016-11-241-1/+1
|
* Return by value and other fixesfreiro2016-11-191-1/+1
|
* Win32 move default user folder location to AppDatafreiro2016-11-191-0/+1
|
* Remove empty newlines in #include blocks.Emmanuel Gil Peyrot2016-09-211-2/+0
| | | | | | | This makes clang-format useful on those. Also add a bunch of forgotten transitive includes, which otherwise prevented compilation.
* Sources: Run clang-format on everything.Emmanuel Gil Peyrot2016-09-181-55/+63
|
* Fix recursive scanning of directoriesYuri Kunde Schlesner2016-06-191-5/+2
| | | | | | 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-4/+8
| | | | | | | | | | 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!
* VideoCore: Run include-what-you-use and fix most includes.Emmanuel Gil Peyrot2016-04-301-1/+1
|
* Protect use of std::is_trivially_copyable to compile with GCC 4.9LittleWhite2016-04-231-0/+4
|
* file_util: In-class initialize data membersLioncash2016-04-141-2/+2
|
* file_util: const qualify IOFile's Tell and GetSize functionsLioncash2016-04-141-2/+2
|
* file_util: Don't expose IOFile internals through the APILioncash2016-04-141-8/+1
|
* file_util: Check for is_trivially_copyableLioncash2016-04-141-3/+5
| | | | Also applies the template checks to ReadArray as well.
* file_util: Make IOFile data members privateLioncash2016-04-141-0/+1
|
* FileUtil: Missing #include, Add const to IOFile methodsMerryMage2016-04-121-6/+7
|
* Refactor ScanDirectoryTreeAndCallback to separate errors and retvalsarchshift2015-11-271-13/+18
| | | | | | | | | 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.
* Split up FileUtil::ScanDirectoryTree to be able to use callbacks for custom behaviorarchshift2015-10-011-3/+23
| | | | | Converted FileUtil::ScanDirectoryTree and FileUtil::DeleteDirRecursively to use the new ScanDirectoryTreeAndCallback function internally.
* Fix building under MinGWdarkf2015-08-181-1/+1
|
* Common: Remove the unused and commented GetThemeDir prototype from FileUtil.Emmanuel Gil Peyrot2015-07-181-3/+0
|
* FileUtil: Add a WriteObject method for writing a single, POD-type object.Tony Wasserka2015-07-131-0/+10
|
* Common: Fix FileUtil includes, and everything relying on those.Emmanuel Gil Peyrot2015-06-281-2/+1
|
* Common: Remove common.hYuri Kunde Schlesner2015-05-071-1/+1
|
* Archives: Changed the way paths are built for the archives.Subv2015-01-041-5/+1
| | | | 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/+1
| | | | 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/+1
| | | | Fixed a few warnings and cleaned up the code
* Archives: Implemented ExtSaveData and SharedExtSaveDataSubv2014-12-301-0/+1
| | | | | | | | 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/+1
| | | | 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/+1
| | | | | | | | | | 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
* Common: Add "sysdata" to GetUserPath and cleanup.bunnei2014-12-121-0/+1
|
* Change NULLs to nullptrs.Rohit Nirmal2014-12-031-2/+2
|
* Remove tabs in all files except in skyeye imports and in generated GL codeEmmanuel Gil Peyrot2014-11-191-93/+93
|
* Merge pull request #108 from archshift/configbunnei2014-10-081-7/+7
|\ | | | | Configuration files
| * Added configuration file system.archshift2014-10-081-7/+7
| | | | | | | | 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/+11
| | | | | | | | Core: Fix the SDMC Directory implementation to make blargSnes work.
* | Fix warnings in core and commonLioncash2014-09-281-3/+3
|/
* Use the citra user path for the sdmc directoryarchshift2014-09-211-0/+1
|
* Common: Rename the File namespace to FileUtil, to match the filename and prevent collisions.Emmanuel Gil Peyrot2014-09-171-1/+1
|
* Common: Return the number of items read/written in IOFile’s methods instead of a boolean.Emmanuel Gil Peyrot2014-09-171-8/+20
|
* Added string_util to common, small changes in loader.cpparchshift2014-09-091-1/+1
|
* Common: Move header guards over to pragma onceLioncash2014-08-171-5/+1
| | | | Also replaced C headers with the C++ equivalent ones
* fixed project includes to use new directory structurebunnei2014-04-091-2/+2
|
* got rid of 'src' folders in each sub-projectbunnei2014-04-091-0/+224