nsflags: namespace_flags_to_strv()

This commit is contained in:
Ivan Kruglov
2025-10-16 03:26:39 -07:00
parent 0033d937c7
commit 115083886a
2 changed files with 27 additions and 3 deletions
+26 -3
View File
@@ -5,6 +5,7 @@
#include "namespace-util.h"
#include "nsflags.h"
#include "string-util.h"
#include "strv.h"
int namespace_flags_from_string(const char *name, unsigned long *ret) {
unsigned long flags = 0;
@@ -40,19 +41,41 @@ int namespace_flags_from_string(const char *name, unsigned long *ret) {
}
int namespace_flags_to_string(unsigned long flags, char **ret) {
_cleanup_strv_free_ char **l = NULL;
_cleanup_free_ char *s = NULL;
int r;
assert(ret);
r = namespace_flags_to_strv(flags, &l);
if (r < 0)
return r;
s = strv_join(l, NULL);
if (!s)
return -ENOMEM;
*ret = TAKE_PTR(s);
return 0;
}
int namespace_flags_to_strv(unsigned long flags, char ***ret) {
_cleanup_strv_free_ char **s = NULL;
unsigned i;
int r;
assert(ret);
for (i = 0; namespace_info[i].proc_name; i++) {
if ((flags & namespace_info[i].clone_flag) != namespace_info[i].clone_flag)
continue;
if (!strextend_with_separator(&s, " ", namespace_info[i].proc_name))
return -ENOMEM;
r = strv_extend(&s, namespace_info[i].proc_name);
if (r < 0)
return r;
}
*ret = TAKE_PTR(s);
return 0;
}
+1
View File
@@ -23,4 +23,5 @@
int namespace_flags_from_string(const char *name, unsigned long *ret);
int namespace_flags_to_string(unsigned long flags, char **ret);
int namespace_flags_to_strv(unsigned long flags, char ***ret);
const char* namespace_single_flag_to_string(unsigned long flag) _const_;