aboutsummaryrefslogtreecommitdiffstats
path: root/src/command.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/command.c')
-rw-r--r--src/command.c33
1 files changed, 13 insertions, 20 deletions
diff --git a/src/command.c b/src/command.c
index 5342662ca..14ac059d0 100644
--- a/src/command.c
+++ b/src/command.c
@@ -1448,6 +1448,13 @@ handle_idle(struct client *client,
}
#ifdef ENABLE_SQLITE
+static void print_sticker(GString *name, GString *value,
+ struct client *client)
+{
+ client_printf(client, "sticker: %s=%s\n",
+ (char *)name, (char *)value);
+}
+
static enum command_return
handle_sticker_song(struct client *client, int argc, char *argv[])
{
@@ -1474,31 +1481,17 @@ handle_sticker_song(struct client *client, int argc, char *argv[])
return COMMAND_RETURN_OK;
} else if (argc == 4 && strcmp(argv[1], "list") == 0) {
- GList *list;
- GPtrArray *values;
- unsigned int x;
+ GHashTable *hash;
- list = sticker_song_list_values(song);
- if (NULL == list) {
+ hash = sticker_song_list_values(song);
+ if (NULL == hash) {
command_error(client, ACK_ERROR_NO_EXIST,
"no stickers found");
return COMMAND_RETURN_ERROR;
}
-
- for (x = 0; x < g_list_length(list); x++) {
- values = g_list_nth_data(list, x);
- if (NULL == values) {
- g_warning("NULL sticker found");
- continue;
- }
- client_printf(client, "sticker: %s=%s\n",
- (char *)g_ptr_array_index(values, 0),
- (char *)g_ptr_array_index(values, 1));
- g_free(g_ptr_array_index(values, 0));
- g_free(g_ptr_array_index(values, 1));
- g_ptr_array_free(values, TRUE);
- }
- g_list_free(list);
+ g_hash_table_foreach(hash, (GHFunc)print_sticker,
+ client);
+ g_hash_table_destroy(hash);
return COMMAND_RETURN_OK;
} else if (argc == 6 && strcmp(argv[1], "set") == 0) {