# HG changeset patch # User Mark Doliner # Date 1247082410 0 # Node ID 4f24d5da4cb3ea1adff44bf58aa584b5e0a322fd # Parent 88ef8c38a639db9b9bdd4a7af8fff0dfa2222779 Create a oscar_get_ui_info_string() function that looks up a value in the ui_info hash table, and use this function in clientlogin.c and oscar.c diff -r 88ef8c38a639 -r 4f24d5da4cb3 libpurple/protocols/oscar/clientlogin.c --- a/libpurple/protocols/oscar/clientlogin.c Wed Jul 08 19:15:31 2009 +0000 +++ b/libpurple/protocols/oscar/clientlogin.c Wed Jul 08 19:46:50 2009 +0000 @@ -56,17 +56,9 @@ static const char *get_client_key(OscarData *od) { - GHashTable *ui_info; - const char *client_key = NULL; - - ui_info = purple_core_get_ui_info(); - if (ui_info != NULL) - client_key = g_hash_table_lookup(ui_info, - od->icq ? "prpl-icq-clientkey" : "prpl-aim-clientkey"); - if (client_key == NULL) - client_key = DEFAULT_CLIENT_KEY; - - return client_key; + return oscar_get_ui_info_string( + od->icq ? "prpl-icq-clientkey" : "prpl-aim-clientkey", + DEFAULT_CLIENT_KEY); } /** diff -r 88ef8c38a639 -r 4f24d5da4cb3 libpurple/protocols/oscar/oscar.c --- a/libpurple/protocols/oscar/oscar.c Wed Jul 08 19:15:31 2009 +0000 +++ b/libpurple/protocols/oscar/oscar.c Wed Jul 08 19:46:50 2009 +0000 @@ -1673,10 +1673,9 @@ } if (in != '\n') { char buf[256]; - GHashTable *ui_info = purple_core_get_ui_info(); g_snprintf(buf, sizeof(buf), _("You may be disconnected shortly. " "If so, check %s for updates."), - ((ui_info && g_hash_table_lookup(ui_info, "website")) ? (char *)g_hash_table_lookup(ui_info, "website") : PURPLE_WEBSITE)); + oscar_get_ui_info_string("website", PURPLE_WEBSITE)); purple_notify_warning(pos->gc, NULL, _("Unable to get a valid AIM login hash."), buf); @@ -1715,10 +1714,9 @@ pos->fd = source; if (source < 0) { - GHashTable *ui_info = purple_core_get_ui_info(); buf = g_strdup_printf(_("You may be disconnected shortly. " "If so, check %s for updates."), - ((ui_info && g_hash_table_lookup(ui_info, "website")) ? (char *)g_hash_table_lookup(ui_info, "website") : PURPLE_WEBSITE)); + oscar_get_ui_info_string("website", PURPLE_WEBSITE)); purple_notify_warning(pos->gc, NULL, _("Unable to get a valid AIM login hash."), buf); @@ -1814,13 +1812,12 @@ straight_to_hell, pos) == NULL) { char buf[256]; - GHashTable *ui_info = purple_core_get_ui_info(); g_free(pos->modname); g_free(pos); g_snprintf(buf, sizeof(buf), _("You may be disconnected shortly. " "If so, check %s for updates."), - ((ui_info && g_hash_table_lookup(ui_info, "website")) ? (char *)g_hash_table_lookup(ui_info, "website") : PURPLE_WEBSITE)); + oscar_get_ui_info_string("website", PURPLE_WEBSITE)); purple_notify_warning(pos->gc, NULL, _("Unable to get a valid login hash."), buf); @@ -1905,9 +1902,8 @@ case 0x1c: { /* client too old */ - GHashTable *ui_info = purple_core_get_ui_info(); g_snprintf(buf, sizeof(buf), _("The client version you are using is too old. Please upgrade at %s"), - ((ui_info && g_hash_table_lookup(ui_info, "website")) ? (char *)g_hash_table_lookup(ui_info, "website") : PURPLE_WEBSITE)); + oscar_get_ui_info_string("website", PURPLE_WEBSITE)); purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_OTHER_ERROR, buf); break; } @@ -7111,6 +7107,9 @@ * use them to override these two version fields which are sent to the * server when logging in. AOL requested this change to allow clients to * use custom values. + * + * TODO: It would be more appropriate for UIs to put these in the hash + * table returned by purple_core_get_ui_info(). */ purple_prefs_add_string("/plugins/prpl/oscar/clientstring", NULL); purple_prefs_add_int("/plugins/prpl/oscar/distid", -1); diff -r 88ef8c38a639 -r 4f24d5da4cb3 libpurple/protocols/oscar/oscar.h --- a/libpurple/protocols/oscar/oscar.h Wed Jul 08 19:15:31 2009 +0000 +++ b/libpurple/protocols/oscar/oscar.h Wed Jul 08 19:46:50 2009 +0000 @@ -1527,6 +1527,8 @@ (((*((buf)+2)) << 16) & 0x00ff0000) + \ (((*((buf)+3)) << 24) & 0xff000000)) +const char *oscar_get_ui_info_string(const char *str, const char *default_value); + guint16 aimutil_iconsum(const guint8 *buf, int buflen); int aimutil_tokslen(char *toSearch, int theindex, char dl); int aimutil_itemcnt(char *toSearch, char dl); diff -r 88ef8c38a639 -r 4f24d5da4cb3 libpurple/protocols/oscar/util.c --- a/libpurple/protocols/oscar/util.c Wed Jul 08 19:15:31 2009 +0000 +++ b/libpurple/protocols/oscar/util.c Wed Jul 08 19:46:50 2009 +0000 @@ -26,12 +26,29 @@ */ #include "oscar.h" + +#include "core.h" + #include #ifdef _WIN32 #include "win32dep.h" #endif +const char *oscar_get_ui_info_string(const char *str, const char *default_value) +{ + GHashTable *ui_info; + const char *value = NULL; + + ui_info = purple_core_get_ui_info(); + if (ui_info != NULL) + value = g_hash_table_lookup(ui_info, str); + if (value == NULL) + value = default_value; + + return value; +} + /* * Tokenizing functions. Used to portably replace strtok/sep. * -- DMP.