summaryrefslogtreecommitdiff
path: root/libbb/last_char_is.c
diff options
context:
space:
mode:
authorDenis Vlasenko2006-12-16 22:18:44 +0000
committerDenis Vlasenko2006-12-16 22:18:44 +0000
commit6a1d661036f1774f4fd7f964357c8739c38a9092 (patch)
tree5d78605c22fa0cc8a36e774929c7b3e7dfbad0f4 /libbb/last_char_is.c
parent79e77cdbed11b1fe722f0297f5ecc3fdddf3ca92 (diff)
downloadbusybox-6a1d661036f1774f4fd7f964357c8739c38a9092.zip
busybox-6a1d661036f1774f4fd7f964357c8739c38a9092.tar.gz
diff: fix -q exit code
last_char_is: sacrifice 9 bytes but avoid double-scan
Diffstat (limited to 'libbb/last_char_is.c')
-rw-r--r--libbb/last_char_is.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/libbb/last_char_is.c b/libbb/last_char_is.c
index 3616d59..aaa85dd 100644
--- a/libbb/last_char_is.c
+++ b/libbb/last_char_is.c
@@ -9,15 +9,15 @@
#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)
{
- if (s) {
- s = strrchr(s, c);
- if (s && !s[1])
+ if (s && *s) {
+ size_t sz = strlen(s) - 1;
+ s += sz;
+ if ( (unsigned char)*s == c)
return (char*)s;
}
return NULL;