Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 21 Dec 2016 23:16:58 +0000 (UTC)
From:      Brooks Davis <brooks@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org
Subject:   svn commit: r310378 - stable/10/sbin/mount
Message-ID:  <201612212316.uBLNGwuQ009134@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: brooks
Date: Wed Dec 21 23:16:58 2016
New Revision: 310378
URL: https://svnweb.freebsd.org/changeset/base/310378

Log:
  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

Modified:
  stable/10/sbin/mount/getmntopts.c
  stable/10/sbin/mount/mntopts.h
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/sbin/mount/getmntopts.c
==============================================================================
--- stable/10/sbin/mount/getmntopts.c	Wed Dec 21 22:53:10 2016	(r310377)
+++ stable/10/sbin/mount/getmntopts.c	Wed Dec 21 23:16:58 2016	(r310378)
@@ -181,3 +181,17 @@ build_iovec_argf(struct iovec **iov, int
 	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);
+}

Modified: stable/10/sbin/mount/mntopts.h
==============================================================================
--- stable/10/sbin/mount/mntopts.h	Wed Dec 21 22:53:10 2016	(r310377)
+++ stable/10/sbin/mount/mntopts.h	Wed Dec 21 23:16:58 2016	(r310378)
@@ -99,3 +99,4 @@ int checkpath(const char *, char resolve
 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);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201612212316.uBLNGwuQ009134>