return in_charset(s1, ok) && in_charset(s2, ok);
}
+
+char *string_replace_char(char *str, char old_char, char new_char) {
+ assert(str);
+ assert(old_char != '\0');
+ assert(new_char != '\0');
+ assert(old_char != new_char);
+
+ for (char *p = strchr(str, old_char); p; p = strchr(p + 1, old_char))
+ *p = new_char;
+
+ return str;
+}
}
bool streq_skip_trailing_chars(const char *s1, const char *s2, const char *ok);
+
+char *string_replace_char(char *str, char old_char, char new_char);
assert_se(streq(p, "<77>,<99>,< 88>,<00001234>"));
}
+TEST(string_replace_char) {
+ assert_se(streq(string_replace_char(strdupa(""), 'a', 'b'), ""));
+ assert_se(streq(string_replace_char(strdupa("abc"), 'a', 'b'), "bbc"));
+ assert_se(streq(string_replace_char(strdupa("hoge"), 'a', 'b'), "hoge"));
+ assert_se(streq(string_replace_char(strdupa("aaaa"), 'a', 'b'), "bbbb"));
+ assert_se(streq(string_replace_char(strdupa("aaaa"), 'a', '\t'), "\t\t\t\t"));
+}
+
TEST(streq_skip_trailing_chars) {
/* NULL is WHITESPACE by default*/
assert_se(streq_skip_trailing_chars("foo bar", "foo bar", NULL));