diff options
author | Thomas Haller <thaller@redhat.com> | 2016-01-18 12:46:07 +0100 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2016-01-18 13:10:18 +0100 |
commit | 1d15d8c3ef9fa44ec05681fb15f249e628bde367 (patch) | |
tree | 4c1b2b46f8301ff0a3bfe86bba21c29b5f6b1828 /src/NetworkManagerUtils.c | |
parent | 94fabafc1ad7ce4ae711ef4a9e0b0ff807e66692 (diff) | |
download | NetworkManager-1d15d8c3ef9fa44ec05681fb15f249e628bde367.tar.gz |
core: add nm_utils_enum2str()
Diffstat (limited to 'src/NetworkManagerUtils.c')
-rw-r--r-- | src/NetworkManagerUtils.c | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/src/NetworkManagerUtils.c b/src/NetworkManagerUtils.c index a117d4280d..fb680d96d5 100644 --- a/src/NetworkManagerUtils.c +++ b/src/NetworkManagerUtils.c @@ -1880,6 +1880,45 @@ nm_utils_flags2str (const NMUtilsFlags2StrDesc *descs, /*****************************************************************************/ +const char * +nm_utils_enum2str (const NMUtilsEnum2StrDesc *descs, + gsize n_descs, + int val, + char *buf, + gsize len) +{ + gsize i; + +#if NM_MORE_ASSERTS > 10 + nm_assert (descs); + nm_assert (n_descs > 0); + for (i = 0; i < n_descs; i++) { + gsize j; + + nm_assert (descs[i].name && descs[i].name[0]); + for (j = 0; j < i; j++) + nm_assert (descs[j].value != descs[i].value); + } +#endif + + nm_utils_to_string_buffer_init (&buf, &len); + + if (!len) + return buf; + + for (i = 0; i < n_descs; i++) { + if (val == descs[i].value) { + g_strlcpy (buf, descs[i].name, len); + return buf; + } + } + + g_snprintf (buf, len, "(%d)", val); + return buf; +}; + +/*****************************************************************************/ + /** * nm_utils_get_shared_wifi_permission: * @connection: the NMConnection to lookup the permission. |