summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/util/util_str.c10
-rw-r--r--lib/util/util_str_common.c43
-rw-r--r--source3/lib/util_str.c43
3 files changed, 43 insertions, 53 deletions
diff --git a/lib/util/util_str.c b/lib/util/util_str.c
index 7fa531f0e4..cf1b07ff0f 100644
--- a/lib/util/util_str.c
+++ b/lib/util/util_str.c
@@ -249,13 +249,3 @@ _PUBLIC_ bool strequal(const char *s1, const char *s2)
return strcasecmp(s1,s2) == 0;
}
-/**
- String replace.
-**/
-_PUBLIC_ void string_replace(char *s, char oldc, char newc)
-{
- while (*s) {
- if (*s == oldc) *s = newc;
- s++;
- }
-}
diff --git a/lib/util/util_str_common.c b/lib/util/util_str_common.c
index 9999ee440e..e6671be8ad 100644
--- a/lib/util/util_str_common.c
+++ b/lib/util/util_str_common.c
@@ -59,3 +59,46 @@ _PUBLIC_ size_t ucs2_align(const void *base_ptr, const void *p, int flags)
return 0;
return PTR_DIFF(p, base_ptr) & 1;
}
+
+/**
+ String replace.
+ NOTE: oldc and newc must be 7 bit characters
+**/
+void string_replace( char *s, char oldc, char newc )
+{
+ char *p;
+
+ /* this is quite a common operation, so we want it to be
+ fast. We optimise for the ascii case, knowing that all our
+ supported multi-byte character sets are ascii-compatible
+ (ie. they match for the first 128 chars) */
+
+ for (p = s; *p; p++) {
+ if (*p & 0x80) /* mb string - slow path. */
+ break;
+ if (*p == oldc) {
+ *p = newc;
+ }
+ }
+
+ if (!*p)
+ return;
+
+ /* Slow (mb) path. */
+#ifdef BROKEN_UNICODE_COMPOSE_CHARACTERS
+ /* With compose characters we must restart from the beginning. JRA. */
+ p = s;
+#endif
+
+ while (*p) {
+ size_t c_size;
+ next_codepoint(p, &c_size);
+
+ if (c_size == 1) {
+ if (*p == oldc) {
+ *p = newc;
+ }
+ }
+ p += c_size;
+ }
+}
diff --git a/source3/lib/util_str.c b/source3/lib/util_str.c
index a710fcc35b..13aa78cc91 100644
--- a/source3/lib/util_str.c
+++ b/source3/lib/util_str.c
@@ -234,49 +234,6 @@ bool strisnormal(const char *s, int case_default)
/**
- String replace.
- NOTE: oldc and newc must be 7 bit characters
-**/
-void string_replace( char *s, char oldc, char newc )
-{
- char *p;
-
- /* this is quite a common operation, so we want it to be
- fast. We optimise for the ascii case, knowing that all our
- supported multi-byte character sets are ascii-compatible
- (ie. they match for the first 128 chars) */
-
- for (p = s; *p; p++) {
- if (*p & 0x80) /* mb string - slow path. */
- break;
- if (*p == oldc) {
- *p = newc;
- }
- }
-
- if (!*p)
- return;
-
- /* Slow (mb) path. */
-#ifdef BROKEN_UNICODE_COMPOSE_CHARACTERS
- /* With compose characters we must restart from the beginning. JRA. */
- p = s;
-#endif
-
- while (*p) {
- size_t c_size;
- next_codepoint(p, &c_size);
-
- if (c_size == 1) {
- if (*p == oldc) {
- *p = newc;
- }
- }
- p += c_size;
- }
-}
-
-/**
* Skip past some strings in a buffer - old version - no checks.
* **/