Skip to content

Commit

Permalink
[gsupplicant] Fixed compilation against glib < 2.36
Browse files Browse the repository at this point in the history
Avoid using g_variant_get_data_as_bytes and g_hash_table_get_keys_as_array
  • Loading branch information
monich committed Mar 13, 2017
1 parent 8f95063 commit 12ef8ca
Show file tree
Hide file tree
Showing 5 changed files with 35 additions and 13 deletions.
2 changes: 1 addition & 1 deletion src/gsupplicant_bss.c
Expand Up @@ -383,7 +383,7 @@ gsupplicant_bss_get_bytes(
GDBusProxy *proxy = G_DBUS_PROXY(priv->proxy);
GVariant* var = g_dbus_proxy_get_cached_property(proxy, name);
if (var && g_variant_is_of_type(var, G_VARIANT_TYPE_BYTESTRING)) {
GBytes* bytes = g_variant_get_data_as_bytes(var);
GBytes* bytes = gsupplicant_variant_data_as_bytes(var);
g_variant_unref(var);
return bytes;
}
Expand Down
4 changes: 2 additions & 2 deletions src/gsupplicant_interface.c
Expand Up @@ -661,7 +661,7 @@ gsupplicant_interface_wps_parse_creds(
GSupplicantWPSCredentials* wps = data;
if (!g_strcmp0(name, "BSSID")) {
if (wps->bssid) g_bytes_unref(wps->bssid);
wps->bssid = g_variant_get_data_as_bytes(value);
wps->bssid = gsupplicant_variant_data_as_bytes(value);
GVERBOSE(" %s: %s", name, gsupplicant_format_bytes(wps->bssid, TRUE));
} else if (!g_strcmp0(name, "SSID")) {
if (g_variant_is_of_type(value, G_VARIANT_TYPE_STRING)) {
Expand Down Expand Up @@ -695,7 +695,7 @@ gsupplicant_interface_wps_parse_creds(
encr_types_map, G_N_ELEMENTS(encr_types_map));
} else if (!g_strcmp0(name, "Key")) {
if (wps->key) g_bytes_unref(wps->key);
wps->key = g_variant_get_data_as_bytes(value);
wps->key = gsupplicant_variant_data_as_bytes(value);
GVERBOSE(" %s: %s", name, gsupplicant_format_bytes(wps->key, TRUE));
} else if (!g_strcmp0(name, "KeyIndex")) {
if (g_variant_is_of_type(value, G_VARIANT_TYPE_UINT32)) {
Expand Down
22 changes: 12 additions & 10 deletions src/gsupplicant_network.c
Expand Up @@ -283,19 +283,17 @@ gsupplicant_network_properties_equal(
const gsize size = g_hash_table_size(p1);
if (g_hash_table_size(p2) == size) {
if (size) {
GHashTableIter it;
gpointer key, value;
gboolean equal = TRUE;
char** keys = (char**)g_hash_table_get_keys_as_array(p1, NULL);
const GStrV* ptr;
for (ptr = keys; *ptr; ptr++) {
const char* key = *ptr;
const char* value1 = g_hash_table_lookup(p1, key);
g_hash_table_iter_init(&it, p1);
while (g_hash_table_iter_next(&it, &key, &value)) {
const char* value2 = g_hash_table_lookup(p2, key);
if (g_strcmp0(value1, value2)) {
if (g_strcmp0(value, value2)) {
equal = FALSE;
break;
}
}
g_free(keys);
return equal;
}
return TRUE;
Expand All @@ -322,10 +320,14 @@ gsupplicant_network_update_properties(
#if GUTIL_LOG_VERBOSE
if (GLOG_ENABLED(GUTIL_LOG_VERBOSE)) {
if (props) {
char** keys;
const GStrV* ptr;
GHashTableIter it;
gpointer key;
char** keys = g_new(char*, g_hash_table_size(props) + 1);
char** ptr = keys;
g_hash_table_iter_init(&it, props);
while (g_hash_table_iter_next(&it, &key, NULL)) *ptr++ = key;
*ptr++ = NULL;
GVERBOSE("[%s] Properties:", self->path);
keys = (char**)g_hash_table_get_keys_as_array(props, NULL);
gutil_strv_sort(keys, TRUE);
for (ptr = keys; *ptr; ptr++) {
const char* key = *ptr;
Expand Down
16 changes: 16 additions & 0 deletions src/gsupplicant_util.c
Expand Up @@ -417,6 +417,22 @@ gsupplicant_variant_new_ayy(
return g_variant_builder_end(&ayy);
}

GBytes *
gsupplicant_variant_data_as_bytes(
GVariant *value)
{
if (value) {
#if GLIB_CHECK_VERSION(2,36,0)
/* This is more efficient */
return g_variant_get_data_as_bytes(value);
#else
return g_bytes_new(g_variant_get_data(value),
g_variant_get_size(value));
#endif
}
return NULL;
}

/*
* Local Variables:
* mode: C
Expand Down
4 changes: 4 additions & 0 deletions src/gsupplicant_util_p.h
Expand Up @@ -177,6 +177,10 @@ GVariant*
gsupplicant_variant_new_ayy(
GBytes** bytes);

GBytes *
gsupplicant_variant_data_as_bytes(
GVariant *value);

#endif /* GSUPPLICANT_UTIL_PRIVATE_H */

/*
Expand Down

0 comments on commit 12ef8ca

Please sign in to comment.