On Thu, 30 Jan 2014, Andrew Morton wrote:
@@ -63,6 +64,35 @@ char *kstrndup(const char *s, size_t max, gfp_t gfp) EXPORT_SYMBOL(kstrndup); /**
- kstrimdup - Trim and copy a %NUL terminated string.
- @s: the string to trim and duplicate
- @gfp: the GFP mask used in the kmalloc() call when allocating memory
- Returns an address, which the caller must kfree, containing
- a duplicate of the passed string with leading and/or trailing
- whitespace (as defined by isspace) removed.
- */
+char *kstrimdup(const char *s, gfp_t gfp) +{
- char *buf;
- char *begin = skip_spaces(s);
- size_t len = strlen(begin);
- while (len > 1 && isspace(begin[len - 1]))
len--;
That's off-by-one isn't it? kstrimdup(" ") should return "", not " ".
Yeah, this is an incorrect copy-and-paste of Joe Perches' suggested code from http://marc.info/?l=linux-kernel&m=139104508317989.