diff --git a/src/core/libraries/kernel/file_system.cpp b/src/core/libraries/kernel/file_system.cpp index 44d2c3d46..0e377a106 100644 --- a/src/core/libraries/kernel/file_system.cpp +++ b/src/core/libraries/kernel/file_system.cpp @@ -23,6 +23,8 @@ #include "core/memory.h" #include "kernel.h" +#include + namespace D = Core::Devices; using FactoryDevice = std::function(u32, const char*, int, u16)>; @@ -683,6 +685,20 @@ s32 PS4_SYSV_ABI fstat(s32 fd, OrbisKernelStat* sb) { // TODO incomplete break; } + case Core::FileSys::FileType::Socket: { + struct stat st{}; + s32 result = ::fstat(file->socket->Native(), &st); + if (result < 0) { + ErrSceToPosix(result); + return -1; + } + sb->st_mode = 0000777u | 0140000u; + sb->st_size = st.st_size; + sb->st_blocks = st.st_blocks; + sb->st_blksize = st.st_blksize; + // sb->st_flags = st.st_flags; + break; + } default: UNREACHABLE(); }