diff options
Diffstat (limited to 'bstr.h')
-rw-r--r-- | bstr.h | 20 |
1 files changed, 19 insertions, 1 deletions
@@ -64,7 +64,6 @@ int bstrcspn(struct bstr str, const char *reject); int bstr_find(struct bstr haystack, struct bstr needle); struct bstr *bstr_splitlines(void *talloc_ctx, struct bstr str); -struct bstr bstr_getline(struct bstr str, struct bstr *rest); struct bstr bstr_lstrip(struct bstr str); struct bstr bstr_strip(struct bstr str); struct bstr bstr_split(struct bstr str, const char *sep, struct bstr *rest); @@ -87,11 +86,30 @@ int bstr_decode_utf8(struct bstr str, struct bstr *out_next); // On error, -1 is returned. On success, it returns a value in the range [1, 4]. int bstr_parse_utf8_code_length(unsigned char b); +// Return the text before the next line break, and return it. Change *rest to +// point to the text following this line break. (rest can be NULL.) +// Line break characters are not stripped. +struct bstr bstr_getline(struct bstr str, struct bstr *rest); + +// Strip one trailing line break. This is intended for use with bstr_getline, +// and will remove the trailing \n or \r\n sequence. +struct bstr bstr_strip_linebreaks(struct bstr str); + // If s starts with prefix, return true and return the rest of the string in s. bool bstr_eatstart(struct bstr *s, struct bstr prefix); +bool bstr_case_startswith(struct bstr s, struct bstr prefix); +bool bstr_case_endswith(struct bstr s, struct bstr suffix); +struct bstr bstr_strip_ext(struct bstr str); +struct bstr bstr_get_ext(struct bstr s); + static inline struct bstr bstr_cut(struct bstr str, int n) { + if (n < 0) { + n += str.len; + if (n < 0) + n = 0; + } if (n > str.len) n = str.len; return (struct bstr){str.start + n, str.len - n}; |