add "rw" and "ro" option to nfsmount

diff --git a/nfsmount/main.c b/nfsmount/main.c
index a9a38c7..537880a 100644
--- a/nfsmount/main.c
+++ b/nfsmount/main.c
@@ -75,6 +75,8 @@
 	{ "udp",	~NFS_MOUNT_TCP,		0 },
 	{ "tcp",	~NFS_MOUNT_TCP,		NFS_MOUNT_TCP },
 	{ "broken_suid",~NFS_MOUNT_BROKEN_SUID,	NFS_MOUNT_BROKEN_SUID },
+	{ "ro",		~NFS_MOUNT_KLIBC_RONLY, NFS_MOUNT_KLIBC_RONLY },
+	{ "rw",		~NFS_MOUNT_KLIBC_RONLY,	0 },
 	{ NULL,		0,			0 }
 };
 
diff --git a/nfsmount/mount.c b/nfsmount/mount.c
index 909e254..7f7f25b 100644
--- a/nfsmount/mount.c
+++ b/nfsmount/mount.c
@@ -247,6 +247,7 @@
 	char mounted = 0;
 	int sock = -1;
 	int ret = 0;
+	int mountflags;
 
 	get_ports(server, data);
 
@@ -298,7 +299,9 @@
 
 	data->fd = sock;
 
-	ret = mount(pathname, path, "nfs", 0, data);
+	mountflags = (data->flags & NFS_MOUNT_KLIBC_RONLY) ? MS_RDONLY : 0;
+	data->flags = data->flags & NFS_MOUNT_FLAGMASK;
+	ret = mount(pathname, path, "nfs", mountflags, data);
 
 	if (ret == -1) {
 		perror("mount");
diff --git a/nfsmount/nfsmount.h b/nfsmount/nfsmount.h
index 8a9eb41..d30e98a 100644
--- a/nfsmount/nfsmount.h
+++ b/nfsmount/nfsmount.h
@@ -16,6 +16,8 @@
 	v3,
 };
 
+/* masked with NFS_MOUNT_FLAGMASK before mount() call */
+#define NFS_MOUNT_KLIBC_RONLY	0x00010000U
 /*
  * Note for gcc 3.2.2:
  *