return _strv_append(mem_ctx, strv, src, talloc_array_length(src));
}
-static bool strv_valid_entry(const char *strv, const char *entry,
- size_t *strv_len, size_t *entry_len)
+static bool strv_valid_entry(const char *strv, size_t strv_len,
+ const char *entry, size_t *entry_len)
{
- size_t len;
-
- len = talloc_array_length(strv);
- if (len == 0) {
+ if (strv_len == 0) {
return false;
}
- if (strv[len-1] != '\0') {
+ if (strv[strv_len-1] != '\0') {
return false;
}
if (entry < strv) {
return false;
}
- if (entry >= (strv+len)) {
+ if (entry >= (strv+strv_len)) {
return false;
}
- *strv_len = len;
*entry_len = strlen(entry);
return true;
char *strv_next(char *strv, const char *entry)
{
- size_t len, entry_len;
+ size_t len = talloc_array_length(strv);
+ size_t entry_len;
char *result;
if (entry == NULL) {
- if (strv_valid_entry(strv, strv, &len, &entry_len)) {
+ if (strv_valid_entry(strv, len, strv, &entry_len)) {
return strv;
}
return NULL;
}
- if (!strv_valid_entry(strv, entry, &len, &entry_len)) {
+ if (!strv_valid_entry(strv, len, entry, &entry_len)) {
return NULL;
}
result = &strv[entry - strv]; /* avoid const problems with this stmt */
void strv_delete(char **strv, char *entry)
{
- size_t len, entry_len;
+ size_t len = talloc_array_length(*strv);
+ size_t entry_len;
if (entry == NULL) {
return;
}
- if (!strv_valid_entry(*strv, entry, &len, &entry_len)) {
+ if (!strv_valid_entry(*strv, len, entry, &entry_len)) {
return;
}
entry_len += 1;