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:
+13
-13
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user