1
0
mirror of https://github.com/profanity-im/profanity.git synced 2024-11-03 19:37:16 -05:00

Parsing optional args for cmd_join

This commit is contained in:
Kristofer M White 2014-03-05 17:13:42 +00:00
parent ced6e7f411
commit 28425060bc
2 changed files with 37 additions and 12 deletions

View File

@ -235,9 +235,9 @@ static struct cmd_t command_defs[] =
NULL } } }, NULL } } },
{ "/join", { "/join",
cmd_join, parse_args_with_freetext, 1, 3, NULL, cmd_join, parse_args, 1, 5, NULL,
{ "/join room[@server] [nick] [password]", "Join a chat room.", { "/join room[@server] [nick value] [passwd value]", "Join a chat room.",
{ "/join room[@server] [nick] [password]", { "/join room[@server] [nick value] [passwd value]",
"--------------------------", "--------------------------",
"Join a chat room at the conference server.", "Join a chat room at the conference server.",
"If nick is specified you will join with this nickname.", "If nick is specified you will join with this nickname.",
@ -246,8 +246,8 @@ static struct cmd_t command_defs[] =
"If the room doesn't exist, and the server allows it, a new one will be created.", "If the room doesn't exist, and the server allows it, a new one will be created.",
"", "",
"Example : /join jdev@conference.jabber.org", "Example : /join jdev@conference.jabber.org",
"Example : /join jdev@conference.jabber.org mynick", "Example : /join jdev@conference.jabber.org nick mynick",
"Example : /join private@conference.jabber.org mynick mypassword", "Example : /join private@conference.jabber.org nick mynick passwd mypassword",
"Example : /join jdev (as user@jabber.org will join jdev@conference.jabber.org)", "Example : /join jdev (as user@jabber.org will join jdev@conference.jabber.org)",
NULL } } }, NULL } } },

View File

@ -1610,20 +1610,45 @@ cmd_join(gchar **args, struct cmd_help_t help)
room = room_str->str; room = room_str->str;
} }
// nick supplied // Additional args supplied
if (num_args > 1) { 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]; nick = args[1];
// otherwise use account preference // otherwise use account preference
} else { } else {
nick = account->muc_nick; nick = account->muc_nick;
} }
// pass supplied
if (num_args == 3) {
passwd = args[2];
}
Jid *room_jid = jid_create_from_bare_and_resource(room, nick); Jid *room_jid = jid_create_from_bare_and_resource(room, nick);
if (!muc_room_is_active(room_jid)) { if (!muc_room_is_active(room_jid)) {