Date: Sat, 03 Nov 2012 14:16:29 -0600 From: Ian Lepore <freebsd@damnhippie.dyndns.org> To: d@delphij.net Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, Xin LI <delphij@freebsd.org> Subject: Re: svn commit: r242519 - head/usr.sbin/watchdogd Message-ID: <1351973789.1120.122.camel@revolution.hippie.lan> In-Reply-To: <50957588.5070504@delphij.net> References: <201211031838.qA3IcSUR021854@svn.freebsd.org> <1351968359.1120.106.camel@revolution.hippie.lan> <50957588.5070504@delphij.net>
next in thread | previous in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1351973789.1120.122.camel>