From a2975a2b35a0b1911d1bde716cfe750c31967a2f Mon Sep 17 00:00:00 2001 From: Patrick McDermott Date: Tue, 31 Oct 2017 01:26:48 -0400 Subject: parse_query_string(): New (public) function Copied from src/about.c. --- (limited to 'src') diff --git a/src/string-utils.c b/src/string-utils.c index 96b5a0e..8484468 100644 --- a/src/string-utils.c +++ b/src/string-utils.c @@ -35,3 +35,40 @@ atoi64(const gchar *a) return 0; } } + +GHashTable * +parse_query_string(gchar *str) +{ + GHashTable *hash_table; + gchar *key; + gchar *val; + + hash_table = g_hash_table_new_full(g_str_hash, g_str_equal, + g_free, g_free); + + while (*str) { + key = str; + for (; *str && *str != '='; ++str); + if (!*str) { + g_hash_table_insert(hash_table, + g_uri_unescape_string(key, NULL), NULL); + break; + } + *str = '\0'; + val = ++str; + for (; *str && *str != '&'; ++str); + if (!*str) { + g_hash_table_insert(hash_table, + g_uri_unescape_string(key, NULL), + g_uri_unescape_string(val, NULL)); + break; + } + *str = '\0'; + g_hash_table_insert(hash_table, + g_uri_unescape_string(key, NULL), + g_uri_unescape_string(val, NULL)); + ++str; + } + + return hash_table; +} diff --git a/src/string-utils.h b/src/string-utils.h index 5ea48ee..6e9c31c 100644 --- a/src/string-utils.h +++ b/src/string-utils.h @@ -29,6 +29,9 @@ G_BEGIN_DECLS gint64 atoi64(const gchar *a); +GHashTable * +parse_query_string(gchar *str); + G_END_DECLS #endif /* MQ_STRING_UTILITIES_H */ -- cgit v0.9.1