mirror of
https://github.com/shadps4-emu/shadPS4.git
synced 2026-04-26 00:05:58 +03:00
[PR #3455] [MERGED] Filesystem: Abstract handling of directory files #3481
Labels
No labels
Bloodborne
bug
contributor wanted
documentation
enhancement
frontend
good first issue
help wanted
linux
pull-request
question
release
verification progress
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
starred/shadPS4#3481
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/shadps4-emu/shadPS4/pull/3455
Author: @StevenMiller123
Created: 8/24/2025
Status: ✅ Merged
Merged: 8/25/2025
Merged by: @georgemoralis
Base:
main← Head:abstract-directories📝 Commits (10+)
9a223e6Rename SceKernelIovec to OrbisKernelIovecdfec236Type fixups95dd0e0More type fixupsdd6541fUpdate file_system.cpp1eebd1eAbstract directory handlingd80efd9Clang3dbdda4Directory fstat04cd8afFix dirent loading logiccaf4c5cPfsDirectory size88e66a9GetDents cleanup📊 Changes
28 files changed (+727 additions, -196 deletions)
View changed files
📝
CMakeLists.txt(+22 -16)📝
src/core/file_sys/devices/base_device.cpp(+1 -1)📝
src/core/file_sys/devices/base_device.h(+6 -6)📝
src/core/file_sys/devices/console_device.cpp(+4 -4)📝
src/core/file_sys/devices/console_device.h(+4 -4)📝
src/core/file_sys/devices/deci_tty6_device.cpp(+4 -4)📝
src/core/file_sys/devices/deci_tty6_device.h(+4 -4)📝
src/core/file_sys/devices/ioccom.h(+1 -1)📝
src/core/file_sys/devices/logger.cpp(+2 -2)📝
src/core/file_sys/devices/logger.h(+2 -2)📝
src/core/file_sys/devices/nop_device.h(+4 -4)📝
src/core/file_sys/devices/random_device.cpp(+4 -4)📝
src/core/file_sys/devices/random_device.h(+4 -4)📝
src/core/file_sys/devices/srandom_device.cpp(+4 -4)📝
src/core/file_sys/devices/srandom_device.h(+4 -4)📝
src/core/file_sys/devices/urandom_device.cpp(+4 -4)📝
src/core/file_sys/devices/urandom_device.h(+4 -4)➕
src/core/file_sys/directories/base_directory.cpp(+15 -0)➕
src/core/file_sys/directories/base_directory.h(+52 -0)➕
src/core/file_sys/directories/normal_directory.cpp(+140 -0)...and 8 more files
📄 Description
Based on similar work done for device files in the past, this PR separates directory file-related code into separate classes, designed to handle the different types of directories present on a real PS4.
This PR adds cross-platform support for
readandlseekoperations on directories, and fixes remaining inaccuracies withgetdentsbehavior. I've also touched up a few issues in likernel filesystem code while I was there.So far I've got two types of folders implemented, based on the two types I've seen while testing, but the code leaves room for additional directory types if those become necessary.
In my testing, this fixes IxSHE Tell (CUSA17112) and anywhereVR (CUSA08643) crashing on startup for Windows devices, and fixes a regression in updated versions of Final Fantasy XV (CUSA01633) caused by #3416
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.