On 03/21/11 08:46, Martynas Venckus wrote:
> On 3/21/11, Matthieu Herrb <matthieu.he...@laas.fr> wrote:
>> rain(6) is useless. but still it should provide sane defaults
>> ihmo. ok?
> 
> Or use sane defaults based on terminal speed;  like worms(8) does.

For this kind of app (which is indeed quite a waste of space), I find
120 a sane enough default for any terminal.

The suggested diff is OK with me.

/Alexander

> Index: rain.6
> ===================================================================
> RCS file: /cvs/src/games/rain/rain.6,v
> retrieving revision 1.14
> diff -u -r1.14 rain.6
> --- rain.6    31 May 2007 19:19:18 -0000      1.14
> +++ rain.6    21 Mar 2011 07:39:02 -0000
> @@ -43,11 +43,18 @@
>  is modeled after the
>  .Tn VAX/VMS
>  program of the same name.
> -To obtain the proper effect, either the terminal must be set for 9600 baud
> -or the
> -.Fl d
> -option must be used to specify a delay, in milliseconds, between each update.
> -A reasonable delay is 120; the default is 0.
> +.Pp
> +The options are as follows:
> +.Bl -tag -width "-l length"
> +.It Fl d Ar delay
> +Specifies a delay, in milliseconds, between each update.
> +This is useful for fast terminals.
> +Reasonable values are around 20-200.
> +The default is based on the terminal speed.
> +If the terminal is 9600 baud or slower no delay is used.
> +Otherwise, the delay is computed via the following formula:
> +.Dl delay = speed / 9600 - 1.
> +.El
>  .Pp
>  As with any
>  .Xr curses 3
> Index: rain.c
> ===================================================================
> RCS file: /cvs/src/games/rain/rain.c,v
> retrieving revision 1.15
> diff -u -r1.15 rain.c
> --- rain.c    27 Oct 2009 23:59:26 -0000      1.15
> +++ rain.c    21 Mar 2011 07:31:37 -0000
> @@ -40,6 +40,7 @@
>  #include <signal.h>
>  #include <stdio.h>
>  #include <stdlib.h>
> +#include <termios.h>
>  #include <unistd.h>
> 
>  volatile sig_atomic_t sig_caught = 0;
> @@ -55,6 +56,13 @@
>       u_int delay = 0;
>       int ch;
>       int xpos[5], ypos[5];
> +     struct termios term;
> +     speed_t speed;
> +
> +     /* set default delay based on terminal baud rate */
> +     if (tcgetattr(STDOUT_FILENO, &term) == 0 &&
> +         (speed = cfgetospeed(&term)) > B9600)
> +             delay = (speed / B9600) - 1;
> 
>       while ((ch = getopt(argc, argv, "d:h")) != -1)
>               switch(ch) {

Reply via email to