From 27d95cc8a637a226a20eaac9da7c0dc4d8239f88 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Thu, 24 Nov 2011 09:49:19 +0100 Subject: [PATCH] librpc: Add support for struct timeval --- librpc/ndr/libndr.h | 10 ++++++++++ librpc/ndr/ndr_basic.c | 31 +++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+) diff --git a/librpc/ndr/libndr.h b/librpc/ndr/libndr.h index 95e6573748d..9c26befdf73 100644 --- a/librpc/ndr/libndr.h +++ b/librpc/ndr/libndr.h @@ -636,5 +636,15 @@ _PUBLIC_ enum ndr_err_code ndr_pull_timespec(struct ndr_pull *ndr, _PUBLIC_ void ndr_print_timespec(struct ndr_print *ndr, const char *name, const struct timespec *t); +_PUBLIC_ enum ndr_err_code ndr_push_timeval(struct ndr_push *ndr, + int ndr_flags, + const struct timeval *t); +_PUBLIC_ enum ndr_err_code ndr_pull_timeval(struct ndr_pull *ndr, + int ndr_flags, + struct timeval *t); +_PUBLIC_ void ndr_print_timeval(struct ndr_print *ndr, const char *name, + const struct timeval *t); + + #endif /* __LIBNDR_H__ */ diff --git a/librpc/ndr/ndr_basic.c b/librpc/ndr/ndr_basic.c index 0e209f8eeda..7b164385d47 100644 --- a/librpc/ndr/ndr_basic.c +++ b/librpc/ndr/ndr_basic.c @@ -1369,3 +1369,34 @@ _PUBLIC_ void ndr_print_timespec(struct ndr_print *ndr, const char *name, ndr->print(ndr, "%-25s: %s.%ld", name, timestring(ndr, t->tv_sec), (long)t->tv_nsec); } + +_PUBLIC_ enum ndr_err_code ndr_push_timeval(struct ndr_push *ndr, + int ndr_flags, + const struct timeval *t) +{ + NDR_PUSH_CHECK_FLAGS(ndr, ndr_flags); + NDR_CHECK(ndr_push_hyper(ndr, ndr_flags, t->tv_sec)); + NDR_CHECK(ndr_push_uint32(ndr, ndr_flags, t->tv_usec)); + return NDR_ERR_SUCCESS; +} + +_PUBLIC_ enum ndr_err_code ndr_pull_timeval(struct ndr_pull *ndr, + int ndr_flags, + struct timeval *t) +{ + uint64_t secs; + uint32_t usecs; + NDR_PULL_CHECK_FLAGS(ndr, ndr_flags); + NDR_CHECK(ndr_pull_hyper(ndr, ndr_flags, &secs)); + NDR_CHECK(ndr_pull_uint32(ndr, ndr_flags, &usecs)); + t->tv_sec = secs; + t->tv_usec = usecs; + return NDR_ERR_SUCCESS; +} + +_PUBLIC_ void ndr_print_timeval(struct ndr_print *ndr, const char *name, + const struct timeval *t) +{ + ndr->print(ndr, "%-25s: %s.%ld", name, timestring(ndr, t->tv_sec), + (long)t->tv_usec); +} -- 2.34.1