free(iovec);
}
+
+struct iovec* iovec_append(struct iovec *iovec, const struct iovec *append) {
+ assert(iovec_is_valid(iovec));
+
+ if (!iovec_is_set(append))
+ return iovec;
+
+ if (!greedy_realloc_append(&iovec->iov_base, &iovec->iov_len, append->iov_base, append->iov_len, 1))
+ return NULL;
+
+ return iovec;
+}
assert_se(!iovec_is_valid(&invalid));
}
+TEST(iovec_append) {
+ _cleanup_(iovec_done) struct iovec iov = {};
+
+ assert_se(iovec_append(&iov, &IOVEC_MAKE_STRING("")) == &iov);
+ assert_se(iovec_append(&iov, &IOVEC_MAKE_STRING("waldo")) == &iov);
+ assert_se(iovec_append(&iov, &IOVEC_MAKE_STRING("quux")) == &iov);
+ assert_se(iovec_append(&iov, &IOVEC_MAKE_STRING("")) == &iov);
+ assert_se(iovec_append(&iov, &IOVEC_MAKE_STRING("p")) == &iov);
+ assert_se(iovec_append(&iov, &IOVEC_MAKE_STRING("")) == &iov);
+
+ assert_se(iovec_memcmp(&iov, &IOVEC_MAKE_STRING("waldoquuxp")) == 0);
+}
+
DEFINE_TEST_MAIN(LOG_INFO);