about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/config/account.c110
-rw-r--r--src/config/account.h19
-rw-r--r--src/config/accounts.c19
3 files changed, 38 insertions, 110 deletions
diff --git a/src/config/account.c b/src/config/account.c
index 238c2ef1..89436f9a 100644
--- a/src/config/account.c
+++ b/src/config/account.c
@@ -49,71 +49,53 @@
 #include "xmpp/resource.h"
 
 ProfAccount*
-account_new(const gchar* const name, const gchar* const jid,
-            const gchar* const password, const gchar* eval_password, gboolean enabled, const gchar* const server,
-            int port, const gchar* const resource, const gchar* const last_presence,
-            const gchar* const login_presence, int priority_online, int priority_chat,
-            int priority_away, int priority_xa, int priority_dnd,
-            const gchar* const muc_service, const gchar* const muc_nick,
-            const gchar* const otr_policy, GList* otr_manual, GList* otr_opportunistic,
-            GList* otr_always, const gchar* const omemo_policy, GList* omemo_enabled,
-            GList* omemo_disabled, GList* ox_enabled, GList* pgp_enabled,
-            const gchar* const pgp_keyid, const char* const startscript, const char* const theme,
-            gchar* tls_policy, gchar* auth_policy)
+account_new(gchar* name, gchar* jid, gchar* password, gchar* eval_password, gboolean enabled,
+            gchar* server, int port, gchar* resource, gchar* last_presence, gchar* login_presence,
+            int priority_online, int priority_chat, int priority_away, int priority_xa, int priority_dnd,
+            gchar* muc_service, gchar* muc_nick,
+            gchar* otr_policy, GList* otr_manual, GList* otr_opportunistic, GList* otr_always,
+            gchar* omemo_policy, GList* omemo_enabled, GList* omemo_disabled,
+            GList* ox_enabled, GList* pgp_enabled, gchar* pgp_keyid,
+            gchar* startscript, gchar* theme, gchar* tls_policy, gchar* auth_policy)
 {
-    ProfAccount* new_account = malloc(sizeof(ProfAccount));
-    memset(new_account, 0, sizeof(ProfAccount));
+    ProfAccount* new_account = calloc(1, sizeof(ProfAccount));
 
-    new_account->name = strdup(name);
+    new_account->name = name;
 
     if (jid) {
-        new_account->jid = strdup(jid);
+        new_account->jid = jid;
     } else {
         new_account->jid = strdup(name);
     }
 
-    if (password) {
-        new_account->password = strdup(password);
-    } else {
-        new_account->password = NULL;
-    }
+    new_account->password = password;
 
-    if (eval_password) {
-        new_account->eval_password = strdup(eval_password);
-    } else {
-        new_account->eval_password = NULL;
-    }
+    new_account->eval_password = eval_password;
 
     new_account->enabled = enabled;
 
-    if (server) {
-        new_account->server = strdup(server);
-    } else {
-        new_account->server = NULL;
-    }
+    new_account->server = server;
 
-    if (resource) {
-        new_account->resource = strdup(resource);
-    } else {
-        new_account->resource = NULL;
-    }
+    new_account->resource = resource;
 
     new_account->port = port;
 
     if (last_presence == NULL || !valid_resource_presence_string(last_presence)) {
         new_account->last_presence = strdup("online");
+        g_free(last_presence);
     } else {
-        new_account->last_presence = strdup(last_presence);
+        new_account->last_presence = last_presence;
     }
 
     if (login_presence == NULL) {
         new_account->login_presence = strdup("online");
     } else if (strcmp(login_presence, "last") == 0) {
-        new_account->login_presence = strdup(login_presence);
+        new_account->login_presence = login_presence;
     } else if (!valid_resource_presence_string(login_presence)) {
         new_account->login_presence = strdup("online");
+        g_free(login_presence);
     } else {
-        new_account->login_presence = strdup(login_presence);
+        new_account->login_presence = login_presence;
     }
 
     new_account->priority_online = priority_online;
@@ -122,72 +104,38 @@ account_new(const gchar* const name, const gchar* const jid,
     new_account->priority_xa = priority_xa;
     new_account->priority_dnd = priority_dnd;
 
-    if (muc_service) {
-        new_account->muc_service = strdup(muc_service);
-    } else {
-        new_account->muc_service = NULL;
-    }
+    new_account->muc_service = muc_service;
 
     if (muc_nick == NULL) {
         Jid* jidp = jid_create(new_account->jid);
         new_account->muc_nick = strdup(jidp->domainpart);
         jid_destroy(jidp);
     } else {
-        new_account->muc_nick = strdup(muc_nick);
+        new_account->muc_nick = muc_nick;
     }
 
-    if (otr_policy) {
-        new_account->otr_policy = strdup(otr_policy);
-    } else {
-        new_account->otr_policy = NULL;
-    }
+    new_account->otr_policy = otr_policy;
 
     new_account->otr_manual = otr_manual;
     new_account->otr_opportunistic = otr_opportunistic;
     new_account->otr_always = otr_always;
 
-    if (omemo_policy) {
-        new_account->omemo_policy = strdup(omemo_policy);
-    } else {
-        new_account->omemo_policy = NULL;
-    }
-
+    new_account->omemo_policy = omemo_policy;
     new_account->omemo_enabled = omemo_enabled;
     new_account->omemo_disabled = omemo_disabled;
 
     new_account->ox_enabled = ox_enabled;
 
     new_account->pgp_enabled = pgp_enabled;
+    new_account->pgp_keyid = pgp_keyid;
 
-    if (pgp_keyid != NULL) {
-        new_account->pgp_keyid = strdup(pgp_keyid);
-    } else {
-        new_account->pgp_keyid = NULL;
-    }
+    new_account->startscript = startscript;
 
-    if (startscript != NULL) {
-        new_account->startscript = strdup(startscript);
-    } else {
-        new_account->startscript = NULL;
-    }
+    new_account->theme = theme;
 
-    if (theme != NULL) {
-        new_account->theme = strdup(theme);
-    } else {
-        new_account->theme = NULL;
-    }
-
-    if (tls_policy != NULL) {
-        new_account->tls_policy = strdup(tls_policy);
-    } else {
-        new_account->tls_policy = NULL;
-    }
+    new_account->tls_policy = tls_policy;
 
-    if (auth_policy != NULL) {
-        new_account->auth_policy = strdup(auth_policy);
-    } else {
-        new_account->auth_policy = NULL;
-    }
+    new_account->auth_policy = auth_policy;
 
     return new_account;
 }
diff --git a/src/config/account.h b/src/config/account.h
index ce49883e..a469e068 100644
--- a/src/config/account.h
+++ b/src/config/account.h
@@ -73,17 +73,14 @@ typedef struct prof_account_t
     gchar* auth_policy;
 } ProfAccount;
 
