summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2017-09-26 08:48:22 +0200
committerThomas Haller <thaller@redhat.com>2017-10-05 11:50:31 +0200
commita2dcdbe042961eef6f0b53894768bb3a83d7d478 (patch)
tree7d608e31020f51e3af6d04972b2bc68bc359a42a
parent5dd6fcb970ebea5f9c1b986735b8adc75f34c2a6 (diff)
downloadNetworkManager-a2dcdbe042961eef6f0b53894768bb3a83d7d478.tar.gz
core/utils: extend nm_utils_flags2str() for multi-value flags and name for zero
Allow passing a pretty name for the zero flag 0, like "none". Also, don't require flags to be power-of-two. Instead, allow names for multiple flags. For example an "all" name. By specifying multi-value flags first, their nick will be supersede the more specific flags. Probably it doesn't make sense in usual cases, but nm_utils_flags2str() should prevent such use.
-rw-r--r--src/nm-core-utils.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/nm-core-utils.c b/src/nm-core-utils.c
index 88614278f1..3fb843af8f 100644
--- a/src/nm-core-utils.c
+++ b/src/nm-core-utils.c
@@ -1869,7 +1869,6 @@ nm_utils_flags2str (const NMUtilsFlags2StrDesc *descs,
for (i = 0; i < n_descs; i++) {
gsize j;
- nm_assert (descs[i].flag && nm_utils_is_power_of_two (descs[i].flag));
nm_assert (descs[i].name && descs[i].name[0]);
for (j = 0; j < i; j++)
nm_assert (descs[j].flag != descs[i].flag);
@@ -1882,13 +1881,20 @@ nm_utils_flags2str (const NMUtilsFlags2StrDesc *descs,
return buf;
buf[0] = '\0';
+ p = buf;
if (!flags) {
+ for (i = 0; i < n_descs; i++) {
+ if (!descs[i].flag) {
+ nm_utils_strbuf_append_str (&p, &len, descs[i].name);
+ break;
+ }
+ }
return buf;
}
- p = buf;
for (i = 0; flags && i < n_descs; i++) {
- if (NM_FLAGS_HAS (flags, descs[i].flag)) {
+ if ( descs[i].flag
+ && NM_FLAGS_ALL (flags, descs[i].flag)) {
flags &= ~descs[i].flag;
if (buf[0] != '\0')