mirror of
https://github.com/systemd/systemd.git
synced 2025-01-25 10:04:04 +03:00
logind: use hashmap value destructors
This commit is contained in:
parent
36f9fadfe3
commit
2d7cbead01
@ -43,6 +43,13 @@
|
|||||||
static Manager* manager_free(Manager *m);
|
static Manager* manager_free(Manager *m);
|
||||||
DEFINE_TRIVIAL_CLEANUP_FUNC(Manager*, manager_free);
|
DEFINE_TRIVIAL_CLEANUP_FUNC(Manager*, manager_free);
|
||||||
|
|
||||||
|
DEFINE_PRIVATE_HASH_OPS_WITH_VALUE_DESTRUCTOR(device_hash_ops, char, string_hash_func, string_compare_func, Device, device_free);
|
||||||
|
DEFINE_PRIVATE_HASH_OPS_WITH_VALUE_DESTRUCTOR(seat_hash_ops, char, string_hash_func, string_compare_func, Seat, seat_free);
|
||||||
|
DEFINE_PRIVATE_HASH_OPS_WITH_VALUE_DESTRUCTOR(session_hash_ops, char, string_hash_func, string_compare_func, Session, session_free);
|
||||||
|
DEFINE_PRIVATE_HASH_OPS_WITH_VALUE_DESTRUCTOR(user_hash_ops, void, trivial_hash_func, trivial_compare_func, User, user_free);
|
||||||
|
DEFINE_PRIVATE_HASH_OPS_WITH_VALUE_DESTRUCTOR(inhibitor_hash_ops, char, string_hash_func, string_compare_func, Inhibitor, inhibitor_free);
|
||||||
|
DEFINE_PRIVATE_HASH_OPS_WITH_VALUE_DESTRUCTOR(button_hash_ops, char, string_hash_func, string_compare_func, Button, button_free);
|
||||||
|
|
||||||
static int manager_new(Manager **ret) {
|
static int manager_new(Manager **ret) {
|
||||||
_cleanup_(manager_freep) Manager *m = NULL;
|
_cleanup_(manager_freep) Manager *m = NULL;
|
||||||
int r;
|
int r;
|
||||||
@ -60,13 +67,13 @@ static int manager_new(Manager **ret) {
|
|||||||
.idle_action_not_before_usec = now(CLOCK_MONOTONIC),
|
.idle_action_not_before_usec = now(CLOCK_MONOTONIC),
|
||||||
};
|
};
|
||||||
|
|
||||||
m->devices = hashmap_new(&string_hash_ops);
|
m->devices = hashmap_new(&device_hash_ops);
|
||||||
m->seats = hashmap_new(&string_hash_ops);
|
m->seats = hashmap_new(&seat_hash_ops);
|
||||||
m->sessions = hashmap_new(&string_hash_ops);
|
m->sessions = hashmap_new(&session_hash_ops);
|
||||||
m->sessions_by_leader = hashmap_new(NULL);
|
m->sessions_by_leader = hashmap_new(NULL);
|
||||||
m->users = hashmap_new(NULL);
|
m->users = hashmap_new(&user_hash_ops);
|
||||||
m->inhibitors = hashmap_new(&string_hash_ops);
|
m->inhibitors = hashmap_new(&inhibitor_hash_ops);
|
||||||
m->buttons = hashmap_new(&string_hash_ops);
|
m->buttons = hashmap_new(&button_hash_ops);
|
||||||
|
|
||||||
m->user_units = hashmap_new(&string_hash_ops);
|
m->user_units = hashmap_new(&string_hash_ops);
|
||||||
m->session_units = hashmap_new(&string_hash_ops);
|
m->session_units = hashmap_new(&string_hash_ops);
|
||||||
@ -103,34 +110,9 @@ static int manager_new(Manager **ret) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static Manager* manager_free(Manager *m) {
|
static Manager* manager_free(Manager *m) {
|
||||||
Session *session;
|
|
||||||
User *u;
|
|
||||||
Device *d;
|
|
||||||
Seat *s;
|
|
||||||
Inhibitor *i;
|
|
||||||
Button *b;
|
|
||||||
|
|
||||||
if (!m)
|
if (!m)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
while ((session = hashmap_first(m->sessions)))
|
|
||||||
session_free(session);
|
|
||||||
|
|
||||||
while ((u = hashmap_first(m->users)))
|
|
||||||
user_free(u);
|
|
||||||
|
|
||||||
while ((d = hashmap_first(m->devices)))
|
|
||||||
device_free(d);
|
|
||||||
|
|
||||||
while ((s = hashmap_first(m->seats)))
|
|
||||||
seat_free(s);
|
|
||||||
|
|
||||||
while ((i = hashmap_first(m->inhibitors)))
|
|
||||||
inhibitor_free(i);
|
|
||||||
|
|
||||||
while ((b = hashmap_first(m->buttons)))
|
|
||||||
button_free(b);
|
|
||||||
|
|
||||||
hashmap_free(m->devices);
|
hashmap_free(m->devices);
|
||||||
hashmap_free(m->seats);
|
hashmap_free(m->seats);
|
||||||
hashmap_free(m->sessions);
|
hashmap_free(m->sessions);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user