From 1a70d9f9ef81ac1b5e843ac71f3538f7845e03ae Mon Sep 17 00:00:00 2001 From: Dirk Engling Date: Sat, 13 Apr 2024 00:47:29 +0200 Subject: First shot on chunked transfers --- ot_iovec.c | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) (limited to 'ot_iovec.c') diff --git a/ot_iovec.c b/ot_iovec.c index fec3912..f9567a9 100644 --- a/ot_iovec.c +++ b/ot_iovec.c @@ -35,6 +35,26 @@ void *iovec_increase( int *iovec_entries, struct iovec **iovector, size_t new_al return new_data; } +void *iovec_append( int *iovec_entries, struct iovec **iovector, struct iovec *append_iovector) { + int new_entries = *iovec_entries + 1; + struct iovec *new_vec = realloc( *iovector, new_entries * sizeof( struct iovec ) ); + if( !new_vec ) + return NULL; + + /* Take over data from appended iovec */ + new_vec[*iovec_entries].iov_base = append_iovector->iov_base; + new_vec[*iovec_entries].iov_len = append_iovector->iov_len; + + append_iovector->iov_base = NULL; + append_iovector->iov_len = 0; + + *iovector = new_vec; + *iovec_entries = new_entries; + + return new_vec; +} + + void iovec_free( int *iovec_entries, struct iovec **iovector ) { int i; for( i=0; i<*iovec_entries; ++i ) @@ -64,7 +84,6 @@ void *iovec_fix_increase_or_free( int *iovec_entries, struct iovec **iovector, v return new_data; } - size_t iovec_length( const int *iovec_entries, const struct iovec **iovector ) { size_t length = 0; int i; -- cgit v1.2.3