[PATCH] libbb: shrink is_suffixed_with()
Isaac Dunham
ibid.ag at gmail.com
Wed Aug 26 17:18:33 UTC 2015
By my test (Debian Jessie, GCC 4.9.2, glibc shared build), the results are:
function old new delta
is_suffixed_with 61 45 -16
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-16) Total: -16 bytes
text data bss dec hex filename
760460 2092 9080 771632 bc630 busybox_old
760444 2092 9080 771616 bc620 busybox_unstripped
---
libbb/compare_string_array.c | 15 +++++----------
1 file changed, 5 insertions(+), 10 deletions(-)
diff --git a/libbb/compare_string_array.c b/libbb/compare_string_array.c
index 3dbd3eb..2a46e62 100644
--- a/libbb/compare_string_array.c
+++ b/libbb/compare_string_array.c
@@ -35,17 +35,12 @@ char* FAST_FUNC is_prefixed_with(const char *string, const char *key)
*/
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;
+ char *ret;
- if (len_diff >= 0) {
- string += len_diff;
- if (strcmp(string, key) == 0) {
- return (char*)string;
- }
- }
-
- return NULL;
+ ret = strstr(string, key);
+ if (ret && strcmp(ret, key))
+ ret = NULL;
+ return ret;
}
/* returns the array index of the string */
--
2.1.4
More information about the busybox
mailing list