From e2e4415c9fefbe3c8b840c3207c8e1197e9b385e Mon Sep 17 00:00:00 2001 From: AndersBroman Date: Fri, 17 Feb 2017 16:19:56 +0100 Subject: Add some glib functions not available in older glibs Change-Id: I6526d799447a3b6c0b9bb42f8d0f8c3415299ed0 Reviewed-on: https://code.wireshark.org/review/20158 Reviewed-by: Anders Broman Petri-Dish: Anders Broman Tested-by: Petri Dish Buildbot Reviewed-by: Alexis La Goutte --- wsutil/CMakeLists.txt | 1 + wsutil/Makefile.am | 2 ++ wsutil/glib-compat.c | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++ wsutil/glib-compat.h | 32 +++++++++++++++++++++ 4 files changed, 112 insertions(+) create mode 100644 wsutil/glib-compat.c create mode 100644 wsutil/glib-compat.h (limited to 'wsutil') diff --git a/wsutil/CMakeLists.txt b/wsutil/CMakeLists.txt index 84a3e1465e..8e0125b0fa 100644 --- a/wsutil/CMakeLists.txt +++ b/wsutil/CMakeLists.txt @@ -46,6 +46,7 @@ set(WSUTIL_COMMON_FILES filesystem.c frequency-utils.c g711.c + glib-compat.c inet_addr.c interface.c jsmn.c diff --git a/wsutil/Makefile.am b/wsutil/Makefile.am index 76b968b66b..eba80f941a 100644 --- a/wsutil/Makefile.am +++ b/wsutil/Makefile.am @@ -64,6 +64,7 @@ libwsutil_nonrepl_INCLUDES = \ filesystem.h \ frequency-utils.h \ g711.h \ + glib-compat.h \ inet_addr.h \ inet_ipv6.h \ interface.h \ @@ -142,6 +143,7 @@ libwsutil_la_SOURCES = \ filesystem.c \ frequency-utils.c \ g711.c \ + glib-compat.c \ inet_addr.c \ interface.c \ jsmn.c \ diff --git a/wsutil/glib-compat.c b/wsutil/glib-compat.c new file mode 100644 index 0000000000..5d3cec8374 --- /dev/null +++ b/wsutil/glib-compat.c @@ -0,0 +1,77 @@ +/* +* Provide some functions that are not present in older +* GLIB versions (down to 2.22) +* +* Wireshark - Network traffic analyzer +* By Gerald Combs +* 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 + +#include "glib-compat.h" +#if !GLIB_CHECK_VERSION(2, 28, 0) +/** +* g_slist_free_full: +* @list: a pointer to a #GSList +* @free_func: the function to be called to free each element's data +* +* Convenience method, which frees all the memory used by a #GSList, and +* calls the specified destroy function on every element's data. +* +* Since: 2.28 +**/ +void +g_slist_free_full(GSList *list, + GDestroyNotify free_func) +{ + g_slist_foreach(list, (GFunc)free_func, NULL); + g_slist_free(list); +} + +/** +* g_list_free_full: +* @list: a pointer to a #GList +* @free_func: the function to be called to free each element's data +* +* Convenience method, which frees all the memory used by a #GList, +* and calls @free_func on every element's data. +* +* Since: 2.28 +*/ +void +g_list_free_full(GList *list, + GDestroyNotify free_func) +{ + g_list_foreach(list, (GFunc)free_func, NULL); + g_list_free(list); +} + +#endif +/* +* Editor modelines - http://www.wireshark.org/tools/modelines.html +* +* Local variables: +* c-basic-offset: 4 +* tab-width: 8 +* indent-tabs-mode: nil +* End: +* +* vi: set shiftwidth=4 tabstop=8 expandtab: +* :indentSize=4:tabSize=8:noTabs=true: +*/ diff --git a/wsutil/glib-compat.h b/wsutil/glib-compat.h new file mode 100644 index 0000000000..378a020b0d --- /dev/null +++ b/wsutil/glib-compat.h @@ -0,0 +1,32 @@ +/* glib-compat.h +* Definitions to provide some functions that are not present in older +* GLIB versions (down to 2.22) +* +* Wireshark - Network traffic analyzer +* By Gerald Combs +* 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 GLIB_COMPAT_H +#define GLIB_COMPAT_H + +#include "ws_symbol_export.h" +#if !GLIB_CHECK_VERSION(2, 28, 0) +WS_DLL_PUBLIC void g_slist_free_full(GSList *list, GDestroyNotify free_func); +WS_DLL_PUBLIC void g_list_free_full(GList *list, GDestroyNotify free_func); +#endif + +#endif /* GLIB_COMPAT_H */ -- cgit v1.2.3