summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--trans/streamio.c39
1 files changed, 39 insertions, 0 deletions
diff --git a/trans/streamio.c b/trans/streamio.c
index 2d40a5d3..272a002c 100644
--- a/trans/streamio.c
+++ b/trans/streamio.c
@@ -23,7 +23,9 @@
#include <stdio.h>
#include <fcntl.h>
#include <argp.h>
+#include <argz.h>
#include <error.h>
+#include <sys/sysmacros.h>
#include <mach.h>
#include <device/device.h>
@@ -722,6 +724,43 @@ trivfs_S_file_syncfs (struct trivfs_protid *cred,
return err;
}
+error_t
+trivfs_append_args (struct trivfs_control *fsys,
+ char **argz, size_t *argz_len)
+{
+ error_t err;
+
+ switch (trivfs_allow_open & O_RDWR)
+ {
+ default:
+ assert_backtrace (!"Bad trivfs_allow_open");
+ case O_READ:
+ err = argz_add (argz, argz_len, "--readonly");
+ break;
+ case O_WRITE:
+ err = argz_add (argz, argz_len, "--writeonly");
+ break;
+ case O_RDWR:
+ err = argz_add (argz, argz_len, "--writable");
+ break;
+ }
+
+ if (err)
+ return err;
+
+ if (rdev != (dev_t) 0)
+ {
+ char buf[40];
+ snprintf (buf, sizeof (buf), "--rdev=%d,%d",
+ gnu_dev_major (rdev), gnu_dev_minor (rdev));
+ err = argz_add (argz, argz_len, buf);
+ if (err)
+ return err;
+ }
+
+ return argz_add (argz, argz_len, stream_name);
+}
+
/* This flag is set if there is an outstanding device_write. */
static int output_pending;