mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-05 04:11:08 +00:00
Allow the Hangup manager action to match channels by regex
* Hangup now can take a regular expression as the Channel option. If you want to hangup multiple channels, use /regex/ as the Channel option. Existing behavior to hanging up a single channel is unchanged, but if you pass a regex, the manager will send you a list of channels back that were hung up. (closes issue ASTERISK-19575) Reported by: Mark Murawski Tested by: Mark Murawski git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@361038 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
20
main/utils.c
20
main/utils.c
@@ -1350,6 +1350,26 @@ int ast_build_string(char **buffer, size_t *space, const char *fmt, ...)
|
||||
return result;
|
||||
}
|
||||
|
||||
int ast_regex_string_to_regex_pattern(const char *regex_string, struct ast_str *regex_pattern)
|
||||
{
|
||||
int regex_len = strlen(regex_string);
|
||||
int ret = 3;
|
||||
|
||||
/* Chop off the leading / if there is one */
|
||||
if ((regex_len >= 1) && (regex_string[0] == '/')) {
|
||||
ast_str_set(®ex_pattern, 0, "%s", regex_string + 1);
|
||||
ret -= 2;
|
||||
}
|
||||
|
||||
/* Chop off the ending / if there is one */
|
||||
if ((regex_len > 1) && (regex_string[regex_len - 1] == '/')) {
|
||||
ast_str_truncate(regex_pattern, -1);
|
||||
ret -= 1;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ast_true(const char *s)
|
||||
{
|
||||
if (ast_strlen_zero(s))
|
||||
|
Reference in New Issue
Block a user