aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe-php-shim/src/process.rs
AgeCommit message (Collapse)Author
2026-06-22feat(php-shim): implement fopen-family stream API on PhpResourcensfisis
Redesign PhpResource into a real stream handle (File/Memory backing with tracked position, eof, closed state) and unify the whole fopen family (fopen/fwrite/fread/fgets/fgetc/feof/fclose/ftell/fseek/rewind/fstat/ ftruncate/fflush and stream_get_contents/stream_copy_to_stream) on &PhpResource, replacing the split PhpMixed/PhpResource APIs and their todo!() stubs. fopen now returns Result; read functions stay String for now (TODO(phase-e) to move to byte strings). Propagate the signatures through callers: Process stdout/stderr, Cursor input, curl header/body handles (extracted into typed maps keyed by job id), Filesystem copy/safe_copy/files_are_equal, BufferIO, error_handler, platform, perforce, zip. The proc_open pipe paths cannot carry a PhpResource in a PhpMixed list, so they are left as todo!() with notes.
2026-06-21feat(php-shim): implement exec/shell_exec/system/escapeshell*/posix_isattynsfisis
Run exec()/shell_exec()/system() through /bin/sh -c with PHP-faithful line handling and return values. Port escapeshellcmd() (Unix branch, including paired-quote handling) and escapeshellarg(). Implement posix_isatty() via std::io::IsTerminal. uid/signal/process-title helpers and proc_open-dependent status calls remain TODO(phase-d): they need a libc/syscall crate or the deferred process/signal subsystems. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-21refactor(php-shim): split lib.rsnsfisis