mirror of
https://github.com/DreamMaoMao/maomaowm.git
synced 2026-04-11 08:21:26 -04:00
Merge pull request #839 from ernestoCruz05/refactor-mmsg
refactor(mmsg): simplify dispatch arguments parsing
This commit is contained in:
commit
7cfeeb3687
1 changed files with 36 additions and 107 deletions
143
mmsg/mmsg.c
143
mmsg/mmsg.c
|
|
@ -603,120 +603,49 @@ int32_t main(int32_t argc, char *argv[]) {
|
||||||
mode = SET;
|
mode = SET;
|
||||||
char *arg = EARGF(usage());
|
char *arg = EARGF(usage());
|
||||||
|
|
||||||
// Trim leading and trailing whitespace from entire argument first
|
dispatch_cmd = dispatch_arg1 = dispatch_arg2 = dispatch_arg3 =
|
||||||
while (isspace(*arg))
|
dispatch_arg4 = dispatch_arg5 = "";
|
||||||
arg++;
|
|
||||||
char *end = arg + strlen(arg) - 1;
|
|
||||||
while (end > arg && isspace(*end))
|
|
||||||
end--;
|
|
||||||
*(end + 1) = '\0';
|
|
||||||
|
|
||||||
dispatch_cmd = arg;
|
char *tokens[6] = {0};
|
||||||
char *comma1 = strchr(arg, ',');
|
int count = 0;
|
||||||
if (comma1) {
|
|
||||||
*comma1 = '\0';
|
|
||||||
|
|
||||||
// Trim trailing whitespace from command
|
while (arg && count < 6) {
|
||||||
end = dispatch_cmd + strlen(dispatch_cmd) - 1;
|
char *comma = (count < 5) ? strchr(arg, ',') : NULL;
|
||||||
while (end > dispatch_cmd && isspace(*end))
|
if (comma) {
|
||||||
end--;
|
*comma = '\0';
|
||||||
*(end + 1) = '\0';
|
tokens[count++] = arg;
|
||||||
|
arg = comma + 1;
|
||||||
|
} else {
|
||||||
|
tokens[count++] = arg;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
dispatch_arg1 = comma1 + 1;
|
for (int i = 0; i < count; i++) {
|
||||||
// Trim leading whitespace from arg1
|
char *str = tokens[i];
|
||||||
while (isspace(*dispatch_arg1))
|
while (isspace((unsigned char)*str))
|
||||||
dispatch_arg1++;
|
str++;
|
||||||
|
if (*str) {
|
||||||
// Trim trailing whitespace from arg1 before looking for next
|
char *end = str + strlen(str) - 1;
|
||||||
// comma
|
while (end > str && isspace((unsigned char)*end))
|
||||||
end = dispatch_arg1 + strlen(dispatch_arg1) - 1;
|
|
||||||
while (end > dispatch_arg1 && isspace(*end))
|
|
||||||
end--;
|
|
||||||
*(end + 1) = '\0';
|
|
||||||
|
|
||||||
char *comma2 = strchr(dispatch_arg1, ',');
|
|
||||||
if (comma2) {
|
|
||||||
*comma2 = '\0';
|
|
||||||
dispatch_arg2 = comma2 + 1;
|
|
||||||
// Trim leading whitespace from arg2
|
|
||||||
while (isspace(*dispatch_arg2))
|
|
||||||
dispatch_arg2++;
|
|
||||||
|
|
||||||
// Trim trailing whitespace from arg2 before looking for
|
|
||||||
// next comma
|
|
||||||
end = dispatch_arg2 + strlen(dispatch_arg2) - 1;
|
|
||||||
while (end > dispatch_arg2 && isspace(*end))
|
|
||||||
end--;
|
end--;
|
||||||
*(end + 1) = '\0';
|
*(end + 1) = '\0';
|
||||||
|
|
||||||
char *comma3 = strchr(dispatch_arg2, ',');
|
|
||||||
if (comma3) {
|
|
||||||
*comma3 = '\0';
|
|
||||||
dispatch_arg3 = comma3 + 1;
|
|
||||||
// Trim leading whitespace from arg3
|
|
||||||
while (isspace(*dispatch_arg3))
|
|
||||||
dispatch_arg3++;
|
|
||||||
|
|
||||||
// Trim trailing whitespace from arg3 before looking for
|
|
||||||
// next comma
|
|
||||||
end = dispatch_arg3 + strlen(dispatch_arg3) - 1;
|
|
||||||
while (end > dispatch_arg3 && isspace(*end))
|
|
||||||
end--;
|
|
||||||
*(end + 1) = '\0';
|
|
||||||
|
|
||||||
char *comma4 = strchr(dispatch_arg3, ',');
|
|
||||||
if (comma4) {
|
|
||||||
*comma4 = '\0';
|
|
||||||
dispatch_arg4 = comma4 + 1;
|
|
||||||
// Trim leading whitespace from arg4
|
|
||||||
while (isspace(*dispatch_arg4))
|
|
||||||
dispatch_arg4++;
|
|
||||||
|
|
||||||
// Trim trailing whitespace from arg4 before looking
|
|
||||||
// for next comma
|
|
||||||
end = dispatch_arg4 + strlen(dispatch_arg4) - 1;
|
|
||||||
while (end > dispatch_arg4 && isspace(*end))
|
|
||||||
end--;
|
|
||||||
*(end + 1) = '\0';
|
|
||||||
|
|
||||||
char *comma5 = strchr(dispatch_arg4, ',');
|
|
||||||
if (comma5) {
|
|
||||||
*comma5 = '\0';
|
|
||||||
dispatch_arg5 = comma5 + 1;
|
|
||||||
// Trim leading whitespace from arg5
|
|
||||||
while (isspace(*dispatch_arg5))
|
|
||||||
dispatch_arg5++;
|
|
||||||
|
|
||||||
// Trim trailing whitespace from arg5
|
|
||||||
end = dispatch_arg5 + strlen(dispatch_arg5) - 1;
|
|
||||||
while (end > dispatch_arg5 && isspace(*end))
|
|
||||||
end--;
|
|
||||||
*(end + 1) = '\0';
|
|
||||||
} else {
|
|
||||||
dispatch_arg5 = "";
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
dispatch_arg4 = "";
|
|
||||||
dispatch_arg5 = "";
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
dispatch_arg3 = "";
|
|
||||||
dispatch_arg4 = "";
|
|
||||||
dispatch_arg5 = "";
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
dispatch_arg2 = "";
|
|
||||||
dispatch_arg3 = "";
|
|
||||||
dispatch_arg4 = "";
|
|
||||||
dispatch_arg5 = "";
|
|
||||||
}
|
}
|
||||||
} else {
|
tokens[i] = str;
|
||||||
dispatch_arg1 = "";
|
|
||||||
dispatch_arg2 = "";
|
|
||||||
dispatch_arg3 = "";
|
|
||||||
dispatch_arg4 = "";
|
|
||||||
dispatch_arg5 = "";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (count > 0)
|
||||||
|
dispatch_cmd = tokens[0];
|
||||||
|
if (count > 1)
|
||||||
|
dispatch_arg1 = tokens[1];
|
||||||
|
if (count > 2)
|
||||||
|
dispatch_arg2 = tokens[2];
|
||||||
|
if (count > 3)
|
||||||
|
dispatch_arg3 = tokens[3];
|
||||||
|
if (count > 4)
|
||||||
|
dispatch_arg4 = tokens[4];
|
||||||
|
if (count > 5)
|
||||||
|
dispatch_arg5 = tokens[5];
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'O':
|
case 'O':
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue