From 0c0b039c5c75c8a7337e9c6a5922d06f23801de7 Mon Sep 17 00:00:00 2001 From: Kostyantyn Vorobyov <kostyantyn.vorobyov@cea.fr> Date: Thu, 28 Sep 2017 10:33:29 +0200 Subject: [PATCH] New functionality in the string module of RTL --- .../e-acsl/share/e-acsl/e_acsl_string.h | 29 ++++++++++++++----- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/src/plugins/e-acsl/share/e-acsl/e_acsl_string.h b/src/plugins/e-acsl/share/e-acsl/e_acsl_string.h index de31ec5b93c..13fb29acc28 100644 --- a/src/plugins/e-acsl/share/e-acsl/e_acsl_string.h +++ b/src/plugins/e-acsl/share/e-acsl/e_acsl_string.h @@ -40,13 +40,18 @@ #define E_ACSL_STD_STRING_H #ifndef E_ACSL_NO_COMPILER_BUILTINS -# define memset __builtin_memset -# define memcmp __builtin_memcmp -# define memcpy __builtin_memcpy -# define memmove __builtin_memmove -# define strlen __builtin_strlen -# define strcmp __builtin_strcmp -# define strncmp __builtin_strncmp +# define memset __builtin_memset +# define memcmp __builtin_memcmp +# define memcpy __builtin_memcpy +# define memmove __builtin_memmove +# define strncat __builtin_strncat +# define strcat __builtin_strcat +# define strlen __builtin_strlen +# define strcmp __builtin_strcmp +# define strncmp __builtin_strncmp +# define strcpy __builtin_strcpy +# define strncpy __builtin_strncpy +# define strchr __builtin_strchr #else # include <string.h> #endif @@ -128,4 +133,14 @@ static int zeroed_out(const void *p, size_t size) { } return !memcmp(pc, &zeroblock, rem); } + +/** \brief Count the number of occurrences of char `c` in a string `s` */ +static int charcount(const char *s, char c) { + int count = 0; + while ((s = strchr(s,c)) != NULL) { + count++; + s++; + } + return count; +} #endif -- GitLab