Mercurial > ~mikael > mcabber > hg
comparison mcabber/mcabber/commands.c @ 2016:e9b6e168a45e
Improve checks for /group command parameters
For example, "/group foo" should return an error message.
author | Mikael Berthe <mikael@lilotux.net> |
---|---|
date | Wed, 18 Jul 2012 00:24:13 +0200 |
parents | 8dc418af3e72 |
children | 46a21258ad91 |
comparison
equal
deleted
inserted
replaced
2015:db8ec238cd2c | 2016:e9b6e168a45e |
---|---|
1221 paramlst = split_arg(arg, 2, 0); // subcmd, [arg] | 1221 paramlst = split_arg(arg, 2, 0); // subcmd, [arg] |
1222 subcmd = *paramlst; | 1222 subcmd = *paramlst; |
1223 arg = *(paramlst+1); | 1223 arg = *(paramlst+1); |
1224 | 1224 |
1225 if (!subcmd || !*subcmd) | 1225 if (!subcmd || !*subcmd) |
1226 goto do_group_return; // Should not happen anyway | 1226 goto do_group_return; // Should not happen |
1227 | |
1228 if (!strcasecmp(subcmd, "expand") || !strcasecmp(subcmd, "unfold")) | |
1229 group_state = group_unfold; | |
1230 else if (!strcasecmp(subcmd, "shrink") || !strcasecmp(subcmd, "fold")) | |
1231 group_state = group_fold; | |
1232 else if (!strcasecmp(subcmd, "toggle")) | |
1233 group_state = group_toggle; | |
1234 else { | |
1235 scr_LogPrint(LPRINT_NORMAL, "Unrecognized parameter!"); | |
1236 goto do_group_return; | |
1237 } | |
1227 | 1238 |
1228 if (arg && *arg) { | 1239 if (arg && *arg) { |
1229 GSList *roster_elt; | 1240 GSList *roster_elt; |
1230 char *group_utf8 = to_utf8(arg); | 1241 char *group_utf8 = to_utf8(arg); |
1231 roster_elt = roster_find(group_utf8, namesearch, ROSTER_TYPE_GROUP); | 1242 roster_elt = roster_find(group_utf8, namesearch, ROSTER_TYPE_GROUP); |
1233 if (roster_elt) | 1244 if (roster_elt) |
1234 group = buddy_getgroup(roster_elt->data); | 1245 group = buddy_getgroup(roster_elt->data); |
1235 } else { | 1246 } else { |
1236 group = buddy_getgroup(BUDDATA(current_buddy)); | 1247 group = buddy_getgroup(BUDDATA(current_buddy)); |
1237 } | 1248 } |
1238 if (!group) | 1249 if (!group) { |
1250 scr_LogPrint(LPRINT_NORMAL, "Group not found."); | |
1239 goto do_group_return; | 1251 goto do_group_return; |
1252 } | |
1240 | 1253 |
1241 // We'll have to redraw the chat window if we're not currently on the group | 1254 // We'll have to redraw the chat window if we're not currently on the group |
1242 // entry itself, because it means we'll have to leave the current buddy | 1255 // entry itself, because it means we'll have to leave the current buddy |
1243 // chat window. | 1256 // chat window. |
1244 leave_buddywindow = (group != BUDDATA(current_buddy) && | 1257 leave_buddywindow = (group != BUDDATA(current_buddy) && |
1245 group == buddy_getgroup(BUDDATA(current_buddy))); | 1258 group == buddy_getgroup(BUDDATA(current_buddy))); |
1246 | 1259 |
1247 | |
1248 if (!(buddy_gettype(group) & ROSTER_TYPE_GROUP)) { | 1260 if (!(buddy_gettype(group) & ROSTER_TYPE_GROUP)) { |
1249 scr_LogPrint(LPRINT_NORMAL, "You need to select a group."); | 1261 scr_LogPrint(LPRINT_NORMAL, "You need to select a group."); |
1250 goto do_group_return; | |
1251 } | |
1252 | |
1253 if (!strcasecmp(subcmd, "expand") || !strcasecmp(subcmd, "unfold")) | |
1254 group_state = group_unfold; | |
1255 else if (!strcasecmp(subcmd, "shrink") || !strcasecmp(subcmd, "fold")) | |
1256 group_state = group_fold; | |
1257 else if (!strcasecmp(subcmd, "toggle")) | |
1258 group_state = group_toggle; | |
1259 else { | |
1260 scr_LogPrint(LPRINT_NORMAL, "Unrecognized parameter!"); | |
1261 goto do_group_return; | 1262 goto do_group_return; |
1262 } | 1263 } |
1263 | 1264 |
1264 if (group_state != group_unfold && leave_buddywindow) | 1265 if (group_state != group_unfold && leave_buddywindow) |
1265 scr_roster_prev_group(); | 1266 scr_roster_prev_group(); |