]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Feature] Add rspamd_memrchr utility function
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 23 Aug 2016 11:23:52 +0000 (12:23 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 23 Aug 2016 11:23:52 +0000 (12:23 +0100)
src/libutil/str_util.c
src/libutil/str_util.h

index f8441dcf1bc551e8584d51411e27dbf7796d67b7..4210adbe236f77209f7a7959d2e7228b0e312d5e 100644 (file)
@@ -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;
+}
index 1ae09f57604835d3c4aab28486b5401844c8ed36..91c80ff5d6faa8de0ae8f1b1478e9504657a8dfb 100644 (file)
@@ -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_ */