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

FreeBSD Manual Pages

  
 
  

home | help
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)

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>

home | help