vsnprintf implementation

This commit is contained in:
georgemoralis 2023-10-16 08:55:07 +03:00
parent 2d4d39c54b
commit 675193fec3
4 changed files with 12 additions and 1 deletions

View file

@ -12,6 +12,8 @@ PS4_SYSV_ABI int printf(VA_ARGS) {
return printf_ctx(&ctx);
}
int PS4_SYSV_ABI vsnprintf(char* s, size_t n, const char* format, VaList* arg) { return vsnprintf_ctx(s, n, format, arg); }
PS4_SYSV_ABI void exit(int code) { std::exit(code); }
PS4_SYSV_ABI int atexit(void (*func)()) {

View file

@ -8,6 +8,7 @@ namespace Emulator::HLE::Libraries::LibC {
// HLE functions
PS4_SYSV_ABI int printf(VA_ARGS);
int PS4_SYSV_ABI vsnprintf(char* s, size_t n, const char* format, VaList* arg);
PS4_SYSV_ABI void exit(int code);
PS4_SYSV_ABI int atexit(void (*func)());
int PS4_SYSV_ABI memcmp(const void* s1, const void* s2, size_t n);

View file

@ -56,7 +56,7 @@
#include <cstdbool>
#include <cstddef>
#include <cstdint>
#include <string>
#include "va_ctx.h"
namespace Emulator::HLE::Libraries::LibC {
@ -693,4 +693,10 @@ static int printf_ctx(VaCtx* ctx) {
return result;
}
static int vsnprintf_ctx(char* s, size_t n, const char* format, VaList* arg) {
char buffer[n];
int result = _vsnprintf(_out_buffer, buffer, format, arg);
std::strcpy(s, buffer);
return result;
}
} // namespace Emulator::HLE::Libraries::LibC