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

_______________________________________________
busybox mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to