diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2006-12-17 01:18:44 +0300 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2006-12-17 01:18:44 +0300 |
commit | 6a1d661036f1774f4fd7f964357c8739c38a9092 (patch) | |
tree | 5d78605c22fa0cc8a36e774929c7b3e7dfbad0f4 /libbb/last_char_is.c | |
parent | 79e77cdbed11b1fe722f0297f5ecc3fdddf3ca92 (diff) |
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.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/libbb/last_char_is.c b/libbb/last_char_is.c index 3616d5916..aaa85ddd9 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; |