diff options
author | Denys Vlasenko | 2017-08-05 17:50:35 +0200 |
---|---|---|
committer | Denys Vlasenko | 2017-08-05 17:50:35 +0200 |
commit | 20077c1429915b2c223e4d179a033f2b1806872c (patch) | |
tree | 76c89e23adc5bb529e310d9e25e7016f6d699645 /libbb/trim.c | |
parent | 9cf89cdf84fb20154088145980b676d2b28fc55d (diff) | |
download | busybox-20077c1429915b2c223e4d179a033f2b1806872c.zip busybox-20077c1429915b2c223e4d179a033f2b1806872c.tar.gz |
libbb: make trim() return pointer to terminating NUL
function old new delta
trim 80 90 +10
angle_address 56 50 -6
sysctl_main 282 273 -9
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 1/3 up/down: +10/-15) Total: -5 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'libbb/trim.c')
-rw-r--r-- | libbb/trim.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/libbb/trim.c b/libbb/trim.c index 16cb4fb..e47fec7 100644 --- a/libbb/trim.c +++ b/libbb/trim.c @@ -10,9 +10,10 @@ #include "libbb.h" -void FAST_FUNC trim(char *s) +char* FAST_FUNC trim(char *s) { size_t len = strlen(s); + size_t old = len; /* trim trailing whitespace */ while (len && isspace(s[len-1])) @@ -26,5 +27,12 @@ void FAST_FUNC trim(char *s) memmove(s, nws, len); } } - s[len] = '\0'; + + s += len; + /* If it was a "const char*" which does not need trimming, + * avoid superfluous store */ + if (old != len) + *s = '\0'; + + return s; } |