From 3b5bf6e92a1e638697666fc51780be05c5c1ab4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?IOhannes=20m=20zm=C3=B6lnig?= Date: Wed, 18 Jun 2003 13:53:44 +0000 Subject: use "gettimeofday()" instead of "ftime()" svn path=/trunk/externals/zexy/; revision=707 --- src/z_datetime.c | 33 ++++++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/src/z_datetime.c b/src/z_datetime.c index d6b59a3..db2da5e 100644 --- a/src/z_datetime.c +++ b/src/z_datetime.c @@ -1,5 +1,6 @@ /* (c) 1202:forum::für::umläute:2000 + 1506:forum::für::umläute:2003: use timeb only if needed (like on windoze) "time" gets the current time from the system "date" gets the current date from the system @@ -9,6 +10,7 @@ #ifdef NT #pragma warning( disable : 4244 ) #pragma warning( disable : 4305 ) +#define USE_TIMEB #endif #ifdef MACOSX @@ -19,7 +21,12 @@ #include "zexy.h" #include +#ifdef USE_TIMEB #include +#else +#include +#endif + /* ----------------------- time --------------------- */ @@ -59,13 +66,21 @@ static void *time_new(t_symbol *s, int argc, t_atom *argv) static void time_bang(t_time *x) { - struct timeb mytime; struct tm *resolvetime; - + float ms = 0.f; +#ifdef USE_TIMEB + struct timeb mytime; ftime(&mytime); resolvetime = (x->GMT)?gmtime(&mytime.time):localtime(&mytime.time); - - outlet_float(x->x_outlet4, (t_float)(mytime.millitm)); + ms=mytime.millitm; +#else + struct timeval tv; + gettimeofday(&tv, 0); + resolvetime = (x->GMT)?gmtime(&tv.tv_sec):localtime(&tv.tv_sec); + ms = tv.tv_usec*0.001; +#endif + // outlet_float(x->x_outlet4, (t_float)(mytime.millitm)); + outlet_float(x->x_outlet4, (t_float)(ms)); outlet_float(x->x_outlet3, (t_float)resolvetime->tm_sec); outlet_float(x->x_outlet2, (t_float)resolvetime->tm_min); outlet_float(x->x_outlet1, (t_float)resolvetime->tm_hour); @@ -126,12 +141,16 @@ static void *date_new(t_symbol *s, int argc, t_atom *argv) static void date_bang(t_date *x) { - struct timeb mytime; struct tm *resolvetime; - +#ifdef USE_TIMEB + struct timeb mytime; ftime(&mytime); resolvetime=(x->GMT)?gmtime(&mytime.time):localtime(&mytime.time); - +#else + struct timeval tv; + gettimeofday(&tv, 0); + resolvetime = (x->GMT)?gmtime(&tv.tv_sec):localtime(&tv.tv_sec); +#endif outlet_float(x->x_outlet3, (t_float)resolvetime->tm_mday); outlet_float(x->x_outlet2, (t_float)resolvetime->tm_mon + 1); outlet_float(x->x_outlet1, (t_float)resolvetime->tm_year + 1900); -- cgit v1.2.1