diff --git a/src/switch_utils.c b/src/switch_utils.c index e6e4917b1e..4e75ef2c78 100644 --- a/src/switch_utils.c +++ b/src/switch_utils.c @@ -2841,21 +2841,19 @@ SWITCH_DECLARE(unsigned int) switch_separate_string(char *buf, char delim, char SWITCH_DECLARE(const char *) switch_cut_path(const char *in) { - const char *p, *ret = in; - const char delims[] = "/\\"; - const char *i; + const char *p = in, *ret = in; - if (in) { - for (i = delims; *i; i++) { - p = in; - while ((p = strchr(p, *i)) != 0) { - ret = ++p; - } - } - return ret; - } else { + if (NULL == in) { return NULL; } + while ((p = strchr(ret, '/')) != NULL) { + ret = ++p; + } + while ((p = strchr(ret, '\\')) != NULL) { + ret = ++p; + } + + return ret; } SWITCH_DECLARE(switch_status_t) switch_string_match(const char *string, size_t string_len, const char *search, size_t search_len) diff --git a/tests/unit/switch_utils.c b/tests/unit/switch_utils.c index 72c5817b71..392939ff57 100644 --- a/tests/unit/switch_utils.c +++ b/tests/unit/switch_utils.c @@ -60,6 +60,12 @@ FST_TEST_BEGIN(benchmark) switch_url_encode(s, encoded, sizeof(encoded)); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "encoded: [%s]\n", encoded); fst_check_string_equals(encoded, "%26bry%C3%A4n%23!%E6%9D%9C%E9%87%91%E6%88%BF"); + + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "check the switch_cut_path\n"); + fst_check_string_equals(switch_cut_path("switch-cut-path"), "switch-cut-path"); + fst_check_string_equals(switch_cut_path("switch/cut-path"), "cut-path"); + fst_check_string_equals(switch_cut_path("switch/cut\\path"), "path"); + fst_check_string_equals(switch_cut_path("switch\\cut/path"), "path"); } FST_TEST_END()