blob: f16a236d53cad56bc4f1089b4422b6d939ac9e32 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
// SPDX-License-Identifier: AGPL-3.0-only
use std::{
io::{Read, Write},
process::{exit, Command, Stdio},
};
fn main() {
let args = std::env::args().skip(1);
let args = args.collect::<Vec<_>>();
if args.len() == 0 {
eprintln!("desterr: no command");
exit(1);
}
let mut proc = Command::new(&args[0])
.args(&args[1..])
.stderr(Stdio::piped())
.stdout(Stdio::inherit())
.stdin(Stdio::inherit())
.spawn()
.unwrap();
let mut cstderr = proc.stderr.take().unwrap();
let mut buf = [0u8; 1024];
let mut pstderr = std::io::stderr();
while let Ok(r) = cstderr.read(&mut buf) {
if r == 0 {
break;
}
pstderr.write_fmt(format_args!("\x1b[31m")).unwrap();
pstderr.write(&buf[..r]).unwrap();
pstderr.write_fmt(format_args!("\x1b[0m")).unwrap();
}
}
|