mirror of
https://github.com/systemd/systemd.git
synced 2026-08-04 23:20:32 +00:00
core: Introduce unit_is_filtered()
This commit is contained in:
@@ -1218,14 +1218,7 @@ static int list_units_filtered(sd_bus_message *message, void *userdata, sd_bus_e
|
||||
if (k != u->id)
|
||||
continue;
|
||||
|
||||
if (!strv_isempty(states) &&
|
||||
!strv_contains(states, unit_load_state_to_string(u->load_state)) &&
|
||||
!strv_contains(states, unit_active_state_to_string(unit_active_state(u))) &&
|
||||
!strv_contains(states, unit_sub_state_to_string(u)))
|
||||
continue;
|
||||
|
||||
if (!strv_isempty(patterns) &&
|
||||
!strv_fnmatch_or_empty(patterns, u->id, FNM_NOESCAPE))
|
||||
if (unit_is_filtered(u, states, patterns))
|
||||
continue;
|
||||
|
||||
r = reply_unit_info(reply, u);
|
||||
|
||||
@@ -6470,6 +6470,22 @@ int unit_arm_timer(
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool unit_is_filtered(Unit *u, char *const *states, char *const *patterns) {
|
||||
assert(u);
|
||||
|
||||
if (!strv_isempty(states)) {
|
||||
char *const *unit_states = STRV_MAKE(
|
||||
unit_load_state_to_string(u->load_state),
|
||||
unit_active_state_to_string(unit_active_state(u)),
|
||||
unit_sub_state_to_string(u));
|
||||
|
||||
if (!strv_overlap(states, unit_states))
|
||||
return true;
|
||||
}
|
||||
|
||||
return !strv_isempty(patterns) && !strv_fnmatch_or_empty(patterns, u->id, FNM_NOESCAPE);
|
||||
}
|
||||
|
||||
static int unit_get_nice(Unit *u) {
|
||||
ExecContext *ec;
|
||||
|
||||
|
||||
@@ -1043,6 +1043,8 @@ Condition *unit_find_failed_condition(Unit *u);
|
||||
|
||||
int unit_arm_timer(Unit *u, sd_event_source **source, bool relative, usec_t usec, sd_event_time_handler_t handler);
|
||||
|
||||
bool unit_is_filtered(Unit *u, char *const *states, char *const *patterns);
|
||||
|
||||
int unit_compare_priority(Unit *a, Unit *b);
|
||||
|
||||
UnitMountDependencyType unit_mount_dependency_type_from_string(const char *s) _const_;
|
||||
|
||||
Reference in New Issue
Block a user