rimmed pushed a commit to branch master. http://git.enlightenment.org/tools/eflete.git/commit/?id=8266f841d3acbc885d4ba111f8bbc2f89f9c2cd4
commit 8266f841d3acbc885d4ba111f8bbc2f89f9c2cd4 Author: Vyacheslav Reutskiy <[email protected]> Date: Tue Jul 26 11:06:41 2016 +0300 string_common: return analogous func to strrstr Change-Id: Ib68aba489db26694d2689569afd274f78852d51b --- src/bin/common/string_common.c | 26 ++++++++++++++++++++++++++ src/bin/common/string_common.h | 3 +++ 2 files changed, 29 insertions(+) diff --git a/src/bin/common/string_common.c b/src/bin/common/string_common.c index 8c6313f..6fe9e2a 100644 --- a/src/bin/common/string_common.c +++ b/src/bin/common/string_common.c @@ -71,3 +71,29 @@ string_cat(const char *str1, const char *str2) return string; } + +const char * +string_rstr(const char *str1, const char *str2) +{ + unsigned int str2len = 0; + unsigned int i = 0, j = 0; + + str2len = strlen(str2) - 1; + + for (i = strlen(str1) - 1; i != 0; i--) + { + if (str1[i] == str2[str2len]) + { + if (str2len == 0) + return &str1[i]; + for (j = 1; (j < strlen(str2)) & (i > j); j++) + { + if (str1[i - j] != str2[str2len - j]) + break; + if (j + 1 == strlen(str2)) + return &str1[i - j]; + } + } + } + return NULL; +} diff --git a/src/bin/common/string_common.h b/src/bin/common/string_common.h index bbe2ba0..a358c8f 100644 --- a/src/bin/common/string_common.h +++ b/src/bin/common/string_common.h @@ -62,4 +62,7 @@ string_char_replace(char *str, char src, char rep); char * string_cat(const char *str1, const char *str2); +const char * +string_rstr(const char *str1, const char *str2); + #endif /* STRING_MACRO_H */ --
