Gabriela Gibson wrote on Sat, Apr 06, 2013 at 13:01:52 +0100: > On 4/2/13, Daniel Shahaf <danie...@elego.de> wrote: >> I'm not sure how to interpret a return value of (0,0) that's not >> accompanied by an error flag (C errno!=0, or a Python exception). Is >> that normal behaviour, a bug we should be working around in our code, or >> an indication of a bug in our logic in the preceding lines? >> > I took a look around a few distros[1], and in no case does this function > return an error, to cater for dumb terminals if I understand this > correctly. > > More info: http://en.wikipedia.org/wiki/POSIX_terminal_interface >
So, in summary: the OS just forwards whatever its notion of window size is, without sanity checking. >> i.e., if (0,0) means "_get_term_width() was going 35mph in a school zone >> at the time of the call to fcntl.ioctl()", we should fix that. > > _get_term_width()'s 'sin' is not checking for a sane minimum size, which > is I think is a reasonable omission, because setting up a TERM with a > claimed size of (0,0) isn't easily anticipated and we're only crashing > svn and not aeroplanes :> > Actually just the test harness crashes. But isn't what you just said a better fix? Rather than hard-code (0,0), sanity-check the width and do something (fall back to 80, bail, ...) if it's less than $THRESHOLD? Where $THRESHOLD is at least 1, but could reasonably be 7 (for "success" or "failure") or more. >> I'm not objected to it, but it's not clear to me what it gains either >> (shaves 100 syscalls >> from a 'make check' run?). > > I agree, it's a a bit very picky to fix this, now that I think about it > -- coding on muds gets you this reflexive habit lest you summon the lag > monster. You should feel right at home with stefan2's work, then :-)