mirror of
https://github.com/radio95-rnt/rds95.git
synced 2026-02-27 04:43:52 +01:00
make the ascii cmd case insensitive (finally)
This commit is contained in:
@@ -498,6 +498,7 @@ void process_ascii_cmd(RDSModulator* mod, char *str) {
|
|||||||
char *cmd, *arg;
|
char *cmd, *arg;
|
||||||
char output[255];
|
char output[255];
|
||||||
memset(output, 0, sizeof(output));
|
memset(output, 0, sizeof(output));
|
||||||
|
char upper_str[CTL_BUFFER_SIZE];
|
||||||
|
|
||||||
uint16_t cmd_len = _strnlen((const char*)str, CTL_BUFFER_SIZE);
|
uint16_t cmd_len = _strnlen((const char*)str, CTL_BUFFER_SIZE);
|
||||||
|
|
||||||
@@ -505,26 +506,34 @@ void process_ascii_cmd(RDSModulator* mod, char *str) {
|
|||||||
if(str[i] == '\t') str[i] = ' ';
|
if(str[i] == '\t') str[i] = ' ';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
strncpy(upper_str, str, CTL_BUFFER_SIZE);
|
||||||
|
upper_str[CTL_BUFFER_SIZE-1] = '\0';
|
||||||
|
|
||||||
|
for(uint16_t i = 0; i < cmd_len && upper_str[i] != '='; i++) {
|
||||||
|
if(upper_str[i] >= 'a' && upper_str[i] <= 'z') {
|
||||||
|
upper_str[i] = upper_str[i] - 'a' + 'A';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for (size_t i = 0; i < sizeof(commands_exact) / sizeof(command_handler_t); i++) {
|
for (size_t i = 0; i < sizeof(commands_exact) / sizeof(command_handler_t); i++) {
|
||||||
const command_handler_t *handler = &commands_exact[i];
|
const command_handler_t *handler = &commands_exact[i];
|
||||||
if (cmd_len == handler->cmd_length &&
|
if (cmd_len == handler->cmd_length && strcmp(upper_str, (char *)handler->cmd) == 0) {
|
||||||
strcmp(str, (char *)handler->cmd) == 0) {
|
|
||||||
handler->handler(NULL, mod, output);
|
handler->handler(NULL, mod, output);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (str[0] == '*' && !strchr((const char*)str, '=')) {
|
if (upper_str[0] == '*' && !strchr((const char*)upper_str, '=')) {
|
||||||
str++;
|
upper_str++;
|
||||||
char option[32] = {0};
|
char option[32] = {0};
|
||||||
snprintf(option, sizeof(option), "%s", (const char*)str);
|
snprintf(option, sizeof(option), "%s", (const char*)upper_str);
|
||||||
saveToFile(mod->enc, option);
|
saveToFile(mod->enc, option);
|
||||||
Modulator_saveToFile(&mod->params, option);
|
Modulator_saveToFile(&mod->params, option);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cmd_len > 1 && str[1] == '=') {
|
if (cmd_len > 1 && str[1] == '=') {
|
||||||
cmd = str;
|
cmd = upper_str;
|
||||||
cmd[1] = 0;
|
cmd[1] = 0;
|
||||||
arg = str + 2;
|
arg = str + 2;
|
||||||
|
|
||||||
@@ -535,7 +544,7 @@ void process_ascii_cmd(RDSModulator* mod, char *str) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (cmd_len > 2 && str[2] == '=') {
|
if (cmd_len > 2 && str[2] == '=') {
|
||||||
cmd = str;
|
cmd = upper_str;
|
||||||
cmd[2] = 0;
|
cmd[2] = 0;
|
||||||
arg = str + 3;
|
arg = str + 3;
|
||||||
|
|
||||||
@@ -546,7 +555,7 @@ void process_ascii_cmd(RDSModulator* mod, char *str) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (cmd_len > 3 && str[3] == '=') {
|
if (cmd_len > 3 && str[3] == '=') {
|
||||||
cmd = str;
|
cmd = upper_str;
|
||||||
cmd[3] = 0;
|
cmd[3] = 0;
|
||||||
arg = str + 4;
|
arg = str + 4;
|
||||||
|
|
||||||
@@ -557,7 +566,7 @@ void process_ascii_cmd(RDSModulator* mod, char *str) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (cmd_len > 4 && str[4] == '=') {
|
if (cmd_len > 4 && str[4] == '=') {
|
||||||
cmd = str;
|
cmd = upper_str;
|
||||||
cmd[4] = 0;
|
cmd[4] = 0;
|
||||||
arg = str + 5;
|
arg = str + 5;
|
||||||
|
|
||||||
@@ -568,7 +577,7 @@ void process_ascii_cmd(RDSModulator* mod, char *str) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (cmd_len > 5 && str[5] == '=') {
|
if (cmd_len > 5 && str[5] == '=') {
|
||||||
cmd = str;
|
cmd = upper_str;
|
||||||
cmd[5] = 0;
|
cmd[5] = 0;
|
||||||
arg = str + 6;
|
arg = str + 6;
|
||||||
|
|
||||||
@@ -579,7 +588,7 @@ void process_ascii_cmd(RDSModulator* mod, char *str) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (cmd_len > 6 && str[6] == '=') {
|
if (cmd_len > 6 && str[6] == '=') {
|
||||||
cmd = str;
|
cmd = upper_str;
|
||||||
cmd[6] = 0;
|
cmd[6] = 0;
|
||||||
arg = str + 7;
|
arg = str + 7;
|
||||||
|
|
||||||
@@ -590,7 +599,7 @@ void process_ascii_cmd(RDSModulator* mod, char *str) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (cmd_len > 7 && str[7] == '=') {
|
if (cmd_len > 7 && str[7] == '=') {
|
||||||
cmd = str;
|
cmd = upper_str;
|
||||||
cmd[7] = 0;
|
cmd[7] = 0;
|
||||||
arg = str + 8;
|
arg = str + 8;
|
||||||
|
|
||||||
@@ -601,7 +610,7 @@ void process_ascii_cmd(RDSModulator* mod, char *str) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (cmd_len > 9 && str[9] == '=') {
|
if (cmd_len > 9 && str[9] == '=') {
|
||||||
cmd = str;
|
cmd = upper_str;
|
||||||
cmd[9] = 0;
|
cmd[9] = 0;
|
||||||
arg = str + 10;
|
arg = str + 10;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user