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 |
||
|---|---|---|
| .. | ||
| commands | ||
| data | ||
| util | ||
| commands.rs | ||