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.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek
2016-12-17 13:57:04 -05:00
parent 117d5a27a3
commit c73838280c
6 changed files with 44 additions and 46 deletions
+13 -13
View File
@@ -693,13 +693,12 @@ int umount_verbose(const char *what) {
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";
}
@@ -707,17 +706,18 @@ const char *mount_propagation_flags_to_string(unsigned long flags) {
return NULL;
}
unsigned long mount_propagation_flags_from_string(const char *name) {
int mount_propagation_flags_from_string(const char *name, unsigned long *ret) {
if (isempty(name))
return 0;
if (streq(name, "shared"))
return MS_SHARED;
if (streq(name, "slave"))
return MS_SLAVE;
if (streq(name, "private"))
return MS_PRIVATE;
*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;
}
+1 -1
View File
@@ -63,4 +63,4 @@ int mount_verbose(
int umount_verbose(const char *where);
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);