Add a free_iovec() function to reset iovec's.

The primary purpose is to call nmount() in a loop with new iovec's so
free_iovec takes arguments by reference and resets their values.

Reviewed by:	cem
MFC after:	1 week
Sponsored by:	DARPA, AFRL
Differential Revision:	https://reviews.freebsd.org/D8513
This commit is contained in:
Brooks Davis 2016-12-14 21:26:43 +00:00
parent f50fae318d
commit b32720888a
2 changed files with 15 additions and 0 deletions

View File

@ -181,3 +181,17 @@ build_iovec_argf(struct iovec **iov, int *iovlen, const char *name,
va_end(ap);
build_iovec(iov, iovlen, name, strdup(val), (size_t)-1);
}
/*
* Free the iovec and reset to NULL with zero length. Useful for calling
* nmount in a loop.
*/
void
free_iovec(struct iovec **iov, int *iovlen)
{
int i;
for (i = 0; i < *iovlen; i++)
free((*iov)[i].iov_base);
free(*iov);
}

View File

@ -99,3 +99,4 @@ int checkpath(const char *, char resolved_path[]);
extern int getmnt_silent;
void build_iovec(struct iovec **iov, int *iovlen, const char *name, void *val, size_t len);
void build_iovec_argf(struct iovec **iov, int *iovlen, const char *name, const char *fmt, ...);
void free_iovec(struct iovec **iovec, int *iovlen);