From: Vsevolod Stakhov Date: Tue, 23 Aug 2016 11:23:52 +0000 (+0100) Subject: [Feature] Add rspamd_memrchr utility function X-Git-Tag: 1.3.4~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f0d7449414c8271fa4c232949ce9b57f32818562;p=thirdparty%2Frspamd.git [Feature] Add rspamd_memrchr utility function --- diff --git a/src/libutil/str_util.c b/src/libutil/str_util.c index f8441dcf1b..4210adbe23 100644 --- a/src/libutil/str_util.c +++ b/src/libutil/str_util.c @@ -1881,3 +1881,18 @@ rspamd_urls_cmp (gconstpointer a, gconstpointer b) return r == 0; } + +const void * +rspamd_memrchr (const void *m, gint c, gsize len) +{ + const guint8 *p = m; + gsize i; + + for (i = len; i > 0; i --) { + if (p[i - 1] == c) { + return p + i - 1; + } + } + + return NULL; +} diff --git a/src/libutil/str_util.h b/src/libutil/str_util.h index 1ae09f5760..91c80ff5d6 100644 --- a/src/libutil/str_util.h +++ b/src/libutil/str_util.h @@ -310,4 +310,13 @@ gboolean rspamd_urls_cmp (gconstpointer a, gconstpointer b); extern const guchar lc_map[256]; +/** + * Search for the last occurrence of character `c` in memory block of size `len` + * @param m + * @param c + * @param len + * @return pointer to the last occurrence or NULL + */ +const void *rspamd_memrchr (const void *m, gint c, gsize len); + #endif /* SRC_LIBUTIL_STR_UTIL_H_ */