diff options
Diffstat (limited to 'src/otr/otr.c')
-rw-r--r-- | src/otr/otr.c | 33 |
1 files changed, 23 insertions, 10 deletions
diff --git a/src/otr/otr.c b/src/otr/otr.c index 7a5733bf..b6b68dcd 100644 --- a/src/otr/otr.c +++ b/src/otr/otr.c @@ -520,43 +520,56 @@ _otr_get_their_fingerprint(const char * const recipient) } } -static char * +static prof_otrpolicy_t _otr_get_policy(const char * const recipient) { ProfAccount *account = accounts_get_account(jabber_get_account_name()); // check contact specific setting if (g_list_find_custom(account->otr_manual, recipient, (GCompareFunc)g_strcmp0)) { account_free(account); - return strdup("manual"); + return PROF_OTRPOLICY_MANUAL; } if (g_list_find_custom(account->otr_opportunistic, recipient, (GCompareFunc)g_strcmp0)) { account_free(account); - return strdup("opportunistic"); + return PROF_OTRPOLICY_OPPORTUNISTIC; } if (g_list_find_custom(account->otr_always, recipient, (GCompareFunc)g_strcmp0)) { account_free(account); - return strdup("always"); + return PROF_OTRPOLICY_ALWAYS; } // check default account setting if (account->otr_policy != NULL) { - char *result; + prof_otrpolicy_t result; if (g_strcmp0(account->otr_policy, "manual") == 0) { - result = "manual"; + result = PROF_OTRPOLICY_MANUAL; } if (g_strcmp0(account->otr_policy, "opportunistic") == 0) { - result = "opportunistic"; + result = PROF_OTRPOLICY_OPPORTUNISTIC; } if (g_strcmp0(account->otr_policy, "always") == 0) { - result = "always"; + result = PROF_OTRPOLICY_ALWAYS; } account_free(account); - return strdup(result); + return result; } account_free(account); // check global setting - return prefs_get_string(PREF_OTR_POLICY); + char *pref_otr_policy = prefs_get_string(PREF_OTR_POLICY); + + // pref defaults to manual + prof_otrpolicy_t result = PROF_OTRPOLICY_MANUAL; + + if (strcmp(pref_otr_policy, "opportunistic") == 0) { + result = PROF_OTRPOLICY_OPPORTUNISTIC; + } else if (strcmp(pref_otr_policy, "always") == 0) { + result = PROF_OTRPOLICY_ALWAYS; + } + + prefs_free_string(pref_otr_policy); + + return result; } static char * |