Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
AG_USER(3)		 BSD 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 di-
		       rectory,	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 ac-
     count 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.

     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

BSD				March 16, 2013				   BSD


Want to link to this manual page? Use this URL:

home | help