string printing: simplify
This commit is contained in:
26
cfg.h
26
cfg.h
@@ -102,29 +102,6 @@ bool string_compare(string* a, string* b) {
|
||||
return strncmp(a->str, b->str, a->len) == 0;
|
||||
}
|
||||
|
||||
ssize_t string_count_escaped_chars(string* s) {
|
||||
size_t i;
|
||||
ssize_t res = 0;
|
||||
for (i = 0; i < s->len; i++) if (s->str[i] == '"' || s->str[i] == '\\') res++;
|
||||
return res;
|
||||
}
|
||||
|
||||
string string_quote(string* replace) {
|
||||
size_t i = 0;
|
||||
ssize_t quotes = string_count_escaped_chars(replace);
|
||||
string res = new_string_sized(replace->len+quotes);
|
||||
res.len = res.cap;
|
||||
|
||||
quotes = 0;
|
||||
for (i = 0; i < replace->len; i++) {
|
||||
if (replace->str[i] == '"') res.str[i+(quotes++)] = '\\';
|
||||
else if (replace->str[i] == '\\') res.str[i+(quotes++)] = '\\';
|
||||
res.str[i+quotes] = replace->str[i];
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
ssize_t string_find_whitespace(string* s) {
|
||||
ssize_t i;
|
||||
char c;
|
||||
@@ -413,8 +390,7 @@ string config_value_str(config_value* c, size_t indent) {
|
||||
return res;
|
||||
case config_value_string:
|
||||
string_cappend(&res, "\"");
|
||||
sub = string_quote(&c->s);
|
||||
string_append(&res, &sub);
|
||||
string_append(&res, &c->s);
|
||||
string_cappend(&res, "\"");
|
||||
break;
|
||||
case config_value_number:
|
||||
|
@@ -4,7 +4,8 @@ hi
|
||||
name 1
|
||||
val "hi"
|
||||
list
|
||||
- "value"
|
||||
- "value
|
||||
\"multi"
|
||||
- -1
|
||||
-
|
||||
- "this"
|
||||
|
Reference in New Issue
Block a user