AllCommands: simplify the tokenizer loop

This commit is contained in:
Max Kellermann 2014-12-08 13:25:41 +01:00
parent 3a28f456b1
commit 5837a63942

View File

@ -384,25 +384,27 @@ command_process(Client &client, unsigned num, char *line)
/* now parse the arguments (quoted or unquoted) */ /* now parse the arguments (quoted or unquoted) */
while (argc < COMMAND_ARGV_MAX && while (true) {
(argv[argc] = if (argc == COMMAND_ARGV_MAX) {
tokenizer.NextParam(error)) != nullptr) command_error(client, ACK_ERROR_ARG,
++argc; "Too many arguments");
/* some error checks */
if (argc >= COMMAND_ARGV_MAX) {
command_error(client, ACK_ERROR_ARG, "Too many arguments");
current_command = nullptr; current_command = nullptr;
return CommandResult::ERROR; return CommandResult::ERROR;
} }
if (!tokenizer.IsEnd()) { char *a = tokenizer.NextParam(error);
if (a == nullptr) {
if (tokenizer.IsEnd())
break;
command_error(client, ACK_ERROR_ARG, "%s", error.GetMessage()); command_error(client, ACK_ERROR_ARG, "%s", error.GetMessage());
current_command = nullptr; current_command = nullptr;
return CommandResult::ERROR; return CommandResult::ERROR;
} }
argv[argc++] = a;
}
/* look up and invoke the command handler */ /* look up and invoke the command handler */
const struct command *cmd = const struct command *cmd =