Merge remote-tracking branch 'gvdb/master' into update-gvdb

This commit is contained in:
Philip Withnall 2019-02-14 13:23:28 +00:00
commit cca7ab2176
2 changed files with 34 additions and 16 deletions

View File

@ -332,7 +332,7 @@ gvdb_table_list_from_item (GvdbTable *table,
/** /**
* gvdb_table_get_names: * gvdb_table_get_names:
* @table: a #GvdbTable * @table: a #GvdbTable
* @length: the number of items returned, or %NULL * @length: (optional): the number of items returned, or %NULL
* *
* Gets a list of all names contained in @table. * Gets a list of all names contained in @table.
* *
@ -344,11 +344,11 @@ gvdb_table_list_from_item (GvdbTable *table,
* above calls in the case of the corrupted file. Note also that the * above calls in the case of the corrupted file. Note also that the
* returned strings may not be utf8. * returned strings may not be utf8.
* *
* Returns: a %NULL-terminated list of strings, of length @length * Returns: (array length=length): a %NULL-terminated list of strings, of length @length
**/ **/
gchar ** gchar **
gvdb_table_get_names (GvdbTable *table, gvdb_table_get_names (GvdbTable *table,
gint *length) gsize *length)
{ {
gchar **names; gchar **names;
gint n_names; gint n_names;
@ -462,7 +462,7 @@ gvdb_table_get_names (GvdbTable *table,
{ {
GPtrArray *fixed_names; GPtrArray *fixed_names;
fixed_names = g_ptr_array_new (); fixed_names = g_ptr_array_sized_new (n_names);
for (i = 0; i < n_names; i++) for (i = 0; i < n_names; i++)
if (names[i] != NULL) if (names[i] != NULL)
g_ptr_array_add (fixed_names, names[i]); g_ptr_array_add (fixed_names, names[i]);
@ -474,7 +474,10 @@ gvdb_table_get_names (GvdbTable *table,
} }
if (length) if (length)
*length = n_names; {
G_STATIC_ASSERT (sizeof (*length) >= sizeof (n_names));
*length = n_names;
}
return names; return names;
} }

View File

@ -22,40 +22,55 @@
#include <glib.h> #include <glib.h>
/* We cannot enable the weak attribute unconditionally here because both
* gvdb/gvdb-reader.c and tests/dconf-mock-gvdb.c include this file. The
* intention of using weak symbols here is to allow the latter to override
* functions defined in the former, so functions in tests/dconf-mock-gvdb.c
* must have strong bindings. */
#ifdef GVDB_USE_WEAK_SYMBOLS
# ifdef __GNUC__
# define GVDB_GNUC_WEAK __attribute__((weak))
# else
# define GVDB_GNUC_WEAK
# endif
#else
# define GVDB_GNUC_WEAK
#endif
typedef struct _GvdbTable GvdbTable; typedef struct _GvdbTable GvdbTable;
G_BEGIN_DECLS G_BEGIN_DECLS
G_GNUC_INTERNAL G_GNUC_INTERNAL GVDB_GNUC_WEAK
GvdbTable * gvdb_table_new_from_bytes (GBytes *bytes, GvdbTable * gvdb_table_new_from_bytes (GBytes *bytes,
gboolean trusted, gboolean trusted,
GError **error); GError **error);
G_GNUC_INTERNAL G_GNUC_INTERNAL GVDB_GNUC_WEAK
GvdbTable * gvdb_table_new (const gchar *filename, GvdbTable * gvdb_table_new (const gchar *filename,
gboolean trusted, gboolean trusted,
GError **error); GError **error);
G_GNUC_INTERNAL G_GNUC_INTERNAL GVDB_GNUC_WEAK
void gvdb_table_free (GvdbTable *table); void gvdb_table_free (GvdbTable *table);
G_GNUC_INTERNAL G_GNUC_INTERNAL GVDB_GNUC_WEAK
gchar ** gvdb_table_get_names (GvdbTable *table, gchar ** gvdb_table_get_names (GvdbTable *table,
gint *length); gsize *length);
G_GNUC_INTERNAL G_GNUC_INTERNAL GVDB_GNUC_WEAK
gchar ** gvdb_table_list (GvdbTable *table, gchar ** gvdb_table_list (GvdbTable *table,
const gchar *key); const gchar *key);
G_GNUC_INTERNAL G_GNUC_INTERNAL GVDB_GNUC_WEAK
GvdbTable * gvdb_table_get_table (GvdbTable *table, GvdbTable * gvdb_table_get_table (GvdbTable *table,
const gchar *key); const gchar *key);
G_GNUC_INTERNAL G_GNUC_INTERNAL GVDB_GNUC_WEAK
GVariant * gvdb_table_get_raw_value (GvdbTable *table, GVariant * gvdb_table_get_raw_value (GvdbTable *table,
const gchar *key); const gchar *key);
G_GNUC_INTERNAL G_GNUC_INTERNAL GVDB_GNUC_WEAK
GVariant * gvdb_table_get_value (GvdbTable *table, GVariant * gvdb_table_get_value (GvdbTable *table,
const gchar *key); const gchar *key);
G_GNUC_INTERNAL G_GNUC_INTERNAL GVDB_GNUC_WEAK
gboolean gvdb_table_has_value (GvdbTable *table, gboolean gvdb_table_has_value (GvdbTable *table,
const gchar *key); const gchar *key);
G_GNUC_INTERNAL G_GNUC_INTERNAL GVDB_GNUC_WEAK
gboolean gvdb_table_is_valid (GvdbTable *table); gboolean gvdb_table_is_valid (GvdbTable *table);
G_END_DECLS G_END_DECLS