mirror of
https://github.com/radio95-rnt/rds95.git
synced 2026-02-27 04:43:52 +01:00
arg doesnt work
This commit is contained in:
@@ -550,8 +550,9 @@ static bool process_command_table(const command_handler_t *table, int table_size
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool process_pattern_commands(char *cmd, char *arg, char *pattern, char *output, RDSModulator* mod) {
|
static bool process_pattern_commands(char *cmd, char *arg, char *output, RDSModulator* mod) {
|
||||||
size_t cmd_len = strlen(cmd);
|
size_t cmd_len = strlen(cmd);
|
||||||
|
char pattern_buffer[16] = {0};
|
||||||
|
|
||||||
for (size_t i = 0; i < sizeof(pattern_commands) / sizeof(pattern_command_handler_t); i++) {
|
for (size_t i = 0; i < sizeof(pattern_commands) / sizeof(pattern_command_handler_t); i++) {
|
||||||
const pattern_command_handler_t *handler = &pattern_commands[i];
|
const pattern_command_handler_t *handler = &pattern_commands[i];
|
||||||
@@ -562,11 +563,14 @@ static bool process_pattern_commands(char *cmd, char *arg, char *pattern, char *
|
|||||||
strncmp(cmd, handler->prefix, prefix_len) == 0 &&
|
strncmp(cmd, handler->prefix, prefix_len) == 0 &&
|
||||||
strcmp(cmd + cmd_len - suffix_len, handler->suffix) == 0) {
|
strcmp(cmd + cmd_len - suffix_len, handler->suffix) == 0) {
|
||||||
|
|
||||||
pattern = cmd + prefix_len;
|
size_t pattern_len = cmd_len - prefix_len - suffix_len;
|
||||||
pattern[cmd_len - suffix_len] = 0;
|
if (pattern_len < sizeof(pattern_buffer)) {
|
||||||
|
strncpy(pattern_buffer, cmd + prefix_len, pattern_len);
|
||||||
handler->handler(arg, pattern, mod, output);
|
pattern_buffer[pattern_len] = 0;
|
||||||
return true;
|
|
||||||
|
handler->handler(arg, pattern_buffer, mod, output);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -574,7 +578,7 @@ static bool process_pattern_commands(char *cmd, char *arg, char *pattern, char *
|
|||||||
}
|
}
|
||||||
|
|
||||||
void process_ascii_cmd(RDSModulator* mod, char *str) {
|
void process_ascii_cmd(RDSModulator* mod, char *str) {
|
||||||
char *cmd, *arg, *pattern = NULL;
|
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];
|
char upper_str[CTL_BUFFER_SIZE];
|
||||||
@@ -709,6 +713,6 @@ void process_ascii_cmd(RDSModulator* mod, char *str) {
|
|||||||
cmd[equals_pos - upper_str] = 0;
|
cmd[equals_pos - upper_str] = 0;
|
||||||
arg = equals_pos + 1;
|
arg = equals_pos + 1;
|
||||||
|
|
||||||
process_pattern_commands(cmd, arg, pattern, output, mod);
|
process_pattern_commands(cmd, arg, output, mod);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user