get rid of nested function

This commit is contained in:
marschap
2006-12-09 20:52:44 +00:00
parent 3e4a8dcbd9
commit 5a7e3d7395
+36 -16
View File
@@ -62,18 +62,6 @@ static int parse_message (const char *str, Client *c)
int argpos = 0;
CommandFunc function = NULL;
void close_arg() {
if (argc >= MAX_ARGUMENTS-1) {
error = 1;
}
else {
argv[argc][argpos] = '\0';
argv[argc+1] = argv[argc] + argpos + 1;
argc++;
argpos = 0;
}
}
debug( RPT_DEBUG, "%s( str=\"%.120s\", client=[%d] )", __FUNCTION__, str, c->sock );
/* We will create a list of strings that is shorter or equally long as
@@ -105,7 +93,15 @@ static int parse_message (const char *str, Client *c)
if (is_final(ch)) {
if (quote)
error = 2;
close_arg();
if (argc >= MAX_ARGUMENTS-1) {
error = 1;
}
else {
argv[argc][argpos] = '\0';
argv[argc+1] = argv[argc] + argpos + 1;
argc++;
argpos = 0;
}
state = ST_FINAL;
}
else if (ch == '\\') {
@@ -131,7 +127,15 @@ static int parse_message (const char *str, Client *c)
else {
error = 2;
/* alternative: argv[argc][argpos++] = ch; */
close_arg();
if (argc >= MAX_ARGUMENTS-1) {
error = 1;
}
else {
argv[argc][argpos] = '\0';
argv[argc+1] = argv[argc] + argpos + 1;
argc++;
argpos = 0;
}
state = ST_FINAL;
}
}
@@ -140,11 +144,27 @@ static int parse_message (const char *str, Client *c)
}
else if (is_closing_quote(ch, quote)) {
quote = '\0';
close_arg();
if (argc >= MAX_ARGUMENTS-1) {
error = 1;
}
else {
argv[argc][argpos] = '\0';
argv[argc+1] = argv[argc] + argpos + 1;
argc++;
argpos = 0;
}
state = ST_WHITESPACE;
}
else if (is_whitespace(ch) && (quote == '\0')) {
close_arg();
if (argc >= MAX_ARGUMENTS-1) {
error = 1;
}
else {
argv[argc][argpos] = '\0';
argv[argc+1] = argv[argc] + argpos + 1;
argc++;
argpos = 0;
}
state = ST_WHITESPACE;
}
else {