On Sat, 2012-11-03 at 12:50 -0700, Xin Li wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA256
> 
> On 11/3/12 11:45 AM, Ian Lepore wrote:
> > On Sat, 2012-11-03 at 18:38 +0000, Xin LI wrote:
> >> Author: delphij Date: Sat Nov  3 18:38:28 2012 New Revision:
> >> 242519 URL: http://svn.freebsd.org/changeset/base/242519
> > [...]
> > Shouldn't we also change the type of the variable 'a' from double
> > to int64 (and the strtod() and the 1e9 constant), thus removing all
> > dregs of floating point where it isn't really needed?  (Sorry, but
> > 20 years of working on wimpy embedded systems without FP hardware
> > just make me blurt out these things automatically).
> 
> While it do make sense in practical (in my opinion), I think that
> would lose functionality because the watchdog can be programmed in a
> manner that timeout is set to smaller than 1 second (not for the
> demonized case).  Maybe we can make it an build option?
> 
> Index: Makefile
> ===================================================================
> - --- Makefile    (revision 242519)
> +++ Makefile    (working copy)
> @@ -7,7 +7,15 @@ MAN=   watchdogd.8 watchdog.8
>  LDADD= -lutil
>  DPADD= ${LIBUTIL}
> 
> +.if defined(SMALL)
> +CFLAGS+=       -DSMALL
> +.endif
> +
>  .include <bsd.prog.mk>
> 
>  test:  ${PROG}
> +.if defined(SMALL)
> +       ./${PROG} -t 1
> +.else
>         ./${PROG} -t 1.0
> +.endif
> Index: watchdogd.c
> ===================================================================
> - --- watchdogd.c (revision 242519)
> +++ watchdogd.c (working copy)
> @@ -241,7 +241,11 @@ parseargs(int argc, char *argv[])
>  {
>         int c;
>         char *p;
> +#if defined(SMALL)
> +       long a;
> +#else
>         double a;
> +#endif
> 
>         c = strlen(argv[0]);
>         if (argv[0][c - 1] == 'd')
> @@ -273,7 +277,11 @@ parseargs(int argc, char *argv[])
>                 case 't':
>                         p = NULL;
>                         errno = 0;
> +#if defined(SMALL)
> +                       a = strtol(optarg, &p, 0);
> +#else
>                         a = strtod(optarg, &p);
> +#endif
>                         if ((p != NULL && *p != '\0') || errno != 0)
>                                 errx(EX_USAGE, "-t argument is not a
> number");
>                         if (a < 0)
> 

Oh.  I remembered that < WD_TO_1SEC check and somehow completely forgot
the is_daemon part and its implication; I just thought timeouts of less
than 1 second weren't allowed.  It's hard for me to imagine someone
setting the timeout to less than 1 second, but if that's been a
supported feature all along then we should probably just leave things
as-is.  Getting libm out of the picture was the big win, the remaining
FP code is a pretty small thing.

-- Ian


_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to