This enables me to run 'fsysopts /dev/mach-console' and get:

/hurd/streamio --writable console
---
 trans/streamio.c | 39 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 39 insertions(+)

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;
-- 
2.40.1


Reply via email to