diff options
author | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2016-12-03 13:57:42 -0500 |
---|---|---|
committer | Sven Eden <yamakuzure@gmx.net> | 2017-07-17 17:58:35 +0200 |
commit | 36eeeaefcf062fe8096fe4e7ae61ea20450f9040 (patch) | |
tree | ab2b3478f2670a75956132ceb912840a07163d76 /src/basic/mount-util.c | |
parent | f25c1757c11b5642fbb4a38f1ed7fbeef5bb3c1f (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.c | 32 |
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; +} |