diff options
Diffstat (limited to 'dbus')
-rw-r--r-- | dbus/dbus-hash.c | 16 | ||||
-rw-r--r-- | dbus/dbus-hash.h | 1 | ||||
-rw-r--r-- | dbus/dbus-userdb.c | 12 | ||||
-rw-r--r-- | dbus/dbus-userdb.h | 1 |
4 files changed, 30 insertions, 0 deletions
diff --git a/dbus/dbus-hash.c b/dbus/dbus-hash.c index fa2104b3..8eca2bd8 100644 --- a/dbus/dbus-hash.c +++ b/dbus/dbus-hash.c @@ -422,6 +422,22 @@ _dbus_hash_table_unref (DBusHashTable *table) } } +/** + * Removed all entries from a hash table. + * + * @param table the hash table to remove all entries from. + */ +void +_dbus_hash_table_remove_all (DBusHashTable *table) +{ + DBusHashIter iter; + _dbus_hash_iter_init (table, &iter); + while (_dbus_hash_iter_next (&iter)) + { + _dbus_hash_iter_remove_entry(&iter); + } +} + static DBusHashEntry* alloc_entry (DBusHashTable *table) { diff --git a/dbus/dbus-hash.h b/dbus/dbus-hash.h index 7db06f0c..3eb82d04 100644 --- a/dbus/dbus-hash.h +++ b/dbus/dbus-hash.h @@ -63,6 +63,7 @@ DBusHashTable* _dbus_hash_table_new (DBusHashType type, DBusFreeFunction value_free_function); DBusHashTable* _dbus_hash_table_ref (DBusHashTable *table); void _dbus_hash_table_unref (DBusHashTable *table); +void _dbus_hash_table_remove_all (DBusHashTable *table); void _dbus_hash_iter_init (DBusHashTable *table, DBusHashIter *iter); dbus_bool_t _dbus_hash_iter_next (DBusHashIter *iter); diff --git a/dbus/dbus-userdb.c b/dbus/dbus-userdb.c index 9efc4653..17ce47d3 100644 --- a/dbus/dbus-userdb.c +++ b/dbus/dbus-userdb.c @@ -476,6 +476,18 @@ _dbus_user_database_new (void) return NULL; } +/** + * Flush all information out of the user database. + */ +void +_dbus_user_database_flush (DBusUserDatabase *db) +{ + _dbus_hash_table_remove_all(db->users_by_name); + _dbus_hash_table_remove_all(db->groups_by_name); + _dbus_hash_table_remove_all(db->users); + _dbus_hash_table_remove_all(db->groups); +} + #ifdef DBUS_BUILD_TESTS /** * Increments refcount of user database. diff --git a/dbus/dbus-userdb.h b/dbus/dbus-userdb.h index 7e033b41..906c6ab3 100644 --- a/dbus/dbus-userdb.h +++ b/dbus/dbus-userdb.h @@ -51,6 +51,7 @@ struct DBusUserDatabase DBusUserDatabase* _dbus_user_database_new (void); DBusUserDatabase* _dbus_user_database_ref (DBusUserDatabase *db); +void _dbus_user_database_flush (DBusUserDatabase *db); void _dbus_user_database_unref (DBusUserDatabase *db); dbus_bool_t _dbus_user_database_get_groups (DBusUserDatabase *db, dbus_uid_t uid, |