From: Zbigniew Jędrzejewski-Szmek Date: Sat, 3 Dec 2016 18:57:42 +0000 (-0500) Subject: Modify mount_propagation_flags_from_string to return a normal int code X-Git-Tag: v233.3~133 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=36eeeaefcf062fe8096fe4e7ae61ea20450f9040 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. --- 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; +} diff --git a/src/basic/mount-util.h b/src/basic/mount-util.h index 57cfc3628..deaa77950 100644 --- a/src/basic/mount-util.h +++ b/src/basic/mount-util.h @@ -69,4 +69,4 @@ int umount_verbose(const char *where); #endif // 0 const char *mount_propagation_flags_to_string(unsigned long flags); -unsigned long mount_propagation_flags_from_string(const char *name); +int mount_propagation_flags_from_string(const char *name, unsigned long *ret);