udhcpc: fix a problem with binary-encoded options #2
[oweals/busybox.git] / libbb / last_char_is.c
index 80a6fe2e4e7be821341e16943f39d6d077a53c10..65e6cdf044eaaaf5068a2516fe2cc5dfbd1fcd95 100644 (file)
@@ -4,22 +4,21 @@
  *
  * Copyright (C) 2001 Larry Doolittle, <ldoolitt@recycle.lbl.gov>
  *
- * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
+ * Licensed under GPLv2 or later, see file LICENSE in this source tree.
  */
 
 #include "libbb.h"
 
-/* Find out if the last character of a string matches the one given Don't
- * underrun the buffer if the string length is 0.  Also avoids a possible
- * space-hogging inline of strlen() per usage.
+/* Find out if the last character of a string matches the one given.
+ * Don't underrun the buffer if the string length is 0.
  */
-char* last_char_is(const char *s, int c)
+char* FAST_FUNC last_char_is(const char *s, int c)
 {
-       char *sret;
-       if (s) {
-               sret = strrchr(s, c);
-               if (sret && !sret[1])
-                       return sret;
+       if (s && *s) {
+               size_t sz = strlen(s) - 1;
+               s += sz;
+               if ( (unsigned char)*s == c)
+                       return (char*)s;
        }
        return NULL;
 }