mcabber/mcabber/settings.c
changeset 2340 6eeef7be58f3
parent 2339 7f11a567d236
child 2341 c78988260b9f
equal deleted inserted replaced
2339:7f11a567d236 2340:6eeef7be58f3
    46 typedef struct {
    46 typedef struct {
    47   gchar *pgp_keyid;   /* KeyId the contact is supposed to use */
    47   gchar *pgp_keyid;   /* KeyId the contact is supposed to use */
    48   guint pgp_disabled; /* If TRUE, PGP is disabled for outgoing messages */
    48   guint pgp_disabled; /* If TRUE, PGP is disabled for outgoing messages */
    49   guint pgp_force;    /* If TRUE, PGP is used w/o negotiation */
    49   guint pgp_force;    /* If TRUE, PGP is used w/o negotiation */
    50 } pgpopt_t;
    50 } pgpopt_t;
       
    51 
       
    52 void pgpopt_free(gpointer data)
       
    53 {
       
    54   pgpopt_t *opt = (pgpopt_t *)data;
       
    55   g_free(opt->pgp_keyid);
       
    56   g_free(opt);
       
    57 }
    51 #endif
    58 #endif
    52 
    59 
    53 typedef struct {
    60 typedef struct {
    54   settings_guard_t guard;
    61   settings_guard_t guard;
    55 } installed_guard_t;
    62 } installed_guard_t;
    77   option  = g_hash_table_new_full(&g_str_hash, &g_str_equal, &g_free, &g_free);
    84   option  = g_hash_table_new_full(&g_str_hash, &g_str_equal, &g_free, &g_free);
    78   alias   = g_hash_table_new_full(&g_str_hash, &g_str_equal, &g_free, &g_free);
    85   alias   = g_hash_table_new_full(&g_str_hash, &g_str_equal, &g_free, &g_free);
    79   binding = g_hash_table_new_full(&g_str_hash, &g_str_equal, &g_free, &g_free);
    86   binding = g_hash_table_new_full(&g_str_hash, &g_str_equal, &g_free, &g_free);
    80   guards  = g_hash_table_new_full(&g_str_hash, &g_str_equal, &g_free, &g_free);
    87   guards  = g_hash_table_new_full(&g_str_hash, &g_str_equal, &g_free, &g_free);
    81 #ifdef HAVE_GPGME
    88 #ifdef HAVE_GPGME
    82   pgpopt = g_hash_table_new(&g_str_hash, &g_str_equal);
    89   pgpopt = g_hash_table_new_full(&g_str_hash, &g_str_equal, &g_free, &pgpopt_free);
    83 #endif
    90 #endif
    84 #ifdef HAVE_LIBOTR
    91 #ifdef HAVE_LIBOTR
    85   otrpolicy = g_hash_table_new(&g_str_hash, &g_str_equal);
    92   otrpolicy = g_hash_table_new_full(&g_str_hash, &g_str_equal, &g_free, &g_free);
    86 #endif
    93 #endif
    87 }
    94 }
    88 
    95 
    89 void settings_free(void)
    96 void settings_free(void)
    90 {
    97 {
   650 
   657 
   651 #ifdef HAVE_LIBOTR
   658 #ifdef HAVE_LIBOTR
   652 static void remove_default_policies(char *k, char *policy, void *defaultp)
   659 static void remove_default_policies(char *k, char *policy, void *defaultp)
   653 {
   660 {
   654   if (*(enum otr_policy *)policy == *(enum otr_policy *)defaultp) {
   661   if (*(enum otr_policy *)policy == *(enum otr_policy *)defaultp) {
   655     g_free((enum otr_policy *) policy);
       
   656     g_hash_table_remove(otrpolicy, k);
   662     g_hash_table_remove(otrpolicy, k);
   657   }
   663   }
   658 }
   664 }
   659 #endif
   665 #endif
   660 
   666 
   672 
   678 
   673   otrdata = g_hash_table_lookup(otrpolicy, bjid);
   679   otrdata = g_hash_table_lookup(otrpolicy, bjid);
   674 
   680 
   675   if (value == default_policy) {
   681   if (value == default_policy) {
   676     if (otrdata) {
   682     if (otrdata) {
   677       g_free(otrdata);
       
   678       g_hash_table_remove(otrpolicy, bjid);
   683       g_hash_table_remove(otrpolicy, bjid);
   679     }
   684     }
   680   } else if (otrdata) {
   685   } else if (otrdata) {
   681     *otrdata = value;
   686     *otrdata = value;
   682   } else {
   687   } else {