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:
*