aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--epan/tvbuff.c41
-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
5 files changed, 99 insertions, 40 deletions
diff --git a/epan/tvbuff.c b/epan/tvbuff.c
index 005cf46db8..df0c2878aa 100644
--- a/epan/tvbuff.c
+++ b/epan/tvbuff.c
@@ -43,6 +43,7 @@
#include "wsutil/sign_ext.h"
#include "wsutil/unicode-utils.h"
#include "wsutil/nstime.h"
+#include "wsutil/time_util.h"
#include "tvbuff.h"
#include "tvbuff-int.h"
#include "strutil.h"
@@ -1355,46 +1356,6 @@ tvb_get_string_bytes(tvbuff_t *tvb, const gint offset, const gint length,
return retval;
}
-/* 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
- */
-static time_t
-mktime_utc (struct tm *tm)
-{
- time_t retval;
-
-#ifndef HAVE_TIMEGM
- static const gint days_before[] =
- {
- 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334
- };
-
- int yr;
-#endif
-
-#ifndef HAVE_TIMEGM
- 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;
-#else
- retval = timegm (tm);
-#endif /* !HAVE_TIMEGM */
-
- return retval;
-}
-
/* support hex-encoded time values? */
nstime_t*
tvb_get_string_time(tvbuff_t *tvb, const gint offset, const gint length,
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__ */