GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
AG_USER(3) FreeBSD Library Functions Manual AG_USER(3)

AG_User
agar user account information interface

#include <agar/core.h>

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_posix
On Unix, use the system getpwent(3) interface.
agUserOps_win32
On Windows, use CSIDL to locate a preferred AppData directory, and return it in the home field. Also return 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.

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 user 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-specific way. To register or select a specific backend, AG_SetUserOps() may be used.

The argument to AG_SetUserOps() should point to the following structure:
typedef struct ag_user_ops {
	const char *name;                   /* Name for this backend */
	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;

init() performs any necessary initialization. destroy() cleans up any allocated resources.

On success, the query methods getUserByName(), getUserByUID(), getRealUser() and getEffectiveUser() should set the fields of the AG_User argument and return 0. On error, they should return -1.

AG_File(3), AG_Intro(3)

The AG_User interface first appeared in Agar 1.5.0
March 16, 2013 FreeBSD 13.1-RELEASE

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.