FreeBSD Manual Pages
AG_USER(3) Library Functions Manual AG_USER(3) NAME AG_User -- agar user account information interface SYNOPSIS #include <agar/core.h> DESCRIPTION AG_User provides a cross-platform method for accessing information about user accounts. Different backends may be implemented (see "INTERNAL API" below). Agar provides the following backends: agUserOps_dummy No-op, returns no useful information. agUserOps_getenv Use the USER, UID, EUID, HOME and (optional) TMPDIR environment variables. Only USER can be queried. agUserOps_posix On Unix, use getpwent(3) or getpwnam_r(3). Since ac- cessing the password database incurs startup over- head, "getenv" is the default (unless AG_InitCore(3) was called with the AG_POSIX_USERS flag option). agUserOps_win32 On Windows, use CSIDL to locate a preferred AppData directory, and return it in the home field. Also re- turn the preferred temporary directory in the tmp field. Other fields will contain no useful data. agUserOps_xbox On the Xbox console, check which drives are mounted and use either T:\ or D:\ as home. INTERFACE AG_UserNew * AG_UserNew(void) AG_User * AG_GetUserByName(const char *name) AG_User * AG_GetUserByUID(Uint32 uid) AG_User * AG_GetRealUser(void) AG_User * AG_GetEffectiveUser(void) void AG_UserFree(AG_User *) void AG_SetUserOps(const AG_UserOps *ops) The AG_UserNew() function returns a newly-allocated AG_User structure. This structure is defined as: typedef struct ag_user { char name[AG_USER_NAME_MAX]; /* User name */ Uint flags; #define AG_USER_NO_ACCOUNT 0x01 /* Not a real account */ char *passwd; /* Encrypted password */ Uint32 uid; /* User ID */ Uint32 gid; /* Group ID */ char *loginClass; /* Login class */ char *gecos; /* Honeywell login info */ char *home; /* Home directory */ char *shell; /* Default shell */ char *tmp; /* Temp. directory */ AG_TAILQ_ENTRY(ag_user) users; } AG_User; The AG_GetUserByName() and AG_GetUserByUID() functions look up a user account by name string, or numerical identifier. The AG_GetRealUser() and AG_GetEffectiveUser() functions return account information for the user corresponding to the real or effective UID of the calling process (if available). The AG_UserFree() routine releases the specified AG_User structure. The AG_User backend in use by default is determined in a platform-spe- cific way. To register or select a specific backend, AG_SetUserOps() may be used. BACKEND INTERFACE The argument to AG_SetUserOps() should point to the following struc- ture: typedef struct ag_user_ops { const char *name; /* Backend name */ void (*init)(void); void (*destroy)(void); int (*getUserByName)(AG_User *, const char *); int (*getUserByUID)(AG_User *, Uint32); int (*getRealUser)(AG_User *); int (*getEffectiveUser)(AG_User *); } AG_UserOps; The init() method performs any necessary initialization. The destroy() method cleans up any allocated resources. On success the getUserByName(), getUserByUID(), getRealUser() and getEffectiveUser() methods should set the fields of the AG_User argu- ment and return 0. On error, they should return -1. SEE ALSO AG_File(3), AG_Intro(3) HISTORY The AG_User interface first appeared in Agar 1.5.0. The "getenv" mod- ule was added in Agar 1.6.0. Agar 1.7 December 21, 2022 AG_USER(3)
NAME | SYNOPSIS | DESCRIPTION | INTERFACE | BACKEND INTERFACE | SEE ALSO | HISTORY
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=AG_User&sektion=3&manpath=FreeBSD+Ports+14.3.quarterly>
