From f380a5a9a7f0a1ed3e0ade4394997716a3e3da55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Moreau?= Date: Tue, 6 Mar 2012 09:23:59 -0500 Subject: [PATCH] libfreerdp-utils: added time utils --- include/freerdp/utils/time.h | 36 ++++++++++++++++++++++++++ libfreerdp-locale/timezone.c | 26 +------------------ libfreerdp-utils/CMakeLists.txt | 1 + libfreerdp-utils/time.c | 46 +++++++++++++++++++++++++++++++++ 4 files changed, 84 insertions(+), 25 deletions(-) create mode 100644 include/freerdp/utils/time.h create mode 100644 libfreerdp-utils/time.c diff --git a/include/freerdp/utils/time.h b/include/freerdp/utils/time.h new file mode 100644 index 000000000..c780b463b --- /dev/null +++ b/include/freerdp/utils/time.h @@ -0,0 +1,36 @@ +/** + * FreeRDP: A Remote Desktop Protocol Client + * Time Utils + * + * Copyright 2012 Marc-Andre Moreau + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef FREERDP_TIME_UTILS_H +#define FREERDP_TIME_UTILS_H + +#include + +#ifndef _WIN32 +#include +#endif + +#include +#include + +FREERDP_API uint64 freerdp_windows_gmtime(); +FREERDP_API uint64 freerdp_get_windows_time_from_unix_time(time_t unix_time); +FREERDP_API time_t freerdp_get_unix_time_from_windows_time(uint64 windows_time); + +#endif /* FREERDP_TIME_UTILS_H */ diff --git a/libfreerdp-locale/timezone.c b/libfreerdp-locale/timezone.c index 79782a032..b2891fb5e 100644 --- a/libfreerdp-locale/timezone.c +++ b/libfreerdp-locale/timezone.c @@ -23,6 +23,7 @@ #include "config.h" +#include #include #include @@ -1540,31 +1541,6 @@ boolean freerdp_match_unix_timezone_identifier_with_list(const char* tzid, const return false; } -uint64 freerdp_get_windows_time_from_unix_time(time_t unix_time) -{ - uint64 windows_time; - windows_time = (unix_time * 10000000) + 621355968000000000ULL; - return windows_time; -} - -time_t freerdp_get_unix_time_from_windows_time(uint64 windows_time) -{ - time_t unix_time; - unix_time = (windows_time - 621355968000000000ULL) / 10000000; - return unix_time; -} - -uint64 freerdp_windows_gmtime() -{ - time_t unix_time; - uint64 windows_time; - - gmtime(&unix_time); - windows_time = freerdp_get_windows_time_from_unix_time(unix_time); - - return windows_time; -} - TIME_ZONE_ENTRY* freerdp_detect_windows_time_zone(uint32 bias) { int i, j; diff --git a/libfreerdp-utils/CMakeLists.txt b/libfreerdp-utils/CMakeLists.txt index 52b15690d..b92e57011 100644 --- a/libfreerdp-utils/CMakeLists.txt +++ b/libfreerdp-utils/CMakeLists.txt @@ -46,6 +46,7 @@ set(FREERDP_UTILS_SRCS string.c svc_plugin.c thread.c + time.c unicode.c wait_obj.c) diff --git a/libfreerdp-utils/time.c b/libfreerdp-utils/time.c new file mode 100644 index 000000000..84f6d5918 --- /dev/null +++ b/libfreerdp-utils/time.c @@ -0,0 +1,46 @@ +/** + * FreeRDP: A Remote Desktop Protocol Client + * Time Utils + * + * Copyright 2012 Marc-Andre Moreau + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include + +uint64 freerdp_windows_gmtime() +{ + time_t unix_time; + uint64 windows_time; + + gmtime(&unix_time); + windows_time = freerdp_get_windows_time_from_unix_time(unix_time); + + return windows_time; +} + +uint64 freerdp_get_windows_time_from_unix_time(time_t unix_time) +{ + uint64 windows_time; + windows_time = (unix_time * 10000000) + 621355968000000000ULL; + return windows_time; +} + +time_t freerdp_get_unix_time_from_windows_time(uint64 windows_time) +{ + time_t unix_time; + unix_time = (windows_time - 621355968000000000ULL) / 10000000; + return unix_time; +}