From bc26fd5eb73f9335aed925b2756929d8d3b0147b Mon Sep 17 00:00:00 2001 From: Michael Jeanson Date: Tue, 22 Sep 2015 14:46:07 -0400 Subject: [PATCH] Fix: add compat for glib < 2.32 MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit A dependency on glib >= 2.32 was introduced in this commit: commit 347829f5b1eaf79a540f4623f7ae5ee4e9e3d4c7 Author: Philippe Proulx Date: Thu Mar 12 16:14:31 2015 -0400 Add basic object system To stay compatible with SLES11, keep our dependency on 2.22 and add a compatibility header. Fixes #890 Signed-off-by: Michael Jeanson Signed-off-by: Jérémie Galarneau --- include/Makefile.am | 1 + include/babeltrace/compat/glib.h | 83 ++++++++++++++++++++++++++++++++ lib/values.c | 6 +-- 3 files changed, 87 insertions(+), 3 deletions(-) create mode 100644 include/babeltrace/compat/glib.h diff --git a/include/Makefile.am b/include/Makefile.am index 15159dd7..88c28c28 100644 --- a/include/Makefile.am +++ b/include/Makefile.am @@ -71,5 +71,6 @@ noinst_HEADERS = \ babeltrace/compat/string.h \ babeltrace/compat/utc.h \ babeltrace/compat/limits.h \ + babeltrace/compat/glib.h \ babeltrace/endian.h \ babeltrace/mmap-align.h diff --git a/include/babeltrace/compat/glib.h b/include/babeltrace/compat/glib.h new file mode 100644 index 00000000..a95d045b --- /dev/null +++ b/include/babeltrace/compat/glib.h @@ -0,0 +1,83 @@ +#ifndef _BABELTRACE_COMPAT_GLIB_H +#define _BABELTRACE_COMPAT_GLIB_H + +/* + * babeltrace/compat/glib.h + * + * Copyright (C) 2015 Michael Jeanson + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#include + +#if GLIB_CHECK_VERSION(2,31,8) + +static inline gboolean +babeltrace_g_hash_table_contains(GHashTable *hash_table, gconstpointer key) +{ + return g_hash_table_contains(hash_table, key); +} + +#else + +static inline gboolean +babeltrace_g_hash_table_contains(GHashTable *hash_table, gconstpointer key) +{ + const char *value; + + value = g_hash_table_lookup(hash_table, key); + if (value == NULL) { + return FALSE; + } + + return TRUE; +} + +#endif + + +#if GLIB_CHECK_VERSION(2,29,16) + +static inline GPtrArray * +babeltrace_g_ptr_array_new_full(guint reserved_size, + GDestroyNotify element_free_func) +{ + return g_ptr_array_new_full(reserved_size, element_free_func); +} + +#else + +static inline GPtrArray * +babeltrace_g_ptr_array_new_full(guint reserved_size, + GDestroyNotify element_free_func) +{ + GPtrArray *array; + + array = g_ptr_array_sized_new(reserved_size); + if (!array) { + goto end; + } + g_ptr_array_set_free_func(array, element_free_func); +end: + return array; +} +#endif + +#endif /* _BABELTRACE_COMPAT_GLIB_H */ diff --git a/lib/values.c b/lib/values.c index 5778528b..f75f008c 100644 --- a/lib/values.c +++ b/lib/values.c @@ -33,7 +33,7 @@ #include #include #include -#include +#include #define BT_VALUE_FROM_CONCRETE(_concrete) ((struct bt_value *) (_concrete)) #define BT_VALUE_TO_BOOL(_base) ((struct bt_value_bool *) (_base)) @@ -606,7 +606,7 @@ struct bt_value *bt_value_array_create(void) } array_obj->base = bt_value_create_base(BT_VALUE_TYPE_ARRAY); - array_obj->garray = g_ptr_array_new_full(0, + array_obj->garray = babeltrace_g_ptr_array_new_full(0, (GDestroyNotify) bt_put); if (!array_obj->garray) { @@ -1028,7 +1028,7 @@ bool bt_value_map_has_key(const struct bt_value *map_obj, const char *key) } quark = g_quark_from_string(key); - ret = g_hash_table_contains(typed_map_obj->ght, + ret = babeltrace_g_hash_table_contains(typed_map_obj->ght, GUINT_TO_POINTER(quark)); end: -- 2.34.1