nulstr-util: introduce strv_parse_nulstr_full() that optionally drop trailing empty strings

This commit is contained in:
Yu Watanabe
2023-03-24 15:21:59 +09:00
parent ba54d73055
commit a4f66f90ad
2 changed files with 9 additions and 2 deletions
+5 -1
View File
@@ -4,7 +4,7 @@
#include "string-util.h"
#include "strv.h"
char** strv_parse_nulstr(const char *s, size_t l) {
char** strv_parse_nulstr_full(const char *s, size_t l, bool drop_trailing_nuls) {
/* l is the length of the input data, which will be split at NULs into elements of the resulting
* strv. Hence, the number of items in the resulting strv will be equal to one plus the number of NUL
* bytes in the l bytes starting at s, unless s[l-1] is NUL, in which case the final empty string is
@@ -18,6 +18,10 @@ char** strv_parse_nulstr(const char *s, size_t l) {
assert(s || l <= 0);
if (drop_trailing_nuls)
while (l > 0 && s[l-1] == '\0')
l--;
if (l <= 0)
return new0(char*, 1);
+4 -1
View File
@@ -20,7 +20,10 @@ static inline bool nulstr_contains(const char *nulstr, const char *needle) {
return nulstr_get(nulstr, needle);
}
char** strv_parse_nulstr(const char *s, size_t l);
char** strv_parse_nulstr_full(const char *s, size_t l, bool drop_trailing_nuls);
static inline char** strv_parse_nulstr(const char *s, size_t l) {
return strv_parse_nulstr_full(s, l, false);
}
char** strv_split_nulstr(const char *s);
int strv_make_nulstr(char * const *l, char **p, size_t *n);
int set_make_nulstr(Set *s, char **ret, size_t *ret_size);