tar: support -T - and -X -
[oweals/busybox.git] / libbb / last_char_is.c
index 9194ac05f03a24cac9da6870942f9db4716cfccf..65e6cdf044eaaaf5068a2516fe2cc5dfbd1fcd95 100644 (file)
@@ -4,23 +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 <string.h>
 #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 = (char *)s;
-       if (sret) {
-               sret = strrchr(sret, c);
-               if(sret != NULL && *(sret+1) != 0)
-                       sret = NULL;
+       if (s && *s) {
+               size_t sz = strlen(s) - 1;
+               s += sz;
+               if ( (unsigned char)*s == c)
+                       return (char*)s;
        }
-       return sret;
+       return NULL;
 }