]> xenbits.xensource.com Git - people/royger/freebsd.git/commitdiff
Add a free_iovec() function to reset iovec's.
authorbrooks <brooks@FreeBSD.org>
Wed, 14 Dec 2016 21:26:43 +0000 (21:26 +0000)
committerbrooks <brooks@FreeBSD.org>
Wed, 14 Dec 2016 21:26:43 +0000 (21:26 +0000)
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

sbin/mount/getmntopts.c
sbin/mount/mntopts.h

index f8a34530c5dcf25fb0e6da65d26b19bc0cbf5214..59a383ebe5f04281e4c9c195fa4fd98ef6225ee6 100644 (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);
+}
index d273dde9f1d521abe126cf8b8fd3c9aa96dd7d9a..4cb83f15e6e577a7e8f19cb012c2eb711c2941dd 100644 (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);