From 23b669871c02864743eba93438f0c05325d22bff Mon Sep 17 00:00:00 2001 From: georgemoralis Date: Fri, 17 Nov 2023 08:00:46 +0200 Subject: [PATCH] some fs for libkernel --- src/core/hle/libraries/libkernel/file_system.cpp | 7 +++++-- src/core/hle/libraries/libkernel/file_system.h | 2 +- src/core/hle/libraries/libkernel/libkernel.cpp | 1 + 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/core/hle/libraries/libkernel/file_system.cpp b/src/core/hle/libraries/libkernel/file_system.cpp index 271cf363d..ca38cf79a 100644 --- a/src/core/hle/libraries/libkernel/file_system.cpp +++ b/src/core/hle/libraries/libkernel/file_system.cpp @@ -12,7 +12,7 @@ int PS4_SYSV_ABI sceKernelOpen(const char* path, int flags, u16 mode) { return 0; } -int PS4_SYSV_ABI open(const char* path, int flags, /* SceKernelMode*/ u16 mode) { +int PS4_SYSV_ABI posix_open(const char* path, int flags, /* SceKernelMode*/ u16 mode) { LOG_INFO_IF(log_file_fs, "posix open redirect to sceKernelOpen\n"); int result = sceKernelOpen(path, flags, mode); if (result < 0) { @@ -23,7 +23,10 @@ int PS4_SYSV_ABI open(const char* path, int flags, /* SceKernelMode*/ u16 mode) void fileSystemSymbolsRegister(Loader::SymbolsResolver* sym) { LIB_FUNCTION("1G3lF1Gg1k8", "libkernel", 1, "libkernel", 1, 1, sceKernelOpen); - LIB_FUNCTION("wuCroIGjt2g", "libScePosix", 1, "libkernel", 1, 1, open); + LIB_FUNCTION("wuCroIGjt2g", "libScePosix", 1, "libkernel", 1, 1, posix_open); + + //openOrbis (to check if it is valid out of OpenOrbis + LIB_FUNCTION("6c3rCVE-fTU", "libkernel", 1, "libkernel", 1, 1, posix_open);// _open shoudld be equal to open function } } // namespace Core::Libraries::LibKernel diff --git a/src/core/hle/libraries/libkernel/file_system.h b/src/core/hle/libraries/libkernel/file_system.h index f5be1d1e0..010e952a3 100644 --- a/src/core/hle/libraries/libkernel/file_system.h +++ b/src/core/hle/libraries/libkernel/file_system.h @@ -10,7 +10,7 @@ namespace Core::Libraries::LibKernel { int PS4_SYSV_ABI sceKernelOpen(const char *path, int flags, /* SceKernelMode*/ u16 mode); -int PS4_SYSV_ABI open(const char *path, int flags, /* SceKernelMode*/ u16 mode); +int PS4_SYSV_ABI posix_open(const char *path, int flags, /* SceKernelMode*/ u16 mode); void fileSystemSymbolsRegister(Loader::SymbolsResolver *sym); diff --git a/src/core/hle/libraries/libkernel/libkernel.cpp b/src/core/hle/libraries/libkernel/libkernel.cpp index ee60d2766..2b63195c7 100644 --- a/src/core/hle/libraries/libkernel/libkernel.cpp +++ b/src/core/hle/libraries/libkernel/libkernel.cpp @@ -47,6 +47,7 @@ struct iovec { }; size_t PS4_SYSV_ABI _writev(int fd, const struct iovec* iov, int iovcn) { + //weird it gives fd ==0 and writes to stdout , i am not sure if it that is valid (found in openorbis) size_t total_written = 0; for (int i = 0; i < iovcn; i++) { total_written += ::fwrite(iov[i].iov_base, 1, iov[i].iov_len, stdout);