[RFC/PATCH v3 6/8] libbb: add is_suffixed_with() function

Denys Vlasenko vda.linux at googlemail.com
Tue Aug 25 14:38:07 UTC 2015


Applied. However, it has no users...

On Tue, Aug 25, 2015 at 1:10 PM, Bartosz Golaszewski
<bartekgola at gmail.com> wrote:
> This function checks if given key can be found at the end of the string.
>
> Signed-off-by: Bartosz Golaszewski <bartekgola at gmail.com>
> ---
>  include/libbb.h              |  1 +
>  libbb/compare_string_array.c | 32 ++++++++++++++++++++++++++++++++
>  2 files changed, 33 insertions(+)
>
> diff --git a/include/libbb.h b/include/libbb.h
> index abbd2c7..336fe65 100644
> --- a/include/libbb.h
> +++ b/include/libbb.h
> @@ -422,6 +422,7 @@ const char *bb_basename(const char *name) FAST_FUNC;
>  char *last_char_is(const char *s, int c) FAST_FUNC;
>  const char* endofname(const char *name) FAST_FUNC;
>  char *is_prefixed_with(const char *string, const char *key) FAST_FUNC;
> +char *is_suffixed_with(const char *string, const char *key) FAST_FUNC;
>
>  int ndelay_on(int fd) FAST_FUNC;
>  int ndelay_off(int fd) FAST_FUNC;
> diff --git a/libbb/compare_string_array.c b/libbb/compare_string_array.c
> index 901e61a..55a735e 100644
> --- a/libbb/compare_string_array.c
> +++ b/libbb/compare_string_array.c
> @@ -21,6 +21,24 @@ char* FAST_FUNC is_prefixed_with(const char *string, const char *key)
>         return (char*)string;
>  }
>
> +/*
> + * Return NULL if string is not suffixed with key. Return pointer to the
> + * beginning of prefix key in string. If key is an empty string return pointer
> + * to the end of string.
> + */
> +char* FAST_FUNC is_suffixed_with(const char *string, const char *key)
> +{
> +       size_t str_len = strlen(string), key_len = strlen(key);
> +
> +       if (str_len >= key_len) {
> +               if (strcmp(string + str_len - key_len, key) == 0) {
> +                       return (char*)key;
> +               }
> +       }
> +
> +       return NULL;
> +}
> +
>  /* returns the array index of the string */
>  /* (index of first match is returned, or -1) */
>  int FAST_FUNC index_in_str_array(const char *const string_array[], const char *key)
> @@ -126,4 +144,18 @@ BBUNIT_DEFINE_TEST(is_prefixed_with)
>         BBUNIT_ENDTEST;
>  }
>
> +BBUNIT_DEFINE_TEST(is_suffixed_with)
> +{
> +       BBUNIT_ASSERT_STREQ("bar", is_suffixed_with("foo bar", "bar"));
> +       BBUNIT_ASSERT_STREQ("foo", is_suffixed_with("foo", "foo"));
> +       BBUNIT_ASSERT_STREQ("", is_suffixed_with("foo", ""));
> +       BBUNIT_ASSERT_STREQ("", is_suffixed_with("", ""));
> +
> +       BBUNIT_ASSERT_NULL(is_suffixed_with("foo", "bar foo"));
> +       BBUNIT_ASSERT_NULL(is_suffixed_with("foo foo", "bar"));
> +       BBUNIT_ASSERT_NULL(is_suffixed_with("", "foo"));
> +
> +       BBUNIT_ENDTEST;
> +}
> +
>  #endif /* ENABLE_UNIT_TEST */
> --
> 2.1.4
>
> _______________________________________________
> busybox mailing list
> busybox at busybox.net
> http://lists.busybox.net/mailman/listinfo/busybox


More information about the busybox mailing list