diff options
Diffstat (limited to 'lib/common/BoxTime.cpp')
-rw-r--r-- | lib/common/BoxTime.cpp | 32 |
1 files changed, 28 insertions, 4 deletions
diff --git a/lib/common/BoxTime.cpp b/lib/common/BoxTime.cpp index 960fc329..eafb244f 100644 --- a/lib/common/BoxTime.cpp +++ b/lib/common/BoxTime.cpp @@ -9,7 +9,17 @@ #include "Box.h" -#include <time.h> +#ifdef HAVE_SYS_TIME_H + #include <sys/time.h> +#endif +#ifdef HAVE_TIME_H + #include <time.h> +#endif +#ifdef HAVE_SYSLOG_H + #include <syslog.h> +#endif +#include <errno.h> +#include <string.h> #include "BoxTime.h" @@ -19,13 +29,27 @@ // // Function // Name: GetCurrentBoxTime() -// Purpose: Returns the current time as a box time. (1 sec precision) +// Purpose: Returns the current time as a box time. +// (1 sec precision, or better if supported by system) // Created: 2003/10/08 // // -------------------------------------------------------------------------- box_time_t GetCurrentBoxTime() { + #ifdef HAVE_GETTIMEOFDAY + struct timeval tv; + if (gettimeofday(&tv, NULL) != 0) + { + ::syslog(LOG_ERR, "gettimeofday() failed (%s), " + "dropping precision", strerror(errno)); + } + else + { + box_time_t timeNow = (tv.tv_sec * MICRO_SEC_IN_SEC_LL) + + tv.tv_usec; + return timeNow; + } + #endif + return SecondsToBoxTime(time(0)); } - - |