From 3d7aef55713b576997aec976326c1143d14fe3f8 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Thu, 7 Feb 2019 12:34:22 +0000 Subject: [PATCH] [Minor] Add starts_with function for rspamd_ftok_t --- src/libutil/fstring.c | 13 +++++++++++++ src/libutil/fstring.h | 9 +++++++++ 2 files changed, 22 insertions(+) diff --git a/src/libutil/fstring.c b/src/libutil/fstring.c index 2cfbd7bf82..967de9e98d 100644 --- a/src/libutil/fstring.c +++ b/src/libutil/fstring.c @@ -375,6 +375,19 @@ rspamd_ftok_cmp (const rspamd_ftok_t *s1, return s1->len - s2->len; } +gboolean +rspamd_ftok_starts_with (const rspamd_ftok_t *s1, + const rspamd_ftok_t *s2) +{ + g_assert (s1 != NULL && s2 != NULL); + + if (s1->len >= s2->len) { + return !!(memcmp (s1->begin, s2->begin, s1->len) == 0); + } + + return FALSE; +} + void rspamd_fstring_mapped_ftok_free (gpointer p) { diff --git a/src/libutil/fstring.h b/src/libutil/fstring.h index 96749052ce..1a4d25eb96 100644 --- a/src/libutil/fstring.h +++ b/src/libutil/fstring.h @@ -139,6 +139,15 @@ gint rspamd_ftok_casecmp (const rspamd_ftok_t *s1, gint rspamd_ftok_cmp (const rspamd_ftok_t *s1, const rspamd_ftok_t *s2); +/** + * Returns true if `s1` starts with `s2` + * @param s1 + * @param s2 + * @return + */ +gboolean rspamd_ftok_starts_with (const rspamd_ftok_t *s1, + const rspamd_ftok_t *s2); + /** * Return TRUE if ftok is equal to specified C string */ -- 2.47.3