Hi, attached you will find a patch that shrinks the is_suffixed_with function and adds one more test case as suggested by Bartosz Golaszewski. Bloat-o-meter says:
function old new delta is_suffixed_with 83 47 -36 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-36) Total: -36 bytes Ciao, Tito
Shrink is_suffixed_with function. Signed-off-by: Tito Ragusa <[email protected]> --- libbb/compare_string_array.c.orig 2015-08-27 00:39:27.694416966 +0200 +++ libbb/compare_string_array.c 2015-08-27 13:55:44.997158181 +0200 @@ -35,16 +35,9 @@ char* FAST_FUNC is_prefixed_with(const c */ char* FAST_FUNC is_suffixed_with(const char *string, const char *key) { - size_t key_len = strlen(key); - ssize_t len_diff = strlen(string) - key_len; - - if (len_diff >= 0) { - string += len_diff; - if (strcmp(string, key) == 0) { - return (char*)string; - } - } - + char *s = strrstr(string, key); + if (s && strcmp(s, key) == 0) + return s; return NULL; } @@ -159,6 +152,7 @@ BBUNIT_DEFINE_TEST(is_suffixed_with) BBUNIT_ASSERT_STREQ("foo", is_suffixed_with("foo", "foo")); BBUNIT_ASSERT_STREQ("", is_suffixed_with("foo", "")); BBUNIT_ASSERT_STREQ("", is_suffixed_with("", "")); + BBUNIT_ASSERT_STREQ("foo", is_suffixed_with("barfoofoo", "foo")); BBUNIT_ASSERT_NULL(is_suffixed_with("foo", "bar foo")); BBUNIT_ASSERT_NULL(is_suffixed_with("foo foo", "bar"));
_______________________________________________ busybox mailing list [email protected] http://lists.busybox.net/mailman/listinfo/busybox
