Skip to content

Commit

Permalink
Auto merge of #6253 - ehuss:backport-msys-progress, r=alexcrichton
Browse files Browse the repository at this point in the history
[1.30.0] Backport msys progress bar fix for stable.

Locks max terminal width to 60 on msys-based terminals.
  • Loading branch information
bors committed Nov 2, 2018
2 parents 36d9682 + a4ba183 commit a1a4ad3
Showing 1 changed file with 10 additions and 9 deletions.
19 changes: 10 additions & 9 deletions src/cargo/core/shell.rs
Original file line number Diff line number Diff line change
Expand Up @@ -358,8 +358,7 @@ mod imp {
mod imp {
extern crate winapi;

use std::mem;
use std::ptr;
use std::{cmp, mem, ptr};
use self::winapi::um::fileapi::*;
use self::winapi::um::handleapi::*;
use self::winapi::um::processenv::*;
Expand Down Expand Up @@ -395,13 +394,15 @@ mod imp {
CloseHandle(h);
if rc != 0 {
let width = (csbi.srWindow.Right - csbi.srWindow.Left) as usize;
// Some terminals, such as mintty, always return 79 instead of
// the actual width. In that case, use a conservative value.
if width == 79 {
return Some(60);
} else {
return Some(width);
}
// Unfortunately cygwin/mintty does not set the size of the
// backing console to match the actual window size. This
// always reports a size of 80 or 120 (not sure what
// determines that). Use a conservative max of 60 which should
// work in most circumstances. ConEmu does some magic to
// resize the console correctly, but there's no reasonable way
// to detect which kind of terminal we are running in, or if
// GetConsoleScreenBufferInfo returns accurate information.
return Some(cmp::min(60, width));
}
return None;
}
Expand Down

0 comments on commit a1a4ad3

Please sign in to comment.