-
rmdir — same null-call class as pread. lib/crtl has no C rmdir
wrapper, though the PAL already provides PalRmdir/PalBackendRmdir
(unlinkat + AT_REMOVEDIR). sqlite references it; today it decays to a 0 slot.
Fix: add __pxx_rmdir (pxxcio.pas → PalRmdir) and a rmdir() C wrapper in
lib/crtl/src/unistd.c, prototype in unistd.h — mirror the
ftruncate/access set added in commit d65d95d8.
-
F_OK / W_OK / R_OK / (X_OK) undefined. The access() mode
constants are not defined by the crtl (fcntl.h/unistd.h), so
access(path, F_OK) passes mode 0 by accident — wrong, and only "works"
because F_OK==0. Define them (F_OK 0, X_OK 1, W_OK 2, R_OK 4) in the crtl
header that declares access.
-
register reaches the value path. The C storage-class keyword register
is not modelled by cfront, so it falls through to the identifier/value path
and warns. Harmless at runtime (it's a no-op qualifier) but it should be
consumed as a storage-class specifier in the declarator parser, like
static/const/volatile. Track C.