Hi!
I'd like to provide a gettimeofday() function for systems that do not
have it (at least Win32).
I already wrote a module that works, see below. But this module
overwrites the existing gettimeofday module. I do not know how to
integrate the changes into the existing module because of the autoconf
and M4 magic that is involved.
I have two questions: Would you consider integrating such changes into
the existing module at all? If so, how can this be done?
Regards,
Martin
Description:
gettimeofday() function: return current time.
Files:
lib/gettimeofday.h
lib/gettimeofday.c
m4/gettimeofday.m4
Depends-on:
configure.ac:
gl_FUNC_GETTIMEOFDAY
Makefile.am:
Include:
"gettimeofday.h"
License:
LGPL
Maintainer:
all
#serial 1
# Copyright (C) 2005 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
AC_DEFUN([gl_FUNC_GETTIMEOFDAY],
[
AC_LIBSOURCES([gettimeofday.c, gettimeofday.h])
gl_PREREQ_GETTIMEOFDAY
AC_REPLACE_FUNCS(gettimeofday)
])
# Prerequisites for lib/gettimeofday.c
AC_DEFUN([gl_PREREQ_GETTIMEOFDAY],
[
AC_REQUIRE([AC_HEADER_TIME])
AC_CHECK_TYPE([suseconds_t], ,
[AC_DEFINE([suseconds_t], [int],
[Define to `int' if `suseconds_t' is missing.])
],
[
# if TIME_WITH_SYS_TIME
# include <sys/time.h>
# include <time.h>
# else
# if HAVE_SYS_TIME_H
# include <sys/time.h>
# else
# include <time.h>
# endif
# endif
])
AC_CACHE_CHECK([for struct timeval], fu_cv_sys_struct_timeval,
[AC_TRY_COMPILE(
[
# if TIME_WITH_SYS_TIME
# include <sys/time.h>
# include <time.h>
# else
# if HAVE_SYS_TIME_H
# include <sys/time.h>
# else
# include <time.h>
# endif
# endif
],
[static struct timeval x; x.tv_sec = x.tv_usec;],
fu_cv_sys_struct_timeval=yes,
fu_cv_sys_struct_timeval=no)
])
if test $fu_cv_sys_struct_timeval = yes; then
AC_DEFINE(HAVE_STRUCT_TIMEVAL, 1,
[Define if struct timeval is declared in <time.h> or
<sys/time.h>. ])
fi
])
#ifndef GETTIMEOFDAY_H
#define GETTIMEOFDAY_H
#include <config.h>
#if TIME_WITH_SYS_TIME
# include <sys/time.h>
# include <time.h>
#else
# if HAVE_SYS_TIME_H
# include <sys/time.h>
# else
# include <time.h>
# endif
#endif
#ifndef HAVE_STRUCT_TIMEVAL
struct timeval
{
time_t tv_sec;
suseconds_t tv_usec;
};
#endif
#ifndef HAVE_GETTIMEOFDAY
int gettimeofday(struct timeval *tp, void *tzp);
#endif
#endif /* GETTIMEOFDAY_H */
#include <config.h>
#ifdef WIN32
#include <sys/timeb.h>
#endif
#include "gettimeofday.h"
int gettimeofday(struct timeval *tp, void *tzp)
{
#ifdef WIN32
struct _timeb timebuffer;
_ftime(&timebuffer);
tp->tv_sec = timebuffer.time;
tp->tv_usec = timebuffer.millitm * 1000;
return 0;
#else
tp->tv_sec = time(NULL);
tp->tv_usec = 0;
return 0;
#endif
}
_______________________________________________
bug-gnulib mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/bug-gnulib