summaryrefslogtreecommitdiff
path: root/wsutil
diff options
context:
space:
mode:
authorJakub Zawadzki <darkjames@darkjames.pl>2014-04-24 21:56:31 +0200
committerAnders Broman <a.broman58@gmail.com>2014-04-25 04:13:02 +0000
commit75cb2675fd6b95d3635b0b2a81b0e2d8c1ad715f (patch)
tree306d2cd04613fb1642dc9e738ced2e20bd7ea7f5 /wsutil
parent6ec73981acd2aea4b8aeb6809fc23f5d044ffb5e (diff)
downloadwireshark-75cb2675fd6b95d3635b0b2a81b0e2d8c1ad715f.tar.gz
Move mktime_utc() from tvbuff.c to wsutil/time_util.c
Also do little cleanup in mktime_utc (one big #ifndef) Change-Id: I8f721ba76cad856cfef0a2d78e7f98686f8e4e3f Reviewed-on: https://code.wireshark.org/review/1327 Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'wsutil')
-rw-r--r--wsutil/CMakeLists.txt1
-rw-r--r--wsutil/Makefile.common2
-rw-r--r--wsutil/time_util.c63
-rw-r--r--wsutil/time_util.h32
4 files changed, 98 insertions, 0 deletions
diff --git a/wsutil/CMakeLists.txt b/wsutil/CMakeLists.txt
index d93b75878f..d544dc86dd 100644
--- a/wsutil/CMakeLists.txt
+++ b/wsutil/CMakeLists.txt
@@ -64,6 +64,7 @@ set(WSUTIL_FILES
rc4.c
report_err.c
tempfile.c
+ time_util.c
type_util.c
u3.c
unicode-utils.c
diff --git a/wsutil/Makefile.common b/wsutil/Makefile.common
index 8e1f4435c9..0f4d434471 100644
--- a/wsutil/Makefile.common
+++ b/wsutil/Makefile.common
@@ -58,6 +58,7 @@ LIBWSUTIL_SRC = \
rc4.c \
report_err.c \
tempfile.c \
+ time_util.c \
type_util.c \
u3.c \
unicode-utils.c
@@ -98,6 +99,7 @@ LIBWSUTIL_INCLUDES = \
rc4.h \
report_err.h \
tempfile.h \
+ time_util.h \
type_util.h \
u3.h \
unicode-utils.h
diff --git a/wsutil/time_util.c b/wsutil/time_util.c
new file mode 100644
index 0000000000..5a7a832923
--- /dev/null
+++ b/wsutil/time_util.c
@@ -0,0 +1,63 @@
+/* time_util.c
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+
+#include "config.h"
+
+#include "time_util.h"
+
+/* converts a broken down date representation, relative to UTC,
+ * to a timestamp; it uses timegm() if it's available.
+ * Copied from Glib source gtimer.c
+ */
+time_t
+mktime_utc(struct tm *tm)
+{
+#ifndef HAVE_TIMEGM
+ time_t retval;
+
+ static const int days_before[] =
+ {
+ 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334
+ };
+
+ int yr;
+
+ if (tm->tm_mon < 0 || tm->tm_mon > 11)
+ return (time_t) -1;
+
+ retval = (tm->tm_year - 70) * 365;
+
+ /* count number of leap years */
+ yr = tm->tm_year + 1900;
+ if (tm->tm_mon + 1 < 3 && (yr % 4) == 0 && ((yr % 100) != 0 || (yr % 400) == 0))
+ yr--;
+ retval += (((yr / 4) - (yr / 100) + (yr / 400)) - 477); /* 477 = ((1970 / 4) - (1970 / 100) + (1970 / 400)) */
+
+ retval += days_before[tm->tm_mon] + tm->tm_mday - 1;
+
+ retval = ((((retval * 24) + tm->tm_hour) * 60) + tm->tm_min) * 60 + tm->tm_sec;
+
+ return retval;
+#else
+ return timegm(tm);
+#endif /* !HAVE_TIMEGM */
+}
diff --git a/wsutil/time_util.h b/wsutil/time_util.h
new file mode 100644
index 0000000000..37c6669b30
--- /dev/null
+++ b/wsutil/time_util.h
@@ -0,0 +1,32 @@
+/* time_util.h
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#ifndef __TIME_UTIL_H__
+#define __TIME_UTIL_H__
+
+#include "ws_symbol_export.h"
+
+#include <time.h>
+
+WS_DLL_PUBLIC
+time_t mktime_utc(struct tm *tm);
+
+#endif /* __TIME_UTIL_H__ */