-ProfAccount* account_new(const gchar* const name, const gchar* const jid,
-                         const gchar* const passord, const gchar* eval_password, gboolean enabled, const gchar* const server,
-                         int port, const gchar* const resource, const gchar* const last_presence,
-                         const gchar* const login_presence, int priority_online, int priority_chat,
-                         int priority_away, int priority_xa, int priority_dnd,
-                         const gchar* const muc_service, const gchar* const muc_nick,
-                         const gchar* const otr_policy, GList* otr_manual, GList* otr_opportunistic,
-                         GList* otr_always, const gchar* const omemo_policy, GList* omemo_enabled,
-                         GList* omemo_disabled, GList* ox_enabled, GList* pgp_enabled, const gchar* const pgp_keyid,
-                         const char* const startscript, const char* const theme, gchar* tls_policy,
-                         gchar* auth_policy);
+ProfAccount* account_new(gchar* name, gchar* jid, gchar* password, gchar* eval_password, gboolean enabled,
+                         gchar* server, int port, gchar* resource, gchar* last_presence, gchar* login_presence,
+                         int priority_online, int priority_chat, int priority_away, int priority_xa, int priority_dnd,
+                         gchar* muc_service, gchar* muc_nick,
+                         gchar* otr_policy, GList* otr_manual, GList* otr_opportunistic, GList* otr_always,
+                         gchar* omemo_policy, GList* omemo_enabled, GList* omemo_disabled,
+                         GList* ox_enabled, GList* pgp_enabled, gchar* pgp_keyid,
+                         gchar* startscript, gchar* theme, gchar* tls_policy, gchar* auth_policy);
 char* account_create_connect_jid(ProfAccount* account);
 gboolean account_eval_password(ProfAccount* account);
 void account_free(ProfAccount* account);
diff --git a/src/config/accounts.c b/src/config/accounts.c
index cf1c1754..9c7eddf9 100644
--- a/src/config/accounts.c
+++ b/src/config/accounts.c
@@ -342,7 +342,7 @@ accounts_get_account(const char* const name)
 
         gchar* auth_policy = g_key_file_get_string(accounts, name, "auth.policy", NULL);
 
-        ProfAccount* new_account = account_new(name, jid, password, eval_password, enabled,
+        ProfAccount* new_account = account_new(g_strdup(name), jid, password, eval_password, enabled,
                                                server, port, resource, last_presence, login_presence,
                                                priority_online, priority_chat, priority_away, priority_xa,
                                                priority_dnd, muc_service, muc_nick, otr_policy, otr_manual,
@@ -350,23 +350,6 @@ accounts_get_account(const char* const name)
                                                omemo_disabled, ox_enabled, pgp_enabled, pgp_keyid,
                                                startscript, theme, tls_policy, auth_policy);
 
-        g_free(jid);
-        g_free(password);
-        g_free(eval_password);
-        g_free(server);
-        g_free(resource);
-        g_free(last_presence);
-        g_free(login_presence);
-        g_free(muc_service);
-        g_free(muc_nick);
-        g_free(otr_policy);
-        g_free(omemo_policy);
-        g_free(pgp_keyid);
-        g_free(startscript);
-        g_free(theme);
-        g_free(tls_policy);
-        g_free(auth_policy);
-
         return new_account;
     }
 }