UPSTREAM: lib/string.c: introduce strreplace()

Strings are sometimes sanitized by replacing a certain character (often
'/') by another (often '!').  In a few places, this is done the same way
Schlemiel the Painter would do it.  Others are slightly smarter but still
do multiple strchr() calls.  Introduce strreplace() to do this using a
single function call and a single pass over the string.

One would expect the return value to be one of three things: void, s, or
the number of replacements made.  I chose the fourth, returning a pointer
to the end of the string.  This is more likely to be useful (for example
allowing the caller to avoid a strlen call).

BUG: 27175947

Signed-off-by: Rasmus Villemoes <>
Cc: "Theodore Ts'o" <>
Cc: Greg Kroah-Hartman <>
Cc: Neil Brown <>
Cc: Steven Rostedt <>
Cc: Joe Perches <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
Change-Id: I1ddb88534a189f2e78ae1b5b074c0662781c7665
2 files changed