Hi Pekka,
strstrip() does not remove the last blank from strings which only consist
of blanks.
Example:
char string[] = " ";
strstrip(string);
results in " ", but should produce an empty string!
The following patch solves this problem:
Acked-by: Martin Schwidefsky <[email protected]>
Signed-off-by: Michael Holzheu <[email protected]>
---
lib/string.c | 2 +-
1 files changed, 1 insertion(+), 1 deletion(-)
diff -Naurp linux-2.6.18/lib/string.c linux-2.6.18-strstrip-fix/lib/string.c
--- linux-2.6.18/lib/string.c 2006-06-19 14:03:20.000000000 +0200
+++ linux-2.6.18-strstrip-fix/lib/string.c 2006-10-25 18:36:08.000000000 +0200
@@ -320,7 +320,7 @@ char *strstrip(char *s)
return s;
end = s + size - 1;
- while (end != s && isspace(*end))
+ while (end >= s && isspace(*end))
end--;
*(end + 1) = '\0';
On Thu, 26 Oct 2006, Michael Holzheu wrote:
> strstrip() does not remove the last blank from strings which only consist
> of blanks.
[snip]
> Acked-by: Martin Schwidefsky <[email protected]>
> Signed-off-by: Michael Holzheu <[email protected]>
>
> ---
>
> lib/string.c | 2 +-
> 1 files changed, 1 insertion(+), 1 deletion(-)
>
> diff -Naurp linux-2.6.18/lib/string.c linux-2.6.18-strstrip-fix/lib/string.c
> --- linux-2.6.18/lib/string.c 2006-06-19 14:03:20.000000000 +0200
> +++ linux-2.6.18-strstrip-fix/lib/string.c 2006-10-25 18:36:08.000000000 +0200
> @@ -320,7 +320,7 @@ char *strstrip(char *s)
> return s;
>
> end = s + size - 1;
> - while (end != s && isspace(*end))
> + while (end >= s && isspace(*end))
> end--;
> *(end + 1) = '\0';
Looks good, thanks! Andrew, can you please pick up this patch?
Acked-by: Pekka Enberg <[email protected]>
On Thu, 26 October 2006 14:20:56 +0300, Pekka J Enberg wrote:
>
> Acked-by: Pekka Enberg <[email protected]>
Acked-by Joern Engel <[email protected]>
J?rn
--
Data expands to fill the space available for storage.
-- Parkinson's Law