From fdb3dd15f65347f5d1596790ec49162f3807f775 Mon Sep 17 00:00:00 2001 From: matteo Date: Thu, 15 Feb 2007 13:49:44 +0000 Subject: Enhances mdmfs(8) to mount md-based device such as uzip. Examples of use can be found in the PR text. PR: 103501 MFC after: 1 week --- sbin/mdmfs/mdmfs.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'sbin/mdmfs') diff --git a/sbin/mdmfs/mdmfs.c b/sbin/mdmfs/mdmfs.c index c07be21..5b895d5 100644 --- a/sbin/mdmfs/mdmfs.c +++ b/sbin/mdmfs/mdmfs.c @@ -48,6 +48,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include typedef enum { false, true } bool; @@ -66,6 +67,7 @@ static bool loudsubs; /* Suppress output from helper programs? */ static bool norun; /* Actually run the helper programs? */ static int unit; /* The unit we're working with. */ static const char *mdname; /* Name of memory disk device (e.g., "md"). */ +static const char *mdsuffix; /* Suffix of memory disk device (e.g., ".uzip"). */ static size_t mdnamelen; /* Length of mdname. */ static const char *path_mdconfig =_PATH_MDCONFIG; @@ -236,13 +238,16 @@ main(int argc, char **argv) unitstr += 5; if (strncmp(unitstr, mdname, mdnamelen) == 0) unitstr += mdnamelen; - if (*unitstr == '\0') { + if (!isdigit(*unitstr)) { autounit = true; unit = -1; + mdsuffix = unitstr; } else { ul = strtoul(unitstr, &p, 10); - if (ul == ULONG_MAX || *p != '\0') + if (ul == ULONG_MAX) errx(1, "bad device unit: %s", unitstr); + if (*p != '\0') + mdsuffix = p; unit = ul; } @@ -424,8 +429,8 @@ do_mount(const char *args, const char *mtpoint) { int rv; - rv = run(NULL, "%s%s /dev/%s%d %s", _PATH_MOUNT, args, - mdname, unit, mtpoint); + rv = run(NULL, "%s%s /dev/%s%d%s %s", _PATH_MOUNT, args, + mdname, unit, mdsuffix, mtpoint); if (rv) errx(1, "mount exited with error code %d", rv); } -- cgit v1.1