summaryrefslogtreecommitdiff
path: root/wsutil
diff options
context:
space:
mode:
authorJoão Valverde <joao.valverde@tecnico.ulisboa.pt>2016-04-19 08:03:08 +0100
committerJoão Valverde <j@v6e.pt>2016-04-21 18:59:56 +0000
commit3db13a7fc9f08fdb238f06e73a42b39396fee84c (patch)
tree13962d67e01b8d0f15aed5e6216ae584c23bd991 /wsutil
parent7c6e859ccf210a45e1cc0f6da17692845e6b5a23 (diff)
downloadwireshark-3db13a7fc9f08fdb238f06e73a42b39396fee84c.tar.gz
Link version code statically again
This allows keeping the code-sharing with the static linking. This "fixes" a hypothetical ABI mismatch with wsutil and avoids pulling more external dependencies to wsutil than strictly necessary. A nice side-effect is that libwsutil no longer depends on version.h. Follow up to f95976eefcbeb5d24df383c29d29ef888b503945. Change-Id: I8f0d6a557ab3f7ce6f0e2c269124c89f29d6ad23 Reviewed-on: https://code.wireshark.org/review/15002 Petri-Dish: João Valverde <j@v6e.pt> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: João Valverde <j@v6e.pt>
Diffstat (limited to 'wsutil')
-rw-r--r--wsutil/.editorconfig4
-rw-r--r--wsutil/CMakeLists.txt1
-rw-r--r--wsutil/Makefile.common6
-rw-r--r--wsutil/Makefile.nmake5
-rw-r--r--wsutil/ws_version_info.c419
-rw-r--r--wsutil/ws_version_info.h73
6 files changed, 5 insertions, 503 deletions
diff --git a/wsutil/.editorconfig b/wsutil/.editorconfig
index dc741c0777..f7f11b64f5 100644
--- a/wsutil/.editorconfig
+++ b/wsutil/.editorconfig
@@ -132,9 +132,5 @@ indent_size = tab
[ws_mempbrk_sse42.[ch]]
indent_size = 2
-[ws_version_info.[ch]]
-indent_style = tab
-indent_size = tab
-
[wsgetopt.[ch]]
indent_size = 2
diff --git a/wsutil/CMakeLists.txt b/wsutil/CMakeLists.txt
index 9eeda808bc..209787a658 100644
--- a/wsutil/CMakeLists.txt
+++ b/wsutil/CMakeLists.txt
@@ -75,7 +75,6 @@ set(WSUTIL_FILES
type_util.c
unicode-utils.c
ws_mempbrk.c
- ws_version_info.c
${WSUTIL_PLATFORM_FILES}
)
diff --git a/wsutil/Makefile.common b/wsutil/Makefile.common
index 9f96db7f43..4913be54fd 100644
--- a/wsutil/Makefile.common
+++ b/wsutil/Makefile.common
@@ -71,8 +71,7 @@ LIBWSUTIL_COMMON_SRC = \
time_util.c \
type_util.c \
unicode-utils.c \
- ws_mempbrk.c \
- ws_version_info.c
+ ws_mempbrk.c
# Header files that don't declare replacement functions for functions
# present in the APIs/ABIs of some, but not all, targets.
@@ -129,8 +128,7 @@ libwsutil_nonrepl_INCLUDES = \
utf8_entities.h \
ws_cpuid.h \
ws_mempbrk.h \
- ws_mempbrk_int.h \
- ws_version_info.h
+ ws_mempbrk_int.h
# Header files that are not generated from other files
LIBWSUTIL_COMMON_INCLUDES = \
diff --git a/wsutil/Makefile.nmake b/wsutil/Makefile.nmake
index 015aab89a0..36d06523e4 100644
--- a/wsutil/Makefile.nmake
+++ b/wsutil/Makefile.nmake
@@ -31,7 +31,8 @@ OBJECTS = file_util.obj \
$(LIBWSUTIL_SRC:.c=.obj) \
popcount.obj \
strptime.obj \
- ws_mempbrk_sse42.obj
+ ws_mempbrk_sse42.obj \
+ ..\ws_version_info.obj
# For use when making libwsutil.dll
libwsutil.lib: libwsutil.dll
@@ -50,7 +51,7 @@ libwsutil.dll : $(OBJECTS) ..\image\libwsutil.res
# The following target will rebuild its obj
# if and when version.h should change.
#
-ws_version_info.obj: ..\version.h
+..\ws_version_info.obj: ..\version.h
clean:
rm -f $(OBJECTS) \
diff --git a/wsutil/ws_version_info.c b/wsutil/ws_version_info.c
deleted file mode 100644
index 84c2edd06c..0000000000
--- a/wsutil/ws_version_info.c
+++ /dev/null
@@ -1,419 +0,0 @@
-/* ws_version_info.c
- * Routines to report version information for Wireshark programs
- *
- * 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 <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <locale.h>
-
-#ifdef _WIN32
-#include <windows.h>
-#endif
-
-#include <glib.h>
-
-#ifdef HAVE_ZLIB
-#include <zlib.h>
-#endif
-
-#include "version.h"
-
-#include <wsutil/ws_version_info.h>
-
-#include <wsutil/ws_cpuid.h>
-#include <wsutil/copyright_info.h>
-#include <wsutil/os_version_info.h>
-
-/*
- * If the string doesn't end with a newline, append one.
- * Then word-wrap it to 80 columns.
- */
-static void
-end_string(GString *str)
-{
- size_t point;
- char *p, *q;
-
- point = str->len;
- if (point == 0 || str->str[point - 1] != '\n')
- g_string_append(str, "\n");
- p = str->str;
- while (*p != '\0') {
- q = strchr(p, '\n');
- if (q - p > 80) {
- /*
- * Break at or before this point.
- */
- q = p + 80;
- while (q > p && *q != ' ')
- q--;
- if (q != p)
- *q = '\n';
- }
- p = q + 1;
- }
-}
-
-static const gchar *
-get_zlib_compiled_version_info(void)
-{
-#ifdef HAVE_ZLIB
-#ifdef ZLIB_VERSION
- return "with zlib "ZLIB_VERSION;
-#else
- return "with zlib (version unknown)";
-#endif /* ZLIB_VERSION */
-#else
- return "without zlib";
-#endif /* HAVE_ZLIB */
-}
-
-/*
- * Get various library compile-time versions, put them in a GString,
- * and return the GString.
- *
- * "prepend_info" is called at the start to prepend any additional
- * information before the standard library information.
- *
- * "append_info" is called at the end to append any additional
- * information after the standard library information. This is
- * required in order to, for example, put the Portaudio information
- * at the end of the string, as we currently don't use Portaudio in
- * TShark.
- */
-GString *
-get_compiled_version_info(void (*prepend_info)(GString *),
- void (*append_info)(GString *))
-{
- GString *str;
-
- str = g_string_new("Compiled ");
-
- if (sizeof(str) == 4)
- g_string_append(str, "(32-bit) ");
- else
- g_string_append(str, "(64-bit) ");
-
- if (prepend_info) {
- (*prepend_info)(str);
- g_string_append(str, ", ");
- }
-
- /* GLIB */
- g_string_append(str, "with ");
- g_string_append_printf(str,
-#ifdef GLIB_MAJOR_VERSION
- "GLib %d.%d.%d", GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION,
- GLIB_MICRO_VERSION);
-#else
- "GLib (version unknown)");
-#endif
-
- g_string_append_printf(str, ", %s", get_zlib_compiled_version_info());
-
- /* Additional application-dependent information */
- if (append_info)
- (*append_info)(str);
- g_string_append(str, ".");
-
- end_string(str);
-
- return str;
-}
-
-/*
- * Get the CPU info, and append it to the GString
- */
-static void
-get_cpu_info(GString *str)
-{
- guint32 CPUInfo[4];
- char CPUBrandString[0x40];
- unsigned nExIds;
-
- /* http://msdn.microsoft.com/en-us/library/hskdteyh(v=vs.100).aspx */
-
- /* Calling __cpuid with 0x80000000 as the InfoType argument*/
- /* gets the number of valid extended IDs.*/
- if (!ws_cpuid(CPUInfo, 0x80000000))
- return;
- nExIds = CPUInfo[0];
-
- if( nExIds<0x80000005)
- return;
- memset(CPUBrandString, 0, sizeof(CPUBrandString));
-
- /* Interpret CPU brand string.*/
- ws_cpuid(CPUInfo, 0x80000002);
- memcpy(CPUBrandString, CPUInfo, sizeof(CPUInfo));
- ws_cpuid(CPUInfo, 0x80000003);
- memcpy(CPUBrandString + 16, CPUInfo, sizeof(CPUInfo));
- ws_cpuid(CPUInfo, 0x80000004);
- memcpy(CPUBrandString + 32, CPUInfo, sizeof(CPUInfo));
-
- g_string_append_printf(str, "\n%s", CPUBrandString);
-
- if (ws_cpuid_sse42())
- g_string_append(str, " (with SSE4.2)");
-}
-
-static void
-get_mem_info(GString *str _U_)
-{
-#ifdef _WIN32
- MEMORYSTATUSEX statex;
-
- statex.dwLength = sizeof (statex);
-
- if (GlobalMemoryStatusEx(&statex))
- g_string_append_printf(str, ", with ""%" G_GINT64_MODIFIER "d" "MB of physical memory.\n", statex.ullTotalPhys/(1024*1024));
-#endif
-}
-
-/*
- * Get compiler information, and append it to the GString.
- */
-static void
-get_compiler_info(GString *str)
-{
- /*
- * See https://sourceforge.net/apps/mediawiki/predef/index.php?title=Compilers
- * information on various defined strings.
- *
- * GCC's __VERSION__ is a nice text string for humans to
- * read. The page at sourceforge.net largely describes
- * numeric #defines that encode the version; if the compiler
- * doesn't also offer a nice printable string, we try prettifying
- * the number somehow.
- */
-#if defined(__GNUC__) && defined(__VERSION__)
- /*
- * Clang and llvm-gcc also define __GNUC__ and __VERSION__;
- * distinguish between them.
- */
-#if defined(__clang__)
- g_string_append_printf(str, "\n\nBuilt using clang %s.\n", __VERSION__);
-#elif defined(__llvm__)
- g_string_append_printf(str, "\n\nBuilt using llvm-gcc %s.\n", __VERSION__);
-#else /* boring old GCC */
- g_string_append_printf(str, "\n\nBuilt using gcc %s.\n", __VERSION__);
-#endif /* llvm */
-#elif defined(__HP_aCC)
- g_string_append_printf(str, "\n\nBuilt using HP aCC %d.\n", __HP_aCC);
-#elif defined(__xlC__)
- g_string_append_printf(str, "\n\nBuilt using IBM XL C %d.%d\n",
- (__xlC__ >> 8) & 0xFF, __xlC__ & 0xFF);
-#ifdef __IBMC__
- if ((__IBMC__ % 10) != 0)
- g_string_append_printf(str, " patch %d", __IBMC__ % 10);
-#endif /* __IBMC__ */
- g_string_append_printf(str, "\n");
-#elif defined(__INTEL_COMPILER)
- g_string_append_printf(str, "\n\nBuilt using Intel C %d.%d",
- __INTEL_COMPILER / 100, (__INTEL_COMPILER / 10) % 10);
- if ((__INTEL_COMPILER % 10) != 0)
- g_string_append_printf(str, " patch %d", __INTEL_COMPILER % 10);
-#ifdef __INTEL_COMPILER_BUILD_DATE
- g_string_sprinta(str, ", compiler built %04d-%02d-%02d",
- __INTEL_COMPILER_BUILD_DATE / 10000,
- (__INTEL_COMPILER_BUILD_DATE / 100) % 100,
- __INTEL_COMPILER_BUILD_DATE % 100);
-#endif /* __INTEL_COMPILER_BUILD_DATE */
- g_string_append_printf(str, "\n");
-#elif defined(_MSC_FULL_VER)
-# if _MSC_FULL_VER > 99999999
- /* Quote from the web:
- * Bakersfield: DevDiv's upper management determines the scheduling of new major versions.
- * They also decided to increment the product version from 12 (for VS 2013) to 14 (for VS 2015).
- * However, the C++ compiler's version incremented normally, from 18 to 19.
- * (It's larger because the C++ compiler predates the "Visual" in Visual C++.)
- * XXX? Should we just output the compiler version?
- */
- int compiler_major_version = (_MSC_FULL_VER / 10000000), visual_studio_ver;
-
- if (compiler_major_version < 19) {
- visual_studio_ver = compiler_major_version - 6;
- }else{
- visual_studio_ver = compiler_major_version - 5;
- }
-
- g_string_append_printf(str, "\n\nBuilt using Microsoft Visual C++ %d.%d",
- visual_studio_ver,
- (_MSC_FULL_VER / 100000) % 100);
-# if (_MSC_FULL_VER % 100000) != 0
- g_string_append_printf(str, " build %d",
- _MSC_FULL_VER % 100000);
-# endif
-# else
- g_string_append_printf(str, "\n\nBuilt using Microsoft Visual C++ %d.%d",
- (_MSC_FULL_VER / 1000000) - 6,
- (_MSC_FULL_VER / 10000) % 100);
-# if (_MSC_FULL_VER % 10000) != 0
- g_string_append_printf(str, " build %d",
- _MSC_FULL_VER % 10000);
-# endif
-# endif
- g_string_append_printf(str, "\n");
-#elif defined(_MSC_VER)
- /* _MSC_FULL_VER not defined, but _MSC_VER defined */
- g_string_append_printf(str, "\n\nBuilt using Microsoft Visual C++ %d.%d\n",
- (_MSC_VER / 100) - 6, _MSC_VER % 100);
-#elif defined(__SUNPRO_C)
- g_string_append_printf(str, "\n\nBuilt using Sun C %d.%d",
- (__SUNPRO_C >> 8) & 0xF, (__SUNPRO_C >> 4) & 0xF);
- if ((__SUNPRO_C & 0xF) != 0)
- g_string_append_printf(str, " patch %d", __SUNPRO_C & 0xF);
- g_string_append_printf(str, "\n");
-#endif
-}
-
-/* XXX - is the setlocale() return string opaque? For glibc the separator is ';' */
-static gchar *
-get_locale(void)
-{
- const gchar *lang;
- gchar **locv, *loc;
-
- lang = setlocale(LC_ALL, NULL);
- if (lang == NULL) {
- return NULL;
- }
-
- locv = g_strsplit(lang, ";", -1);
- loc = g_strjoinv(", ", locv);
- g_strfreev(locv);
- return loc;
-}
-
-/*
- * Get various library run-time versions, and the OS version, and append
- * them to the specified GString.
- *
- * "additional_info" is called at the end to append any additional
- * information; this is required in order to, for example, put the
- * Portaudio information at the end of the string, as we currently
- * don't use Portaudio in TShark.
- */
-GString *
-get_runtime_version_info(void (*additional_info)(GString *))
-{
- GString *str;
- gchar *lang;
-
- str = g_string_new("Running on ");
-
- get_os_version_info(str);
-
- /*
- * Locale.
- *
- * This returns the C language's locale information; this
- * returns the locale that's actually in effect, even if
- * it doesn't happen to match the settings of any of the
- * locale environment variables.
- *
- * XXX - what happens on Windows? If nobody's explicitly
- * overridden any of the environment variables, does this
- * reflect the locale settings in the OS? If so, does
- * that include the code page? (We're not using UTF-16
- * for output to files or the console; using code page
- * 65001, i.e. UTF-8, as your system code page probably
- * works best with Wireshark.)
- */
- if ((lang = get_locale()) != NULL) {
- g_string_append_printf(str, ", with locale %s", lang);
- g_free(lang);
- }
- else {
- g_string_append(str, ", with default locale");
- }
-
-
- /* Additional application-dependent information */
- if (additional_info)
- (*additional_info)(str);
-
- /* zlib */
-#if defined(HAVE_ZLIB) && !defined(_WIN32)
- g_string_append_printf(str, ", with zlib %s", zlibVersion());
-#endif
-
- g_string_append(str, ".");
-
- /* CPU Info */
- get_cpu_info(str);
-
- /* Get info about installed memory Windows only */
- get_mem_info(str);
-
- /* Compiler info */
- get_compiler_info(str);
-
- end_string(str);
-
- return str;
-}
-
-void
-show_version(const gchar *prog_name_str, GString *comp_info_str,
- GString *runtime_info_str)
-{
- printf("%s %s\n"
- "\n"
- "%s"
- "\n"
- "%s"
- "\n"
- "%s",
- prog_name_str, get_ws_vcs_version_info(), get_copyright_info(),
- comp_info_str->str, runtime_info_str->str);
-}
-
-/*
- * Return a version number string for Wireshark, including, for builds
- * from a tree checked out from Wireshark's version control system,
- * something identifying what version was checked out.
- */
-const char *
-get_ws_vcs_version_info(void)
-{
-#ifdef VCSVERSION
- return VERSION " (" VCSVERSION " from " VCSBRANCH ")";
-#else
- return VERSION;
-#endif
-}
-
-/*
- * Editor modelines - http://www.wireshark.org/tools/modelines.html
- *
- * Local variables:
- * c-basic-offset: 8
- * tab-width: 8
- * indent-tabs-mode: t
- * End:
- *
- * vi: set shiftwidth=8 tabstop=8 noexpandtab:
- * :indentSize=8:tabSize=8:noTabs=false:
- */
diff --git a/wsutil/ws_version_info.h b/wsutil/ws_version_info.h
deleted file mode 100644
index b2cf6b3b6c..0000000000
--- a/wsutil/ws_version_info.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/* ws_version_info.h
- * Declarations of routines to report version information for Wireshark
- * programs
- *
- * 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 __WSUTIL_WS_VERSION_INFO_H__
-#define __WSUTIL_WS_VERSION_INFO_H__
-
-#include "ws_symbol_export.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-/*
- * Get various library compile-time versions, put them in a GString,
- * and return the GString.
- *
- * "prepend_info" is called at the start to prepend any additional
- * information before the standard library information.
- *
- * "append_info" is called at the end to append any additional
- * information after the standard library information. This is
- * required in order to, for example, put the Portaudio information
- * at the end of the string, as we currently don't use Portaudio in
- * TShark.
- */
-WS_DLL_PUBLIC GString *get_compiled_version_info(void (*prepend_info)(GString *),
- void (*append_info)(GString *));
-
-/*
- * Get various library run-time versions, and the OS version, put them in
- * a GString, and return the GString.
- *
- * "additional_info" is called at the end to append any additional
- * information; this is required in order to, for example, put the
- * Portaudio information at the end of the string, as we currently
- * don't use Portaudio in TShark.
- */
-WS_DLL_PUBLIC GString *get_runtime_version_info(void (*additional_info)(GString *));
-
-WS_DLL_PUBLIC void show_version(const gchar *prog_name, GString *comp_info_str, GString *runtime_info_str);
-
-/*
- * Return a version number string for Wireshark, including, for builds
- * from a tree checked out from Wireshark's version control system,
- * something identifying what version was checked out.
- */
-WS_DLL_PUBLIC const char *get_ws_vcs_version_info(void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* __WSUTIL_WS_VERSION_INFO_H__ */