bin/119705: [PATCH] make iostat a bit smarter about the number
of tty rows
Giorgos Keramidas
keramida at FreeBSD.org
Wed Jan 16 07:50:05 UTC 2008
The following reply was made to PR bin/119705; it has been noted by GNATS.
From: Giorgos Keramidas <keramida at freebsd.org>
To: Maxim Konovalov <maxim at macomnet.ru>
Cc: Bruce Evans <bde at freebsd.org>, bug-followup at freebsd.org
Subject: Re: bin/119705: [PATCH] make iostat a bit smarter about the number
of tty rows
Date: Wed, 16 Jan 2008 09:41:38 +0200
On 2008-01-16 09:39, Giorgos Keramidas <keramida at freebsd.org> wrote:
> Both fixed, I think. The new version of the patch is attached below,
> after the following changes:
>
> * Reset wresized when doresize() completes its work
> * Only call isatty(fileno(stdout)) once, instead of every time
> doresize() is called
> * Only install a SIGWINCH handler if isatty() is true
> diff --git a/usr.sbin/iostat/iostat.c b/usr.sbin/iostat/iostat.c
> --- a/usr.sbin/iostat/iostat.c
> +++ b/usr.sbin/iostat/iostat.c
[...]
> @@ -426,6 +433,20 @@ main(int argc, char **argv)
> */
> (void)signal(SIGCONT, needhdr);
>
> + /*
> + * If our standard output is a tty, then install a SIGWINCH handler
> + * and set wresized so that our first iteration through the main
> + * iostat loop will peek at the terminal's current rows to find out
> + * how many lines can fit in a screenful of output.
> + */
> + if (isatty(fileno(stdout)) != 0) {
> + wresized = 1;
> + (void)signal(SIGWINCH, needresize);
> + } else {
> + wrows = IOSTAT_DEFAULT_ROWS;
> + return;
Oops. `return' doesn't belong here, of course. Running iostat | more
caught what I missed :)
More information about the freebsd-bugs
mailing list