0
1
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:
2025-03-22 10:47:51 +01:00
parent 95f6fc3f2c
commit 47e245976a

View File

@@ -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);
} }
} }