mirror of
https://github.com/fish-shell/fish-shell
synced 2025-01-12 21:18:53 +00:00
fish_indent: Correctly read from builtin stdin
This still used read_file, but we don't *really* have an fd if we're connected to another builtin.
This commit is contained in:
parent
1b0c53e30e
commit
ab1b6bcea5
1 changed files with 10 additions and 4 deletions
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
use std::ffi::{CString, OsStr};
|
use std::ffi::{CString, OsStr};
|
||||||
use std::fs;
|
use std::fs;
|
||||||
use std::io::{stdin, Read, Write};
|
use std::io::{Read, Write};
|
||||||
use std::os::unix::ffi::OsStrExt;
|
use std::os::unix::ffi::OsStrExt;
|
||||||
|
|
||||||
use crate::panic::panic_handler;
|
use crate::panic::panic_handler;
|
||||||
|
@ -848,10 +848,16 @@ fn do_indent(streams: &mut IoStreams, args: Vec<WString>) -> i32 {
|
||||||
));
|
));
|
||||||
return STATUS_CMD_ERROR.unwrap();
|
return STATUS_CMD_ERROR.unwrap();
|
||||||
}
|
}
|
||||||
match read_file(stdin()) {
|
let mut zero = 0;
|
||||||
Ok(s) => src = s,
|
let buf = Vec::with_capacity(1024);
|
||||||
Err(()) => return STATUS_CMD_ERROR.unwrap(),
|
let mut expression = WString::new();
|
||||||
|
for (arg, _) in Arguments::new(&buf, &mut zero, streams, 1024) {
|
||||||
|
if !expression.is_empty() {
|
||||||
|
expression.push('\n')
|
||||||
}
|
}
|
||||||
|
expression.push_utfstr(&arg);
|
||||||
|
}
|
||||||
|
src = expression;
|
||||||
} else {
|
} else {
|
||||||
let arg = args[i];
|
let arg = args[i];
|
||||||
match fs::File::open(OsStr::from_bytes(&wcs2string(arg))) {
|
match fs::File::open(OsStr::from_bytes(&wcs2string(arg))) {
|
||||||
|
|
Loading…
Reference in a new issue