Generalize string trunctation util function
Add an additional argument to let the client pass the possible end chars.
This commit is contained in:
parent
f2781a8b6d
commit
9619ade706
4 changed files with 26 additions and 8 deletions
|
@ -264,6 +264,6 @@ adb_get_serialno(void) {
|
|||
return NULL;
|
||||
}
|
||||
|
||||
sc_str_truncate_first_line(buf, r);
|
||||
sc_str_truncate(buf, r, "\r\n");
|
||||
return strdup(buf);
|
||||
}
|
||||
|
|
|
@ -293,9 +293,9 @@ error:
|
|||
}
|
||||
|
||||
size_t
|
||||
sc_str_truncate_first_line(char *data, size_t len) {
|
||||
sc_str_truncate(char *data, size_t len, const char *endchars) {
|
||||
data[len - 1] = '\0';
|
||||
char *eol = strpbrk(data, "\r\n");
|
||||
char *eol = strpbrk(data, endchars);
|
||||
if (eol) {
|
||||
*eol = '\0';
|
||||
len = eol - data;
|
||||
|
|
|
@ -104,7 +104,7 @@ char *
|
|||
sc_str_wrap_lines(const char *input, unsigned columns, unsigned indent);
|
||||
|
||||
/**
|
||||
* Truncate the data after the first line
|
||||
* Truncate the data after any of the characters from `endchars`
|
||||
*
|
||||
* An '\0' is always written at the end of the data, even if no newline
|
||||
* character is encountered.
|
||||
|
@ -112,6 +112,6 @@ sc_str_wrap_lines(const char *input, unsigned columns, unsigned indent);
|
|||
* Return the size of the resulting line.
|
||||
*/
|
||||
size_t
|
||||
sc_str_truncate_first_line(char *data, size_t len);
|
||||
sc_str_truncate(char *data, size_t len, const char *endchars);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -337,12 +337,30 @@ static void test_wrap_lines(void) {
|
|||
free(formatted);
|
||||
}
|
||||
|
||||
static void test_truncate_first_line(void) {
|
||||
static void test_truncate(void) {
|
||||
char s[] = "hello\nworld\n!";
|
||||
size_t len = sc_str_truncate_first_line(s, sizeof(s));
|
||||
size_t len = sc_str_truncate(s, sizeof(s), "\n");
|
||||
|
||||
assert(len == 5);
|
||||
assert(!strcmp("hello", s));
|
||||
|
||||
char s2[] = "hello\r\nworkd\r\n!";
|
||||
len = sc_str_truncate(s2, sizeof(s2), "\n\r");
|
||||
|
||||
assert(len == 5);
|
||||
assert(!strcmp("hello", s));
|
||||
|
||||
char s3[] = "hello world\n!";
|
||||
len = sc_str_truncate(s3, sizeof(s3), " \n\r");
|
||||
|
||||
assert(len == 5);
|
||||
assert(!strcmp("hello", s3));
|
||||
|
||||
char s4[] = "hello ";
|
||||
len = sc_str_truncate(s4, sizeof(s4), " \n\r");
|
||||
|
||||
assert(len == 5);
|
||||
assert(!strcmp("hello", s4));
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
|
@ -364,6 +382,6 @@ int main(int argc, char *argv[]) {
|
|||
test_parse_integer_with_suffix();
|
||||
test_strlist_contains();
|
||||
test_wrap_lines();
|
||||
test_truncate_first_line();
|
||||
test_truncate();
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue