about summary refs log tree commit diff stats
path: root/src/command/commands.c
diff options
context:
space:
mode:
authorKristofer M White <me@kmwhite.net>2014-03-05 17:13:42 +0000
committerKristofer M White <me@kmwhite.net>2014-03-05 17:13:42 +0000
commit28425060bc5a759dead356e3ef49fc80a8c270d8 (patch)
tree5b9ba08e10fc9338b78e86e5056a65cc25165551 /src/command/commands.c
parentced6e7f411bb3e974344bdb72b7525bf63764b27 (diff)
downloadprofani-tty-28425060bc5a759dead356e3ef49fc80a8c270d8.tar.gz
Parsing optional args for cmd_join
Diffstat (limited to 'src/command/commands.c')
-rw-r--r--src/command/commands.c39
1 files changed, 32 insertions, 7 deletions
diff --git a/src/command/commands.c b/src/command/commands.c
index 7b6fc0f0..2515a5bd 100644
--- a/src/command/commands.c
+++ b/src/command/commands.c
@@ -1610,20 +1610,45 @@ cmd_join(gchar **args, struct cmd_help_t help)
         room = room_str->str;
     }
 
-    // nick supplied
+    // Additional args supplied
     if (num_args > 1) {
+        char *opt1 = args[1];
+        char *opt1val = args[2];
+        char *opt2 = args[3];
+        char *opt2val = args[4];
+        if (opt1 != NULL) {
+            if (opt1val == NULL) {
+                cons_show("Usage: %s", help.usage);
+                cons_show("");
+                return TRUE;
+            }
+            if (strcmp(opt1, "nick") == 0) {
+                nick = strdup(opt1val);
+            } else if (strcmp(opt1, "passwd") == 0) {
+                passwd = strdup(opt1val);
+            } else {
+                cons_show("Usage: %s", help.usage);
+                cons_show("");
+                return TRUE;
+            }
+            if (opt2 != NULL) {
+                if (strcmp(opt2, "nick") == 0) {
+                    nick = strdup(opt2val);
+                } else if (strcmp(opt2, "passwd") == 0) {
+                    passwd = strdup(opt2val);
+                } else {
+                    cons_show("Usage: %s", help.usage);
+                    cons_show("");
+                    return TRUE;
+                }
+            }
+        }
         nick = args[1];
-
     // otherwise use account preference
     } else {
         nick = account->muc_nick;
     }
 
-    // pass supplied
-    if (num_args == 3) {
-        passwd = args[2];
-    }
-
     Jid *room_jid = jid_create_from_bare_and_resource(room, nick);
 
     if (!muc_room_is_active(room_jid)) {