History

string: factorize skip_spaces and export it to be generally available

On the following sentence: while (*s && isspace(*s)) s++; If *s == 0, isspace() evaluates to ((_ctype[*s] & 0x20) != 0), which evaluates to ((0x08 & 0x20) != 0) which equals to 0 as well. If *s == 1, we depend on isspace() result anyway. In other words, "a char equals zero is never a space", so remove this check. Also, *s != 0 is most common case (non-null string). Fixed const return as noticed by Jan Engelhardt and James Bottomley. Fixed unnecessary extra cast on strstrip() as noticed by Jan Engelhardt.

André Goddard Rosa committed 16 years ago

Commit f6533981 parent 4e62b093 files · +17 −4Browse files

Showing the changes to lib/string.c (1 of 3 files). Show all

Unified · Split

lib/string.c+15−4
@@ -337,6 +337,20 @@ char *strnchr(const char *s, size_t count, int c) · 336 unmodified lines
337EXPORT_SYMBOL(strnchr);337EXPORT_SYMBOL(strnchr);
338#endif338#endif
339 339
340/**
341 * skip_spaces - Removes leading whitespace from @s.
342 * @s: The string to be stripped.
343 *
344 * Returns a pointer to the first non-whitespace character in @s.
345 */
346char *skip_spaces(const char *str)
347{
348 while (isspace(*str))
349 ++str;
350 return (char *)str;
351}
352EXPORT_SYMBOL(skip_spaces);
353
340/**354/**
341 * strstrip - Removes leading and trailing whitespace from @s.355 * strstrip - Removes leading and trailing whitespace from @s.
342 * @s: The string to be stripped.356 * @s: The string to be stripped.
@@ -360,10 +374,7 @@ char *strstrip(char *s) · 17 unmodified lines
360 end--;374 end--;
361 *(end + 1) = '\0';375 *(end + 1) = '\0';
362 376
363 while (*s && isspace(*s))377 return skip_spaces(s);
364 s++;
365
366 return s;
367}378}
368EXPORT_SYMBOL(strstrip);379EXPORT_SYMBOL(strstrip);
369 380