mirror of
https://github.com/boykopovar/AnyPS5.git
synced 2026-10-21 16:12:47 -05:00
gethostbyname_r and sysinfo are names of host C library functions. Defining them in libScePosixForWebKit made the library's own call to ::gethostbyname_r in Resolver.cpp bind to the new declaration, and the guest_resolver test failed with "gethostbyname_r not implemented". Export the two NIDs through a helper with the library's own prefix, the way libSceAmpr re-exports the libc functions.
4.3 KiB
4.3 KiB
libScePosixForWebKit technical debt
Unknown function info
- gethostbyname (libScePosixForWebKit) - numeric IPv4 forms, trailing whitespace and 64-bit accumulation follow FreeBSD 11.4 inet_aton; clearing the resolver error on numeric success follows fakeaddr. Exact PS5 behavior is unverified; hostname lookup still uses the host resolver
- __wrap_access, __wrap_clock_gettime, __wrap_fchown, __wrap_getcwd, __wrap_getenv, __wrap_link, __wrap_lstat, __wrap_mmap, __wrap_readlink, __wrap_statvfs, __wrap_symlink, clock_gettime_np, getenv_np, gethostbyname_r (
scePosixForWebKit_gethostbyname_r), mmap_np, msetname, pthread_setschedparam_np, setenv_np, sysinfo (scePosixForWebKit_sysinfo) (libScePosixForWebKit) - names/NIDs appear in the PS5 3.20 export inventory and verified NID name database; credible prototypes are unknown. These exports use renamed helpers; defininggethostbyname_rwould interpose on the host function this library calls itself. All are parameterless import stubs, not ABI claims; callers must not use them until signatures are verified.
Functional
- mkstemp and isatty (libScePosixForWebKit) follow FreeBSD's temporary-file API and terminal check, without console verification.
mkstempreplaces all trailingXcharacters, accepts a fixed name, and creates files through the guest path resolver with exclusive read/write access and mode 0600. Windows file permissions follow the existing kernel file implementation.isattytests Windows console handles rather than all character devices; files, pipes and guest sockets returnENOTTY, closed descriptors returnEBADF. - arc4random (libScePosixForWebKit) returns four bytes of host OS entropy (
getentropy,rand_son Windows), asarc4random_bufdoes, uniform over the 32-bit range like FreeBSD 11.4's RC4 keystream in arc4random.c. The console's generator and its reseeding are unknown;arc4random_uniform,arc4random_stirandarc4random_addrandomare not in the module's export set and are absent - fnmatch (libScePosixForWebKit) follows FreeBSD 11 fnmatch.c in the C locale: each byte is one character,
FNM_CASEFOLDfolds ASCII letters only, and bracket ranges compare byte values.[:class:]names are not character classes: as in FreeBSD 11 through 14,[[:digit:]]is the set of[,:,d,i,g,tfollowed by a literal](classes were added tofnmatch.cafter 14). Multibyte characters and locale collation are not modelled. A null pattern or string throws - getservbyname (libScePosixForWebKit) searches a built-in copy of 37 lines of FreeBSD 11.4's etc/services (ftp-data, ftp, ssh, telnet, smtp, domain, tftp, http, pop3, ntp, imap, https, rtsp, submission, imaps, pop3s with their aliases and protocols, in file order) the way getservent.c searches the file: case-sensitive name or alias, a null protocol takes the first match, the port in network byte order, the result in per-thread storage. The console's
/etc/servicesis unknown, so any other service returns null without settingerrno, as for a name the file lacks.getaddrinfostill resolves service names through the host's service database