diff options
author | Tim Rice <tim@multitalents.net> | 2003-03-18 10:21:40 -0800 |
---|---|---|
committer | Tim Rice <tim@multitalents.net> | 2003-03-18 10:21:40 -0800 |
commit | 4e4dc561ae948a410fb82fd8b0960ec2cf8e2e70 (patch) | |
tree | 0b6421755509120a24fb6881d71b0b540a7ff839 | |
parent | cafbcc73349f4e14afed5207b81a1205afc2cee2 (diff) | |
download | openssh-git-4e4dc561ae948a410fb82fd8b0960ec2cf8e2e70.tar.gz |
[configure.ac openbsd-compat/bsd-misc.c openbsd-compat/bsd-misc.h]
add nanosleep(). testing/corrections by Darren Tucker <dtucker@zip.com.au>
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | configure.ac | 4 | ||||
-rw-r--r-- | openbsd-compat/bsd-misc.c | 33 | ||||
-rw-r--r-- | openbsd-compat/bsd-misc.h | 11 |
4 files changed, 50 insertions, 4 deletions
@@ -1,3 +1,7 @@ +20030318 + - (tim) [configure.ac openbsd-compat/bsd-misc.c openbsd-compat/bsd-misc.h] + add nanosleep(). testing/corrections by Darren Tucker <dtucker@zip.com.au> + 20030317 - (djm) Fix return value checks for RAND_bytes. Report from Steve G <linux_4ever@yahoo.com> @@ -1218,4 +1222,4 @@ save auth method before monitor_reset_key_state(); bugzilla bug #284; ok provos@ -$Id: ChangeLog,v 1.2630 2003/03/17 05:13:53 djm Exp $ +$Id: ChangeLog,v 1.2631 2003/03/18 18:21:40 tim Exp $ diff --git a/configure.ac b/configure.ac index 3469af2f..83575758 100644 --- a/configure.ac +++ b/configure.ac @@ -1,4 +1,4 @@ -# $Id: configure.ac,v 1.110 2003/03/10 00:38:10 djm Exp $ +# $Id: configure.ac,v 1.111 2003/03/18 18:21:41 tim Exp $ AC_INIT AC_CONFIG_SRCDIR([ssh.c]) @@ -1483,6 +1483,8 @@ if test "x$ac_cv_have_struct_timeval" = "xyes" ; then have_struct_timeval=1 fi +AC_CHECK_TYPES(struct timespec) + # If we don't have int64_t then we can't compile sftp-server. So don't # even attempt to do it. if test "x$ac_cv_have_int64_t" = "xno" -a \ diff --git a/openbsd-compat/bsd-misc.c b/openbsd-compat/bsd-misc.c index d7180d42..b8e9996d 100644 --- a/openbsd-compat/bsd-misc.c +++ b/openbsd-compat/bsd-misc.c @@ -25,7 +25,7 @@ #include "includes.h" #include "xmalloc.h" -RCSID("$Id: bsd-misc.c,v 1.11 2003/01/09 22:53:13 djm Exp $"); +RCSID("$Id: bsd-misc.c,v 1.12 2003/03/18 18:21:41 tim Exp $"); /* * NB. duplicate __progname in case it is an alias for argv[0] @@ -135,3 +135,34 @@ setgroups(size_t size, const gid_t *list) } #endif +#if !defined(HAVE_NANOSLEEP) && !defined(HAVE_NSLEEP) +int nanosleep(const struct timespec *req, struct timespec *rem) +{ + int rc, saverrno; + extern int errno; + struct timeval tstart, tstop, tremain, time2wait; + + TIMESPEC_TO_TIMEVAL(&time2wait, req) + (void) gettimeofday(&tstart, NULL); + rc = select(0, NULL, NULL, NULL, &time2wait); + if (rc == -1) { + saverrno = errno; + (void) gettimeofday (&tstop, NULL); + errno = saverrno; + tremain.tv_sec = time2wait.tv_sec - + (tstop.tv_sec - tstart.tv_sec); + tremain.tv_usec = time2wait.tv_usec - + (tstop.tv_usec - tstart.tv_usec); + tremain.tv_sec += tremain.tv_usec / 1000000L; + tremain.tv_usec %= 1000000L; + } else { + tremain.tv_sec = 0; + tremain.tv_usec = 0; + } + TIMEVAL_TO_TIMESPEC(&tremain, rem) + + return(rc); +} + +#endif + diff --git a/openbsd-compat/bsd-misc.h b/openbsd-compat/bsd-misc.h index 98119604..78d9ccdd 100644 --- a/openbsd-compat/bsd-misc.h +++ b/openbsd-compat/bsd-misc.h @@ -22,7 +22,7 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* $Id: bsd-misc.h,v 1.6 2002/06/13 21:34:58 mouring Exp $ */ +/* $Id: bsd-misc.h,v 1.7 2003/03/18 18:21:41 tim Exp $ */ #ifndef _BSD_MISC_H #define _BSD_MISC_H @@ -80,5 +80,14 @@ int truncate (const char *path, off_t length); int setgroups(size_t size, const gid_t *list); #endif +#if !defined(HAVE_NANOSLEEP) && !defined(HAVE_NSLEEP) +#ifndef HAVE_STRUCT_TIMESPEC +struct timespec { + time_t tv_sec; + long tv_nsec; +}; +#endif +int nanosleep(const struct timespec *req, struct timespec *rem); +#endif #endif /* _BSD_MISC_H */ |