on master help sign in
Add proper handling of empty PAGER variables
commitbb1f5aa841d3495ae99b8796035ad7300b8f9155 authorsharkdp <davidpeter@web.de> dateWed 17 Oct 2018, 20:31 (8 years ago) parent2109a78
1 file changed+26−21
src/output.rs+26−21
src/output.rs+26−21
@@ -33,29 +33,34 @@ impl OutputType {
3333 let pagerflags = shell_words::split(&pager)
3434 .chain_err(|| "Could not parse (BAT_)PAGER environment variable.")?;
3535
36− let less_path = PathBuf::from(&pagerflags[0]);
37− let is_less = less_path.file_stem() == Some(&OsString::from("less"));
36+ match pagerflags.split_first() {
37+ Some((pager_name, args)) => {
38+ let pager_path = PathBuf::from(pager_name);
39+ let is_less = pager_path.file_stem() == Some(&OsString::from("less"));
3840
39− let mut process = if is_less {
40− let mut p = Command::new(&less_path);
41− if pagerflags.len() == 1 {
42− p.args(vec!["--RAW-CONTROL-CHARS", "--no-init"]);
43− if quit_if_one_screen {
44− p.arg("--quit-if-one-screen");
45− }
46− }
47− p.env("LESSCHARSET", "UTF-8");
48− p
49− } else {
50− Command::new(&less_path)
51− };
41+ let mut process = if is_less {
42+ let mut p = Command::new(&pager_path);
43+ if pagerflags.len() == 1 {
44+ p.args(vec!["--RAW-CONTROL-CHARS", "--no-init"]);
45+ if quit_if_one_screen {
46+ p.arg("--quit-if-one-screen");
47+ }
48+ }
49+ p.env("LESSCHARSET", "UTF-8");
50+ p
51+ } else {
52+ Command::new(&pager_path)
53+ };
5254
53− Ok(process
54− .args(&pagerflags[1..])
55− .stdin(Stdio::piped())
56− .spawn()
57− .map(OutputType::Pager)
58− .unwrap_or_else(|_| OutputType::stdout()))
55+ Ok(process
56+ .args(args)
57+ .stdin(Stdio::piped())
58+ .spawn()
59+ .map(OutputType::Pager)
60+ .unwrap_or_else(|_| OutputType::stdout()))
61+ }
62+ None => Ok(OutputType::stdout()),
63+ }
5964 }
6065
6166 fn stdout() -> Self {