summaryrefslogtreecommitdiffstats
path: root/sbin/mount
diff options
context:
space:
mode:
authorphk <phk@FreeBSD.org>2004-11-25 13:31:46 +0000
committerphk <phk@FreeBSD.org>2004-11-25 13:31:46 +0000
commit8499c6beb775b4bedd48be50da73083c403debc7 (patch)
treeaae1513bab9f0ad597e43782aa70d0ade6c2903b /sbin/mount
parent3b5dc375c186f99e77fab238b3e3e52b9db3d783 (diff)
downloadFreeBSD-src-8499c6beb775b4bedd48be50da73083c403debc7.zip
FreeBSD-src-8499c6beb775b4bedd48be50da73083c403debc7.tar.gz
Add a convenience function for building nmount iov arrays.
Diffstat (limited to 'sbin/mount')
-rw-r--r--sbin/mount/getmntopts.c24
-rw-r--r--sbin/mount/mntopts.h1
2 files changed, 25 insertions, 0 deletions
diff --git a/sbin/mount/getmntopts.c b/sbin/mount/getmntopts.c
index 0a6ceb1..2e8676d 100644
--- a/sbin/mount/getmntopts.c
+++ b/sbin/mount/getmntopts.c
@@ -37,6 +37,7 @@ __FBSDID("$FreeBSD$");
#include <sys/param.h>
#include <sys/stat.h>
+#include <sys/uio.h>
#include <err.h>
#include <errno.h>
@@ -138,3 +139,26 @@ checkpath(path, resolved)
} else
errx(EX_USAGE, "%s: %s", resolved, strerror(errno));
}
+
+void
+build_iovec(struct iovec **iov, int *iovlen, const char *name, void *val, int len)
+{
+ int i;
+
+ if (iovlen < 0)
+ return;
+ i = *iovlen;
+ *iov = realloc(*iov, sizeof **iov * (i + 2));
+ if (*iov == NULL) {
+ *iovlen = -1;
+ return;
+ }
+ (*iov)[i].iov_base = strdup(name);
+ (*iov)[i].iov_len = strlen(name) + 1;
+ i++;
+ (*iov)[i].iov_base = val;
+ if (len < 0)
+ len = strlen(val) + 1;
+ (*iov)[i].iov_len = len;
+ *iovlen = ++i;
+}
diff --git a/sbin/mount/mntopts.h b/sbin/mount/mntopts.h
index 7fd8076..5205195 100644
--- a/sbin/mount/mntopts.h
+++ b/sbin/mount/mntopts.h
@@ -92,3 +92,4 @@ void getmntopts(const char *, const struct mntopt *, int *, int *);
void rmslashes(char *, char *);
void checkpath(const char *, char resolved_path[]);
extern int getmnt_silent;
+void build_iovec(struct iovec **iov, int *iovlen, const char *name, void *val, int len);
OpenPOWER on IntegriCloud