diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-08-02 09:39:04 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-08-02 09:39:04 +0900 |
| commit | c241931303448f9449051ea2080c1b65561066f2 (patch) | |
| tree | 2bca8a0a4d009ed18d68ce427a0c7be64af42edd /Cargo.lock | |
| parent | 2c3373a7466c31f5cce7c2867c00a91afaa8e128 (diff) | |
| download | php-shirabe-c241931303448f9449051ea2080c1b65561066f2.tar.gz php-shirabe-c241931303448f9449051ea2080c1b65561066f2.tar.zst php-shirabe-c241931303448f9449051ea2080c1b65561066f2.zip | |
feat(php-shim): implement syscall-backed functions via the nix crate
Several shim functions were left as todo!() because the standard library
exposes no equivalent and no syscall crate was available. Adding nix
unblocks them:
- proc_open now wires descriptors beyond stderr, creating the pipe itself
and installing the child end with dup2(2) from pre_exec
- proc_terminate and posix_kill deliver arbitrary signals via kill(2)
- get_current_user reports the owner of the running executable
- php_uname answers every mode from uname(2) instead of only "s" and "r"
It also closes gaps that were previously approximated:
- fstat stats the stdio streams and pipes rather than reporting failure
- touch stamps mtime/atime on an existing path, including directories
- is_writable/is_executable use access(2) instead of permission bits
- umask falls back to the read-modify-write umask(2) off Linux
The hand-written repr(C) structs and extern "C" declarations for getpwuid,
utime, statvfs, fcntl and select are replaced by their nix wrappers, which
in turn lets disk_free_space drop its Linux-only cfg.
cli_set_process_title, setproctitle and the pcntl_signal pair stay as
todo!(): the first two need access to the process's own argv block, and
the latter two depend on the signal-handling subsystem rather than on
sigaction(2) itself.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'Cargo.lock')
| -rw-r--r-- | Cargo.lock | 13 |
1 files changed, 13 insertions, 0 deletions
@@ -1293,6 +1293,18 @@ dependencies = [ ] [[package]] +name = "nix" +version = "0.31.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf20d2fde8ff38632c426f1165ed7436270b44f199fc55284c38276f9db47c3d" +dependencies = [ + "bitflags", + "cfg-if", + "cfg_aliases", + "libc", +] + +[[package]] name = "nu-ansi-term" version = "0.50.3" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -2150,6 +2162,7 @@ dependencies = [ "flate2", "indexmap", "md5", + "nix", "regex", "regex-macro", "reqwest", |
