diff options
author | Stefan Metzmacher <metze@samba.org> | 2011-09-22 20:33:22 +0200 |
---|---|---|
committer | Stefan Metzmacher <metze@samba.org> | 2011-09-23 00:15:31 +0200 |
commit | 66f8070dd3a6a5c51c8e6d37deb7c52a9a717e1b (patch) | |
tree | a4201a369a93fe191a90a6a7d1e68b7585e8a072 /source3 | |
parent | 1bb6e6758cffea967b6b8299553653cf4192f2e9 (diff) | |
download | samba-66f8070dd3a6a5c51c8e6d37deb7c52a9a717e1b.tar.gz samba-66f8070dd3a6a5c51c8e6d37deb7c52a9a717e1b.tar.bz2 samba-66f8070dd3a6a5c51c8e6d37deb7c52a9a717e1b.zip |
lib/util: move some timespec helpers from source3 to the toplevel
metze
Autobuild-User: Stefan Metzmacher <metze@samba.org>
Autobuild-Date: Fri Sep 23 00:15:31 CEST 2011 on sn-devel-104
Diffstat (limited to 'source3')
-rw-r--r-- | source3/include/proto.h | 10 | ||||
-rw-r--r-- | source3/lib/time.c | 146 |
2 files changed, 0 insertions, 156 deletions
diff --git a/source3/include/proto.h b/source3/include/proto.h index d3ea6fc883..f6e7236664 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -463,22 +463,12 @@ time_t make_unix_date3(const void *date_ptr, int zone_offset); time_t srv_make_unix_date(const void *date_ptr); time_t srv_make_unix_date2(const void *date_ptr); time_t srv_make_unix_date3(const void *date_ptr); -struct timespec convert_time_t_to_timespec(time_t t); -struct timespec convert_timeval_to_timespec(const struct timeval tv); -struct timeval convert_timespec_to_timeval(const struct timespec ts); -struct timespec timespec_current(void); -struct timespec timespec_min(const struct timespec *ts1, - const struct timespec *ts2); -int timespec_compare(const struct timespec *ts1, const struct timespec *ts2); -void round_timespec_to_sec(struct timespec *ts); -void round_timespec_to_usec(struct timespec *ts); struct timespec interpret_long_date(const char *p); void TimeInit(void); void get_process_uptime(struct timeval *ret_time); void get_startup_time(struct timeval *ret_time); time_t nt_time_to_unix_abs(const NTTIME *nt); time_t uint64s_nt_time_to_unix_abs(const uint64_t *src); -void unix_timespec_to_nt_time(NTTIME *nt, struct timespec ts); void unix_to_nt_time_abs(NTTIME *nt, time_t t); const char *time_to_asc(const time_t t); const char *display_time(NTTIME nttime); diff --git a/source3/lib/time.c b/source3/lib/time.c index db9ec0a34f..7fe53928ab 100644 --- a/source3/lib/time.c +++ b/source3/lib/time.c @@ -264,95 +264,6 @@ time_t srv_make_unix_date3(const void *date_ptr) } /**************************************************************************** - Convert a normalized timeval to a timespec. -****************************************************************************/ - -struct timespec convert_timeval_to_timespec(const struct timeval tv) -{ - struct timespec ts; - ts.tv_sec = tv.tv_sec; - ts.tv_nsec = tv.tv_usec * 1000; - return ts; -} - -/**************************************************************************** - Convert a normalized timespec to a timeval. -****************************************************************************/ - -struct timeval convert_timespec_to_timeval(const struct timespec ts) -{ - struct timeval tv; - tv.tv_sec = ts.tv_sec; - tv.tv_usec = ts.tv_nsec / 1000; - return tv; -} - -/**************************************************************************** - Return a timespec for the current time -****************************************************************************/ - -struct timespec timespec_current(void) -{ - struct timespec ts; - clock_gettime(CLOCK_REALTIME, &ts); - return ts; -} - -/**************************************************************************** - Return the lesser of two timespecs. -****************************************************************************/ - -struct timespec timespec_min(const struct timespec *ts1, - const struct timespec *ts2) -{ - if (ts1->tv_sec < ts2->tv_sec) return *ts1; - if (ts1->tv_sec > ts2->tv_sec) return *ts2; - if (ts1->tv_nsec < ts2->tv_nsec) return *ts1; - return *ts2; -} - -/**************************************************************************** - compare two timespec structures. - Return -1 if ts1 < ts2 - Return 0 if ts1 == ts2 - Return 1 if ts1 > ts2 -****************************************************************************/ - -int timespec_compare(const struct timespec *ts1, const struct timespec *ts2) -{ - if (ts1->tv_sec > ts2->tv_sec) return 1; - if (ts1->tv_sec < ts2->tv_sec) return -1; - if (ts1->tv_nsec > ts2->tv_nsec) return 1; - if (ts1->tv_nsec < ts2->tv_nsec) return -1; - return 0; -} - -/**************************************************************************** - Round up a timespec if nsec > 500000000, round down if lower, - then zero nsec. -****************************************************************************/ - -void round_timespec_to_sec(struct timespec *ts) -{ - ts->tv_sec = convert_timespec_to_time_t(*ts); - ts->tv_nsec = 0; -} - -/**************************************************************************** - Round a timespec to usec value. -****************************************************************************/ - -void round_timespec_to_usec(struct timespec *ts) -{ - struct timeval tv = convert_timespec_to_timeval(*ts); - *ts = convert_timeval_to_timespec(tv); - while (ts->tv_nsec > 1000000000) { - ts->tv_sec += 1; - ts->tv_nsec -= 1000000000; - } -} - -/**************************************************************************** Interprets an nt time into a unix struct timespec. Differs from nt_time_to_unix in that an 8 byte value of 0xffffffffffffffff will be returned as (time_t)-1, whereas nt_time_to_unix returns 0 in this case. @@ -469,63 +380,6 @@ time_t uint64s_nt_time_to_unix_abs(const uint64_t *src) } /**************************************************************************** - Put a 8 byte filetime from a struct timespec. Uses GMT. -****************************************************************************/ - -void unix_timespec_to_nt_time(NTTIME *nt, struct timespec ts) -{ - uint64_t d; - - if (ts.tv_sec ==0 && ts.tv_nsec == 0) { - *nt = 0; - return; - } - if (ts.tv_sec == TIME_T_MAX) { - *nt = 0x7fffffffffffffffLL; - return; - } - if (ts.tv_sec == (time_t)-1) { - *nt = (uint64_t)-1; - return; - } - - d = ts.tv_sec; - d += TIME_FIXUP_CONSTANT_INT; - d *= 1000*1000*10; - /* d is now in 100ns units. */ - d += (ts.tv_nsec / 100); - - *nt = d; -} - -#if 0 -void nt_time_to_unix_timespec(struct timespec *ts, NTTIME t) -{ - if (ts == NULL) { - return; - } - - /* t starts in 100 nsec units since 1601-01-01. */ - - t *= 100; - /* t is now in nsec units since 1601-01-01. */ - - t -= TIME_FIXUP_CONSTANT*1000*1000*100; - /* t is now in nsec units since the UNIX epoch 1970-01-01. */ - - ts->tv_sec = t / 1000000000LL; - - if (TIME_T_MIN > ts->tv_sec || ts->tv_sec > TIME_T_MAX) { - ts->tv_sec = 0; - ts->tv_nsec = 0; - return; - } - - ts->tv_nsec = t - ts->tv_sec*1000000000LL; -} -#endif - -/**************************************************************************** Convert a time_t to a NTTIME structure This is an absolute version of the one above. |