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();