From bdedf6f07702bb33803801ba09811167ca8952c2 Mon Sep 17 00:00:00 2001 From: brooks Date: Wed, 21 Dec 2016 23:16:58 +0000 Subject: [PATCH] MFC r310092: 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 git-svn-id: svn://svn.freebsd.org/base/stable/10@310378 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f --- sbin/mount/getmntopts.c | 14 ++++++++++++++ sbin/mount/mntopts.h | 1 + 2 files changed, 15 insertions(+) diff --git a/sbin/mount/getmntopts.c b/sbin/mount/getmntopts.c index f8a34530c..59a383ebe 100644 --- a/sbin/mount/getmntopts.c +++ b/sbin/mount/getmntopts.c @@ -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); +} diff --git a/sbin/mount/mntopts.h b/sbin/mount/mntopts.h index d273dde9f..4cb83f15e 100644 --- a/sbin/mount/mntopts.h +++ b/sbin/mount/mntopts.h @@ -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); -- 2.45.0