about summary refs log tree commit diff stats
path: root/src/command/command.c
diff options
context:
space:
mode:
authorJames Booth <boothj5@gmail.com>2013-11-07 21:43:11 +0000
committerJames Booth <boothj5@gmail.com>2013-11-07 21:43:11 +0000
commit4abdb023961e94581f34ae4fede17532e05c0e7c (patch)
treec6d73b8737ae1f53d69e8017cdc5c562cae8e899 /src/command/command.c
parent3cc080b06acc2e2e35bbdad6dedcac008b46ee02 (diff)
parent480589f0aec93b5b83d287a221c69d0388f2ec3f (diff)
downloadprofani-tty-4abdb023961e94581f34ae4fede17532e05c0e7c.tar.gz
Merge remote-tracking branch 'tsenart/passwords-on-accounts-file'
Diffstat (limited to 'src/command/command.c')
-rw-r--r--src/command/command.c31
1 files changed, 23 insertions, 8 deletions
diff --git a/src/command/command.c b/src/command/command.c
index e8232405..35bcd4f7 100644
--- a/src/command/command.c
+++ b/src/command/command.c
@@ -20,6 +20,7 @@
  *
  */
 
+#include <assert.h>
 #include <errno.h>
 #include <limits.h>
 #include <stdlib.h>
@@ -68,6 +69,7 @@ typedef struct cmd_t {
 
 typedef char*(*autocompleter)(char*, int*);
 
+static char * _ask_password(void);
 static void _update_presence(const resource_presence_t presence,
     const char * const show, gchar **args);
 static gboolean _cmd_set_boolean_preference(gchar *arg, struct cmd_help_t help,
@@ -1347,13 +1349,6 @@ _cmd_connect(gchar **args, struct cmd_help_t help)
         char *lower = g_utf8_strdown(user, -1);
         char *jid;
 
-        status_bar_get_password();
-        status_bar_refresh();
-        char passwd[21];
-        inp_block();
-        inp_get_password(passwd);
-        inp_non_block();
-
         ProfAccount *account = accounts_get_account(lower);
         if (account != NULL) {
             if (account->resource != NULL) {
@@ -1361,12 +1356,18 @@ _cmd_connect(gchar **args, struct cmd_help_t help)
             } else {
                 jid = strdup(account->jid);
             }
+
+            if (account->password == NULL) {
+                account->password = _ask_password();
+            }
             cons_show("Connecting with account %s as %s", account->name, jid);
-            conn_status = jabber_connect_with_account(account, passwd);
+            conn_status = jabber_connect_with_account(account);
         } else {
+            char *passwd = _ask_password();
             jid = strdup(lower);
             cons_show("Connecting as %s", jid);
             conn_status = jabber_connect_with_details(jid, passwd, altdomain);
+            free(passwd);
         }
         g_free(lower);
 
@@ -3525,6 +3526,20 @@ _cmd_xa(gchar **args, struct cmd_help_t help)
     return TRUE;
 }
 
+// helper function that asks the user for a password and saves it in passwd
+
+static char *
+_ask_password(void) {
+  char *passwd = malloc(sizeof(char) * 21);
+  status_bar_get_password();
+  status_bar_refresh();
+  inp_block();
+  inp_get_password(passwd);
+  inp_non_block();
+
+  return passwd;
+}
+
 // helper function for status change commands
 
 static void