From owner-freebsd-bugs Sat Jul 26 12:29:29 1997 Return-Path: Received: (from root@localhost) by hub.freebsd.org (8.8.5/8.8.5) id MAA15011 for bugs-outgoing; Sat, 26 Jul 1997 12:29:29 -0700 (PDT) Received: from acromail.ml.org (acroal.vip.best.com [206.86.222.181]) by hub.freebsd.org (8.8.5/8.8.5) with ESMTP id MAA14959; Sat, 26 Jul 1997 12:28:52 -0700 (PDT) Received: from localhost (kernel@localhost) by acromail.ml.org (8.8.6/8.8.5) with SMTP id MAA09851; Sat, 26 Jul 1997 12:29:07 -0700 (PDT) Date: Sat, 26 Jul 1997 12:29:07 -0700 (PDT) From: FreeBSD Technical Reader To: denny1@home.com cc: freebsd-gnats-submit@FreeBSD.ORG, GNATS Management , freebsd-bugs@hub.freebsd.org Subject: Re: bin/4154: wish /bin/sleep handled fractions of a second. In-Reply-To: <199707240518.WAA09252@hub.freebsd.org> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-freebsd-bugs@FreeBSD.ORG X-Loop: FreeBSD.org Precedence: bulk Wouldn't you want to use usleep() for that only thing is that I think that is good only about to 0.02 seconds generally unless you change HZ which messes up some other things (I wonder if these would be fixed by a make world) On Wed, 23 Jul 1997 denny1@home.com wrote: > > >Number: 4154 > >Category: bin > >Synopsis: wish /bin/sleep handled fractions of a second. > >Confidential: no > >Severity: non-critical > >Priority: low > >Responsible: freebsd-bugs > >State: open > >Class: change-request > >Submitter-Id: current-users > >Arrival-Date: Wed Jul 23 22:20:01 PDT 1997 > >Last-Modified: > >Originator: Denny Gentry > >Organization: > >Release: N/A > >Environment: > Fix was developed on OpenBSD. > >Description: > I have often wished /bin/sleep could sleep for less than one second, > in the inner loop of a script which I want to slow down slightly. > Such a feature would be an extension to POSIX, which deals only > with full seconds. > This has been implemented in OpenBSD. The crucial portion of the > code I submitted there has been pasted below. It would be nice to > get such an extension adopted more widely in *BSD, so portable scripts > could use it. > >How-To-Repeat: > /bin/sleep 0.5 > wish it worked the way you want. > >Fix: > /* $OpenBSD: sleep.c,v 1.6 1997/06/29 08:09:21 denny Exp $ */ > > cp = *argv; > while ((*cp != '\0') && (*cp != '.')) { > if (!isdigit(*cp)) usage(); > secs = (secs * 10) + (*cp++ - '0'); > } > > /* Handle fractions of a second */ > if (*cp == '.') { > *cp++ = '\0'; > for (i = 100000000; i > 0; i /= 10) { > if (*cp == '\0') break; > if (!isdigit(*cp)) usage(); > nsecs += (*cp++ - '0') * i; > } > } > > rqtp.tv_sec = (time_t) secs; > rqtp.tv_nsec = nsecs; > > if ((secs > 0) || (nsecs > 0)) > (void)nanosleep(&rqtp, NULL); > >Audit-Trail: > >Unformatted: >