Add support for TAR archives
These changes introduce support for reading TAR archives.
TAR is still a popular archival format, and it's slightly easier to work with under Linux over other formats. I also figured games packaged inside it could load slightly faster under constrained platforms over ZIP (3DS, older Android devices, etc.)
Jenkins: Test this please
Thank you for this useful contribution. During summer our project is always kinda inactive. So don't be discouraged due to lack of feedback in August and September.
Okay! Thank you for the heads up and quick reply!
I apologize it took me so long to get around implementing the changes.
I'm not sure why the Windows x64 build failed, it seems to have been interrupted on Jenkins?
The PSVita/PSTV build is failing on trying to include vita.cmake, wherein cmake reports that versions < 3.5 are unsupported. I can't modify the Vita SDK nor the flags passed to cmake in the build, so I don't really know what to do here.
Jenkins: test this please.
No worries, both build failures are not your fault.
I just noticed that the indentation of the new files you submitted is wrong: They use spaces instead of tabs. Can you fix this?
(This is configured in the .editorconfig file but some editors unfortunately ignore it :/)
I've corrected the indentation. I guess VS Code doesn't support that config file by default...
I found one bug in your code:
This TAR archive (had to repack it as ZIP as github doesnt accept TAR) triggers the assert assert(!dir.second.name.empty() && "VFS BUG: Empty filename in the folder");
Looks like you add empty files to the directory list when browsing directories inside a tar archive. Can you try to fix this?
(We support multiple games in a single archive and archives inside of archives etc. You implemented the FS correctly so this all works as expected except for browsing into subdirectories)
btw @carstene1ns is the linter checking the correct branch? All the lines reported are shorter than 120 characters
Total Errors: 6
CMakeLists.txt:1432: Lines should be <= 120 characters long [linelength]
CMakeLists.txt:1433: Line ends in whitespace [whitespace/eol]
CMakeLists.txt:1434: Lines should be <= 120 characters long [linelength]
CMakeLists.txt:1435: Lines should be <= 120 characters long [linelength]
CMakeLists.txt:1436: Lines should be <= 120 characters long [linelength]
CMakeLists.txt:1440: Lines should be <= 120 characters long [linelength]
It merges the changes to master branch. So yes, this should be changed.
@Gwitr Thank you for your contribution!