Files
Enrico Fraccaroli (Galfurian) 30e01ba560 Update version
2024-01-17 13:49:48 +01:00

56 lines
2.6 KiB
C

/// @file pwd.h
/// @brief Contains the structure and functions for managing passwords.
/// @copyright (c) 2014-2024 This file is distributed under the MIT License.
/// See LICENSE.md for details.
#pragma once
#include "stddef.h"
/// @brief Stores user account information.
typedef struct passwd_t {
char *pw_name; ///< User's login name.
char *pw_passwd; ///< Encrypted password (not currently).
uid_t pw_uid; ///< User ID.
gid_t pw_gid; ///< Group ID.
char *pw_gecos; ///< User's full name.
char *pw_dir; ///< User's login directory.
char *pw_shell; ///< User's login shell.
} passwd_t;
/// @brief Provides access to the password database entry for `name`.
/// @param name The name to search inside the database.
/// @return A pointer to the structure containing the database entry.
passwd_t *getpwnam(const char *name);
/// @brief Provides access to the password database entry for `uid`.
/// @param uid The uid to search inside the database.
/// @return A pointer to the structure containing the database entry.
passwd_t *getpwuid(uid_t uid);
/// @brief Provides the same information as getpwnam but it stores the
/// results inside pwd, and the string information are store store
/// inside `buf`.
/// @param name The name to search inside the database.
/// @param pwd The structure containing pointers to the entry fields.
/// @param buf The buffer where the strings should be stored.
/// @param buflen The lenght of the buffer.
/// @param result A pointer to the result or NULL is stored here.
/// @return If the entry was found returns zero and set *result to pwd,
/// if the entry was not found returns zero and set *result to NULL,
/// on failure returns a number and sets and set *result to NULL.
int getpwnam_r(const char *name, passwd_t *pwd, char *buf, size_t buflen, passwd_t **result);
/// @brief Provides the same information as getpwuid but it stores the
/// results inside pwd, and the string information are store store
/// inside `buf`.
/// @param uid The uid to search inside the database.
/// @param pwd The structure containing pointers to the entry fields.
/// @param buf The buffer where the strings should be stored.
/// @param buflen The lenght of the buffer.
/// @param result A pointer to the result or NULL is stored here.
/// @return If the entry was found returns zero and set *result to pwd,
/// if the entry was not found returns zero and set *result to NULL,
/// on failure returns a number and sets and set *result to NULL.
int getpwuid_r(uid_t uid, passwd_t *pwd, char *buf, size_t buflen, passwd_t **result);