Rust (since 1.62) ignores EPIPE by default (see [Rust #62569]), causing writes to closed pipes to return `io::ErrorKind::BrokenPipe` errors. The `println!` macro panics on these errors, producing a confusing backtrace instead of the silent exit expected of Unix CLI tools. To avoid the use of `print!` and `println!`, the `radicle-term` helper functions use `write!` and `writeln!`. This lays the groundwork for the `rad` CLI to transition to using only `radicle-term` functions. There was a first attempt made, which is documented here. A process-wide SIGPIPE reset (`SIG_DFL`) was ruled out because `rad` manages child processes via libgit2 pipes and communicates with the radicle node over Unix sockets. Resetting SIGPIPE globally caused `rad` itself to be killed during internal pipe operations (e.g. during `rad remote add --fetch`), producing flaky test failures. [Rust #62569] https://github.com/rust-lang/rust/issues/62569 |
||
|---|---|---|
| .. | ||
| examples | ||
| src | ||
| tests | ||
| CHANGELOG.md | ||
| Cargo.toml | ||
| build.rs | ||