Files
AnyPS5/core/libs/tests/GuestProgramName.cpp
T

37 lines
1.1 KiB
C++

#include "prx/libc/include/Api.hpp"
#include "prx/libSceLibcInternal/include/Api.hpp"
#include "SceTypes.hpp"
#include <cstdlib>
#include <cstring>
extern "C" {
extern const char* __progname_nid_postfix;
}
static void Require(bool value) { if (!value) std::abort(); }
int main() {
const char* const original = __progname_nid_postfix;
*__error_nid_postfix() = 45;
Require(getprogname_nid_postfix() == original);
Require(_getprogname_nid_postfix() == original);
Require(std::strcmp(getprogname_nid_postfix(), "eboot.bin") == 0);
Require(*__error_nid_postfix() == 45);
char renamed[] = "quake2";
__progname_nid_postfix = renamed;
Require(getprogname_nid_postfix() == renamed);
Require(_getprogname_nid_postfix() == renamed);
renamed[0] = 'Q';
Require(std::strcmp(getprogname_nid_postfix(), "Quake2") == 0);
__progname_nid_postfix = "";
Require(getprogname_nid_postfix()[0] == '\0');
__progname_nid_postfix = original;
Require(getprogname_nid_postfix() == original);
Require(*__error_nid_postfix() == 45);
}