Skip to content

Commit 1548018

Browse files
committed
Fix panic if stdout disappears
1 parent b697df1 commit 1548018

File tree

1 file changed

+24
-20
lines changed

1 file changed

+24
-20
lines changed

src/rustup-cli/rustup_mode.rs

Lines changed: 24 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -702,67 +702,71 @@ fn show(cfg: &Cfg) -> Result<()> {
702702
print_header("installed toolchains")
703703
}
704704
let default_name = cfg.get_default()?;
705-
for t in installed_toolchains {
706-
if default_name == t {
707-
println!("{} (default)", t);
705+
let mut t = term2::stdout();
706+
for it in installed_toolchains {
707+
if default_name == it {
708+
let _ = writeln!(t, "{} (default)", it);
708709
} else {
709-
println!("{}", t);
710+
let _ = writeln!(t, "{}", it);
710711
}
711712
}
712713
if show_headers {
713-
println!("")
714-
};
714+
let _ = writeln!(t, "");
715+
}
715716
}
716717

717718
if show_active_targets {
718719
if show_headers {
719720
print_header("installed targets for active toolchain");
720721
}
721-
for t in active_targets {
722-
println!(
722+
let mut t = term2::stdout();
723+
for at in active_targets {
724+
let _ = writeln!(t,
723725
"{}",
724-
t.component
726+
at.component
725727
.target
726728
.as_ref()
727729
.expect("rust-std should have a target")
728730
);
729731
}
730732
if show_headers {
731-
println!("")
732-
};
733+
let _ = writeln!(t, "");
734+
}
733735
}
734736

735737
if show_active_toolchain {
736738
if show_headers {
737739
print_header("active toolchain")
738740
}
739741

742+
let mut t = term2::stdout();
743+
740744
match active_toolchain {
741745
Ok(atc) => match atc {
742746
Some((ref toolchain, Some(ref reason))) => {
743-
println!("{} ({})", toolchain.name(), reason);
744-
println!("{}", common::rustc_version(toolchain));
747+
let _ = writeln!(t, "{} ({})", toolchain.name(), reason);
748+
let _ = writeln!(t, "{}", common::rustc_version(toolchain));
745749
}
746750
Some((ref toolchain, None)) => {
747-
println!("{} (default)", toolchain.name());
748-
println!("{}", common::rustc_version(toolchain));
751+
let _ = writeln!(t, "{} (default)", toolchain.name());
752+
let _ = writeln!(t, "{}", common::rustc_version(toolchain));
749753
}
750754
None => {
751-
println!("no active toolchain");
755+
let _ = writeln!(t, "no active toolchain");
752756
}
753757
},
754758
Err(err) => {
755759
if let Some(cause) = err.source() {
756-
println!("(error: {}, {})", err, cause);
760+
let _ = writeln!(t, "(error: {}, {})", err, cause);
757761
} else {
758-
println!("(error: {})", err);
762+
let _ = writeln!(t, "(error: {})", err);
759763
}
760764
}
761765
}
762766

763767
if show_headers {
764-
println!("")
765-
};
768+
let _ = writeln!(t, "");
769+
}
766770
}
767771

768772
fn print_header(s: &str) {

0 commit comments

Comments
 (0)