Handle sockets in fstat

This commit is contained in:
Marcin Mikołajczyk 2025-07-12 16:19:10 +01:00
parent 80a6ce0251
commit 334bf68b32

View File

@ -23,6 +23,8 @@
#include "core/memory.h" #include "core/memory.h"
#include "kernel.h" #include "kernel.h"
#include <sys/stat.h>
namespace D = Core::Devices; namespace D = Core::Devices;
using FactoryDevice = std::function<std::shared_ptr<D::BaseDevice>(u32, const char*, int, u16)>; using FactoryDevice = std::function<std::shared_ptr<D::BaseDevice>(u32, const char*, int, u16)>;
@ -683,6 +685,20 @@ s32 PS4_SYSV_ABI fstat(s32 fd, OrbisKernelStat* sb) {
// TODO incomplete // TODO incomplete
break; 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: default:
UNREACHABLE(); UNREACHABLE();
} }