dbus-userdb.h revision 6eab51411982fc61c193caed388608c4f2bd25d1
1/* -*- mode: C; c-file-style: "gnu" -*- */ 2/* dbus-userdb.h User database abstraction 3 * 4 * Copyright (C) 2003 Red Hat, Inc. 5 * 6 * Licensed under the Academic Free License version 2.1 7 * 8 * This program is free software; you can redistribute it and/or modify 9 * it under the terms of the GNU General Public License as published by 10 * the Free Software Foundation; either version 2 of the License, or 11 * (at your option) any later version. 12 * 13 * This program is distributed in the hope that it will be useful, 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 * GNU General Public License for more details. 17 * 18 * You should have received a copy of the GNU General Public License 19 * along with this program; if not, write to the Free Software 20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 21 * 22 */ 23 24#ifndef DBUS_USERDB_H 25#define DBUS_USERDB_H 26 27#include <dbus/dbus-sysdeps.h> 28 29DBUS_BEGIN_DECLS 30 31typedef struct DBusUserDatabase DBusUserDatabase; 32 33#ifdef DBUS_USERDB_INCLUDES_PRIVATE 34#include <dbus/dbus-hash.h> 35 36/** 37 * Internals of DBusUserDatabase 38 */ 39struct DBusUserDatabase 40{ 41 int refcount; /**< Reference count */ 42 43 DBusHashTable *users; /**< Users in the database by UID */ 44 DBusHashTable *groups; /**< Groups in the database by GID */ 45 DBusHashTable *users_by_name; /**< Users in the database by name */ 46 DBusHashTable *groups_by_name; /**< Groups in the database by name */ 47 48}; 49 50#endif /* DBUS_USERDB_INCLUDES_PRIVATE */ 51 52DBusUserDatabase* _dbus_user_database_new (void); 53DBusUserDatabase* _dbus_user_database_ref (DBusUserDatabase *db); 54void _dbus_user_database_unref (DBusUserDatabase *db); 55dbus_bool_t _dbus_user_database_get_groups (DBusUserDatabase *db, 56 dbus_uid_t uid, 57 dbus_gid_t **group_ids, 58 int *n_group_ids, 59 DBusError *error); 60dbus_bool_t _dbus_user_database_get_uid (DBusUserDatabase *db, 61 dbus_uid_t uid, 62 const DBusUserInfo **info, 63 DBusError *error); 64dbus_bool_t _dbus_user_database_get_gid (DBusUserDatabase *db, 65 dbus_gid_t gid, 66 const DBusGroupInfo **info, 67 DBusError *error); 68dbus_bool_t _dbus_user_database_get_username (DBusUserDatabase *db, 69 const DBusString *username, 70 const DBusUserInfo **info, 71 DBusError *error); 72dbus_bool_t _dbus_user_database_get_groupname (DBusUserDatabase *db, 73 const DBusString *groupname, 74 const DBusGroupInfo **info, 75 DBusError *error); 76 77#ifdef DBUS_USERDB_INCLUDES_PRIVATE 78DBusUserInfo* _dbus_user_database_lookup (DBusUserDatabase *db, 79 dbus_uid_t uid, 80 const DBusString *username, 81 DBusError *error); 82DBusGroupInfo* _dbus_user_database_lookup_group (DBusUserDatabase *db, 83 dbus_gid_t gid, 84 const DBusString *groupname, 85 DBusError *error); 86void _dbus_user_info_free_allocated (DBusUserInfo *info); 87void _dbus_group_info_free_allocated (DBusGroupInfo *info); 88#endif /* DBUS_USERDB_INCLUDES_PRIVATE */ 89 90DBusUserDatabase* _dbus_user_database_get_system (void); 91void _dbus_user_database_lock_system (void); 92void _dbus_user_database_unlock_system (void); 93 94dbus_bool_t _dbus_username_from_current_process (const DBusString **username); 95dbus_bool_t _dbus_homedir_from_current_process (const DBusString **homedir); 96dbus_bool_t _dbus_homedir_from_username (const DBusString *username, 97 DBusString *homedir); 98dbus_bool_t _dbus_get_user_id (const DBusString *username, 99 dbus_uid_t *uid); 100dbus_bool_t _dbus_get_group_id (const DBusString *group_name, 101 dbus_gid_t *gid); 102dbus_bool_t _dbus_credentials_from_username (const DBusString *username, 103 DBusCredentials *credentials); 104dbus_bool_t _dbus_credentials_from_uid (dbus_uid_t user_id, 105 DBusCredentials *credentials); 106dbus_bool_t _dbus_is_console_user (dbus_uid_t uid, 107 DBusError *error); 108 109dbus_bool_t _dbus_is_a_number (const DBusString *str, 110 unsigned long *num); 111 112 113DBUS_END_DECLS 114 115#endif /* DBUS_USERDB_H */ 116