xaccess: Rework from boolean into a list of tags (#40645)
Fixes: #40634
This commit is contained in:
@@ -1088,5 +1088,5 @@ global:
|
||||
|
||||
LIBSYSTEMD_260 {
|
||||
global:
|
||||
sd_session_has_extra_device_access;
|
||||
sd_session_get_extra_device_access;
|
||||
} LIBSYSTEMD_259;
|
||||
|
||||
@@ -264,6 +264,8 @@ enum {
|
||||
SD_JSON_BUILD_PAIR_CONDITION(condition, name, SD_JSON_BUILD_UNSIGNED(value))
|
||||
#define JSON_BUILD_PAIR_CONDITION_BOOLEAN(condition, name, value) \
|
||||
SD_JSON_BUILD_PAIR_CONDITION(condition, name, SD_JSON_BUILD_BOOLEAN(value))
|
||||
#define JSON_BUILD_PAIR_CONDITION_STRV(condition, name, value) \
|
||||
SD_JSON_BUILD_PAIR_CONDITION(condition, name, SD_JSON_BUILD_STRV(value))
|
||||
|
||||
int json_variant_new_pidref(sd_json_variant **ret, PidRef *pidref);
|
||||
int json_variant_new_devnum(sd_json_variant **ret, dev_t devnum);
|
||||
|
||||
@@ -677,7 +677,7 @@ _public_ int sd_session_is_remote(const char *session) {
|
||||
return parse_boolean(s);
|
||||
}
|
||||
|
||||
_public_ int sd_session_has_extra_device_access(const char *session) {
|
||||
_public_ int sd_session_get_extra_device_access(const char *session, char ***ret_ids) {
|
||||
_cleanup_free_ char *p = NULL, *s = NULL;
|
||||
int r;
|
||||
|
||||
@@ -690,10 +690,21 @@ _public_ int sd_session_has_extra_device_access(const char *session) {
|
||||
return -ENXIO;
|
||||
if (r < 0)
|
||||
return r;
|
||||
if (isempty(s))
|
||||
return -ENODATA;
|
||||
|
||||
return parse_boolean(s);
|
||||
_cleanup_strv_free_ char **ids = NULL;
|
||||
size_t n_ids = 0;
|
||||
if (!isempty(s)) {
|
||||
ids = strv_split(s, /* separators= */ NULL);
|
||||
if (!ids)
|
||||
return -ENOMEM;
|
||||
|
||||
n_ids = strv_length(ids);
|
||||
}
|
||||
|
||||
if (ret_ids)
|
||||
*ret_ids = TAKE_PTR(ids);
|
||||
|
||||
return n_ids;
|
||||
}
|
||||
|
||||
_public_ int sd_session_get_state(const char *session, char **ret_state) {
|
||||
|
||||
Reference in New Issue
Block a user