svn commit: r242519 - head/usr.sbin/watchdogd
Ian Lepore
freebsd at damnhippie.dyndns.org
Sat Nov 3 20:16:58 UTC 2012
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
More information about the svn-src-head
mailing list