common/strbuf: new function strbuf_term
This commit is contained in:
parent
2c2c0781d9
commit
8b0772d0f1
3 changed files with 30 additions and 2 deletions
|
|
@ -91,6 +91,12 @@ void strbuf_append_ch(strbuf_t *s, char ch) {
|
|||
s->buf[s->len] = '\0';
|
||||
}
|
||||
|
||||
void strbuf_term(strbuf_t *s, char ch) {
|
||||
|
||||
if (s->buf[s->len-1] != ch)
|
||||
strbuf_append_ch(s, ch);
|
||||
}
|
||||
|
||||
void strbuf_trim(strbuf_t *s) {
|
||||
|
||||
strbuf_rtrim(s);
|
||||
|
|
@ -132,7 +138,10 @@ void strbuf_squeeze(strbuf_t *s, char ch) {
|
|||
|
||||
size_t p;
|
||||
|
||||
for(p=s->len; p; p--) {
|
||||
if (s->len <= 1)
|
||||
return;
|
||||
|
||||
for(p=s->len-1; p; p--) {
|
||||
|
||||
if (s->buf[p] != ch)
|
||||
continue;
|
||||
|
|
|
|||
|
|
@ -39,6 +39,8 @@ void strbuf_append_str(strbuf_t *s, const char *str);
|
|||
|
||||
void strbuf_append_ch(strbuf_t *s, char ch);
|
||||
|
||||
void strbuf_term(strbuf_t *s, char ch);
|
||||
|
||||
void strbuf_trim(strbuf_t *s);
|
||||
|
||||
void strbuf_rtrim(strbuf_t *s);
|
||||
|
|
|
|||
|
|
@ -29,7 +29,9 @@ void test_squeeze() {
|
|||
|
||||
strbuf_t b = STRBUF_INIT;
|
||||
|
||||
strbuf_append_str(&b, "aaabXXXcdefXXXXghijklXXmmmnopXXXXXqrstuXXvwxyXXz");
|
||||
strbuf_squeeze(&b, 'X');
|
||||
|
||||
strbuf_append_str(&b, "aaabXXXcdefXXXXghijklXXmmmnopXXXXXqrstuXXvwxyXXzXX");
|
||||
strbuf_squeeze(&b, 'X');
|
||||
print_strbuf(&b);
|
||||
strbuf_free(&b);
|
||||
|
|
@ -40,6 +42,19 @@ void test_squeeze() {
|
|||
strbuf_free(&b);
|
||||
}
|
||||
|
||||
void test_term() {
|
||||
|
||||
strbuf_t b = STRBUF_INIT;
|
||||
strbuf_t c = STRBUF_INIT;
|
||||
strbuf_append_str(&b, "test");
|
||||
strbuf_append_str(&c, "test.");
|
||||
strbuf_term(&b, '.');
|
||||
strbuf_term(&c, '.');
|
||||
assert(strcmp(b.buf, c.buf) == 0);
|
||||
strbuf_free(&b);
|
||||
strbuf_free(&c);
|
||||
}
|
||||
|
||||
void test() {
|
||||
|
||||
strbuf_t b = STRBUF_INIT;
|
||||
|
|
@ -92,6 +107,8 @@ int main() {
|
|||
test_release_empty();
|
||||
|
||||
test_squeeze();
|
||||
|
||||
test_term();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
Reference in a new issue