[PATCH] libbb/last_char_is: rewrite for smaller and faster code

Jody Bruchon jody at jodybruchon.com
Wed Jul 1 22:02:16 UTC 2020


 From 10389ff81b4ee5a7db293cf5d6205d8944e51901 Mon Sep 17 00:00:00 2001
From: Jody Bruchon <jody at jodybruchon.com>
Date: Wed, 1 Jul 2020 17:55:04 -0400
Subject: [PATCH] libbb/last_char_is: rewrite for smaller and faster code

Signed-off-by: Jody Bruchon <jody at jodybruchon.com>
---
  libbb/last_char_is.c | 14 +++++---------
  1 file changed, 5 insertions(+), 9 deletions(-)

diff --git a/libbb/last_char_is.c b/libbb/last_char_is.c
index 918526e6c..b146b606f 100644
--- a/libbb/last_char_is.c
+++ b/libbb/last_char_is.c
@@ -9,16 +9,12 @@
  #include "libbb.h"

  /* Find out if the last character of a string matches the one given */
-char* FAST_FUNC last_char_is(const char *s, int c)
+char* FAST_FUNC last_char_is(char *s, char c)
  {
-    if (s) {
-        size_t sz = strlen(s);
-        /* Don't underrun the buffer if the string length is 0 */
-        if (sz != 0) {
-            s += sz - 1;
-            if ((unsigned char)*s == c)
-                return (char*)s;
-        }
+    if (s && *s) {
+        while (*s != '\0') s++;
+        s--;
+        if (*s == c) return s;
      }
      return NULL;
  }
-- 
2.15.0




More information about the busybox mailing list