summaryrefslogtreecommitdiff
path: root/src/basic/mount-util.c
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2016-12-03 13:57:42 -0500
committerSven Eden <yamakuzure@gmx.net>2017-07-17 17:58:35 +0200
commit36eeeaefcf062fe8096fe4e7ae61ea20450f9040 (patch)
treeab2b3478f2670a75956132ceb912840a07163d76 /src/basic/mount-util.c
parentf25c1757c11b5642fbb4a38f1ed7fbeef5bb3c1f (diff)
Modify mount_propagation_flags_from_string to return a normal int code
This means that callers can distiguish an error from flags==0, and don't have to special-case the empty string.
Diffstat (limited to 'src/basic/mount-util.c')
-rw-r--r--src/basic/mount-util.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/basic/mount-util.c b/src/basic/mount-util.c
index d757abad9..f99a543ec 100644
--- a/src/basic/mount-util.c
+++ b/src/basic/mount-util.c
@@ -691,3 +691,35 @@ int umount_verbose(const char *what) {
return 0;
}
#endif // 0
+
+const char *mount_propagation_flags_to_string(unsigned long flags) {
+
+ switch (flags & (MS_SHARED|MS_SLAVE|MS_PRIVATE)) {
+ case 0:
+ return "";
+ case MS_SHARED:
+ return "shared";
+ case MS_SLAVE:
+ return "slave";
+ case MS_PRIVATE:
+ return "private";
+ }
+
+ return NULL;
+}
+
+
+int mount_propagation_flags_from_string(const char *name, unsigned long *ret) {
+
+ if (isempty(name))
+ *ret = 0;
+ else if (streq(name, "shared"))
+ *ret = MS_SHARED;
+ else if (streq(name, "slave"))
+ *ret = MS_SLAVE;
+ else if (streq(name, "private"))
+ *ret = MS_PRIVATE;
+ else
+ return -EINVAL;
+ return 0;
+}