diff options
author | Sergey Poznyakoff <gray@gnu.org> | 2019-03-23 13:11:47 +0200 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org> | 2019-03-23 13:11:47 +0200 |
commit | 1a523cb6c788fc46b234019f4198b865c4b5f502 (patch) | |
tree | f9e0ee763a911564df16cb61d06a3145b79cf5d0 | |
parent | 15b4ea89880ea674717e9fa64e146dd744e8e35c (diff) | |
download | mailutils-1a523cb6c788fc46b234019f4198b865c4b5f502.tar.gz mailutils-1a523cb6c788fc46b234019f4198b865c4b5f502.tar.bz2 |
Two new string functions
mu_string_prefix(A, B) returns true if B is the prefix of A.
mu_string_suffix(A, B) returns true if B is the suffix of A.
* include/mailutils/cstr.h (mu_string_prefix)
(mu_string_suffix): protos.
* libmailutils/string/Makefile.am: Add new files.
* libmailutils/string/strpref.c: New file.
* libmailutils/string/strsuf.c: New file.
-rw-r--r-- | include/mailutils/cstr.h | 3 | ||||
-rw-r--r-- | libmailutils/string/Makefile.am | 2 | ||||
-rw-r--r-- | libmailutils/string/strpref.c | 12 | ||||
-rw-r--r-- | libmailutils/string/strsuf.c | 13 |
4 files changed, 30 insertions, 0 deletions
diff --git a/include/mailutils/cstr.h b/include/mailutils/cstr.h index a27942249..4ef55be89 100644 --- a/include/mailutils/cstr.h +++ b/include/mailutils/cstr.h | |||
@@ -31,6 +31,9 @@ int mu_c_strcasecmp (const char *a, const char *b); | |||
31 | int mu_c_strncasecmp (const char *a, const char *b, size_t n); | 31 | int mu_c_strncasecmp (const char *a, const char *b, size_t n); |
32 | char *mu_c_strcasestr (const char *haystack, const char *needle); | 32 | char *mu_c_strcasestr (const char *haystack, const char *needle); |
33 | 33 | ||
34 | int mu_string_prefix (char const *str, char const *pfx); | ||
35 | int mu_string_suffix (char const *str, char const *sfx); | ||
36 | |||
34 | size_t mu_rtrim_class (char *str, int __class); | 37 | size_t mu_rtrim_class (char *str, int __class); |
35 | size_t mu_rtrim_cset (char *str, const char *cset); | 38 | size_t mu_rtrim_cset (char *str, const char *cset); |
36 | size_t mu_ltrim_class (char *str, int __class); | 39 | size_t mu_ltrim_class (char *str, int __class); |
diff --git a/libmailutils/string/Makefile.am b/libmailutils/string/Makefile.am index 1eb58dea4..5cdd73913 100644 --- a/libmailutils/string/Makefile.am +++ b/libmailutils/string/Makefile.am | |||
@@ -32,7 +32,9 @@ libstring_la_SOURCES = \ | |||
32 | str_to_c.c\ | 32 | str_to_c.c\ |
33 | strcount.c\ | 33 | strcount.c\ |
34 | strltrim.c\ | 34 | strltrim.c\ |
35 | strpref.c\ | ||
35 | strskip.c\ | 36 | strskip.c\ |
37 | strsuf.c\ | ||
36 | stripws.c\ | 38 | stripws.c\ |
37 | strlst.c\ | 39 | strlst.c\ |
38 | strrtrim.c\ | 40 | strrtrim.c\ |
diff --git a/libmailutils/string/strpref.c b/libmailutils/string/strpref.c new file mode 100644 index 000000000..43392ffa1 --- /dev/null +++ b/libmailutils/string/strpref.c | |||
@@ -0,0 +1,12 @@ | |||
1 | #include <config.h> | ||
2 | #include <string.h> | ||
3 | #include <mailutils/cstr.h> | ||
4 | |||
5 | int | ||
6 | mu_string_prefix (char const *str, char const *pfx) | ||
7 | { | ||
8 | size_t len = strlen (pfx); | ||
9 | if (strlen (str) < len) | ||
10 | return 0; | ||
11 | return memcmp (str, pfx, len) == 0; | ||
12 | } | ||
diff --git a/libmailutils/string/strsuf.c b/libmailutils/string/strsuf.c new file mode 100644 index 000000000..273d2f641 --- /dev/null +++ b/libmailutils/string/strsuf.c | |||
@@ -0,0 +1,13 @@ | |||
1 | #include <config.h> | ||
2 | #include <string.h> | ||
3 | #include <mailutils/cstr.h> | ||
4 | |||
5 | int | ||
6 | mu_string_suffix (char const *str, char const *sfx) | ||
7 | { | ||
8 | size_t sfxlen = strlen (sfx); | ||
9 | size_t len = strlen (str); | ||
10 | if (len < sfxlen) | ||
11 | return 0; | ||
12 | return memcmp (str + len - sfxlen, sfx, sfxlen) == 0; | ||
13 | } | ||