entity

entity — Functions for manipulating lu_ent structures.

Functions

Types and Values

struct lu_ent
typedef lu_ent_t
#define LU_USERNAME
#define LU_USERPASSWORD
#define LU_UIDNUMBER
#define LU_GIDNUMBER
#define LU_GECOS
#define LU_HOMEDIRECTORY
#define LU_LOGINSHELL
#define LU_GROUPNAME
#define LU_GROUPPASSWORD
#define LU_MEMBERNAME
#define LU_ADMINISTRATORNAME
#define LU_SHADOWNAME
#define LU_SHADOWPASSWORD
#define LU_SHADOWLASTCHANGE
#define LU_SHADOWMIN
#define LU_SHADOWMAX
#define LU_SHADOWWARNING
#define LU_SHADOWINACTIVE
#define LU_SHADOWEXPIRE
#define LU_SHADOWFLAG
#define LU_COMMONNAME
#define LU_GIVENNAME
#define LU_SN
#define LU_ROOMNUMBER
#define LU_TELEPHONENUMBER
#define LU_HOMEPHONE
#define LU_EMAIL

Includes

#include <libuser/error.h>

Description

entity.h declares functions for manipulating lu_ent structures, which are used by libuser, its modules, and applications to hold data about a particular user or group account.

Functions

lu_ent_new ()

struct lu_ent *
lu_ent_new (void);

Creates a new, empty struct lu_ent.

Returns

The created entity, which should be deallocated by lu_ent_free()


lu_ent_free ()

void
lu_ent_free (struct lu_ent *ent);

Frees an struct lu_ent, including all strings it owns.

Parameters

ent

The entity to free

 

lu_ent_copy ()

void
lu_ent_copy (struct lu_ent *source,
             struct lu_ent *dest);

Copies one struct lu_ent over another.

Parameters

source

The entity to copy

 

dest

The destination space, must be already allocated by lu_ent_new()

 

lu_ent_commit ()

void
lu_ent_commit (struct lu_ent *ent);

Sets pending attribute changes as current values of the entity.

Parameters

ent

An entity

 

lu_ent_revert ()

void
lu_ent_revert (struct lu_ent *ent);

Replaces all attributes with changes pending by their current values, forgetting the pending changes.

Parameters

ent

an entity

 

lu_ent_add ()

void
lu_ent_add (struct lu_ent *ent,
            const char *attr,
            const GValue *value);

Appends value to pending attribute attr in a struct lu_ent if value is not yet in the list of attr values.

Parameters

ent

An entity

 

attr

Attribute name

 

value

New attribute value

 

lu_ent_add_current ()

void
lu_ent_add_current (struct lu_ent *ent,
                    const char *attr,
                    const GValue *value);

Appends value to current attribute attr in a struct lu_ent if value is not yet in the list of attr values.

Parameters

ent

An entity

 

attr

Attribute name

 

value

New attribute value

 

lu_ent_clear ()

void
lu_ent_clear (struct lu_ent *ent,
              const char *attr);

Removes all values of pending attribute attribute from a struct lu_ent.

Parameters

ent

An entity

 

attr

Attribute name

 

lu_ent_clear_all ()

void
lu_ent_clear_all (struct lu_ent *ent);

Removes all pending attributes from a struct lu_ent.

Parameters

ent

an entity

 

lu_ent_clear_all_current ()

void
lu_ent_clear_all_current (struct lu_ent *ent);

Removes all current attributes from a struct lu_ent.

Parameters

ent

an entity

 

lu_ent_clear_current ()

void
lu_ent_clear_current (struct lu_ent *ent,
                      const char *attr);

Removes all values of current attribute attribute from a struct lu_ent.

Parameters

ent

An entity

 

attr

Attribute name

 

lu_ent_del ()

void
lu_ent_del (struct lu_ent *ent,
            const char *attr,
            const GValue *value);

Removes a pending attribute attr value value from a struct lu_ent, if present.

Parameters

ent

An entity

 

attr

Attribute name

 

value

Attribute value

 

lu_ent_del_current ()

void
lu_ent_del_current (struct lu_ent *ent,
                    const char *attr,
                    const GValue *value);

Removes a current attribute attr value value from a struct lu_ent, if present.

Parameters

ent

An entity

 

attr

Attribute name

 

value

Attribute value

 

lu_ent_dump ()

void
lu_ent_dump (struct lu_ent *ent,
             FILE *fp);

Dumps a struct lu_ent to a file in text form, for debugging.

Parameters

ent

The entity to dump

 

fp

Destination file

 

lu_ent_get ()

GValueArray *
lu_ent_get (struct lu_ent *ent,
            const char *attribute);

Returns values associated with a pending attribute in a struct lu_ent.

Parameters

ent

An entity

 

attribute

Attribute name

 

Returns

a GValueArray of values, valid at least until they are modified or deleted. The array is never empty and it should not be freed by the caller. Returns NULL if the attribute is not present at all or on error.


lu_ent_get_first_string ()

const char *
lu_ent_get_first_string (struct lu_ent *ent,
                         const char *attribute);

Returns the first string associated with a pending attribute in a struct lu_ent.

Parameters

ent

An entity

 

attribute

Attribute name

 

Returns

a string pointer valid at least the value is modified or deleted if the attribute is present and the first value is a string. Returns NULL if the attribute is not present, the first value is not a string, or on error.


lu_ent_get_first_string_current ()

const char *
lu_ent_get_first_string_current (struct lu_ent *ent,
                                 const char *attribute);

Returns the first string associated with a current attribute in a struct lu_ent.

Parameters

ent

An entity

 

attribute

Attribute name

 

Returns

a string pointer valid at least the value is modified or deleted if the attribute is present and the first value is a string. Returns NULL if the attribute is not present, the first value is not a string, or on error.


lu_ent_get_first_value_strdup ()

char *
lu_ent_get_first_value_strdup (struct lu_ent *ent,
                               const char *attribute);

Returns a string representation (as if by lu_value_strdup()) of the first value associated with a pending attribute in a struct lu_ent.

Parameters

ent

An entity

 

attribute

Attribute name

 

Returns

a string, should be freed by g_free() if the attribute is present. Returns NULL if the attribute is not present or on error.


lu_ent_get_first_value_strdup_current ()

char *
lu_ent_get_first_value_strdup_current (struct lu_ent *ent,
                                       const char *attribute);

Returns a string representation (as if by lu_value_strdup()) of the first value associated with a current attribute in a struct lu_ent.

Parameters

ent

An entity

 

attribute

Attribute name

 

Returns

a string, should be freed by g_free() if the attribute is present. Returns NULL if the attribute is not present or on error.


lu_ent_get_first_id ()

id_t
lu_ent_get_first_id (struct lu_ent *ent,
                     const char *attribute);

Returns the first id_t value associated with a pending attribute in a struct lu_ent.

Parameters

ent

An entity

 

attribute

Attribute name

 

Returns

ID value the attribute is present and can be converted into id_t. Returns LU_VALUE_INVALID_ID if the attribute is not present, the first value cannot be converted, or on error.


lu_ent_get_first_id_current ()

id_t
lu_ent_get_first_id_current (struct lu_ent *ent,
                             const char *attribute);

Returns the first id_t value associated with a current attribute in a struct lu_ent.

Parameters

ent

An entity

 

attribute

Attribute name

 

Returns

ID value the attribute is present and can be converted into id_t. Returns LU_VALUE_INVALID_ID if the attribute is not present, the first value cannot be converted, or on error.


lu_ent_get_attributes ()

GList *
lu_ent_get_attributes (struct lu_ent *ent);

Returns a list of all pending attributes in a struct lu_ent.

Parameters

ent

An entity

 

Returns

a GList of attribute names. The list (but not the strings in the list) should be freed by the caller.


lu_ent_get_attributes_current ()

GList *
lu_ent_get_attributes_current (struct lu_ent *ent);

Returns a list of all current attributes in a struct lu_ent.

Parameters

ent

An entity

 

Returns

a GList of attribute names. The list (but not the strings in the list) should be freed by the caller.


lu_ent_get_current ()

GValueArray *
lu_ent_get_current (struct lu_ent *ent,
                    const char *attribute);

Returns values associated with a current attribute in a struct lu_ent.

Parameters

ent

An entity

 

attribute

Attribute name

 

Returns

a GValueArray of values, valid at least until they are modified or deleted. The array is never empty and it should not be freed by the caller. Returns NULL if the attribute is not present at all or on error.


lu_ent_has ()

gboolean
lu_ent_has (struct lu_ent *ent,
            const char *attribute);

Checks if a struct lu_ent has at least one pending attribute attribute .

Parameters

ent

An entity

 

attribute

Attribute name

 

Returns

TRUE if attribute has a value in ent .


lu_ent_has_current ()

gboolean
lu_ent_has_current (struct lu_ent *ent,
                    const char *attribute);

Checks if a struct lu_ent has at least one current attribute attribute .

Parameters

ent

An entity

 

attribute

Attribute name

 

Returns

TRUE if attribute has a value in ent .


lu_ent_set ()

void
lu_ent_set (struct lu_ent *ent,
            const char *attr,
            const GValueArray *values);

Replaces all pending attributes attr in a struct lu_ent by a copy of values . If values is empty, it removes the pending attribute completely.

Parameters

ent

An entity

 

attr

Attribute name

 

values

An array of values

 

lu_ent_set_current ()

void
lu_ent_set_current (struct lu_ent *ent,
                    const char *attr,
                    const GValueArray *values);

Replaces all current attributes attr in a struct lu_ent by a copy of values . If values is empty, it removes the pending attribute completely.

Parameters

ent

An entity

 

attr

Attribute name

 

values

An array of values

 

lu_ent_set_string ()

void
lu_ent_set_string (struct lu_ent *ent,
                   const char *attr,
                   const char *value);

Replaces all pending attributes attr in a struct lu_ent by a copy of string value .

Parameters

ent

An entity

 

attr

Attribute name

 

value

A string

 

lu_ent_set_string_current ()

void
lu_ent_set_string_current (struct lu_ent *ent,
                           const char *attr,
                           const char *value);

Replaces all current attributes attr in a struct lu_ent by a copy of string value .

Parameters

ent

An entity

 

attr

Attribute name

 

value

A string

 

lu_ent_set_id ()

void
lu_ent_set_id (struct lu_ent *ent,
               const char *attr,
               id_t value);

Replaces all pending attributes attr in a struct lu_ent by an id_t value .

Parameters

ent

An entity

 

attr

Attribute name

 

value

An id_t value

 

lu_ent_set_id_current ()

void
lu_ent_set_id_current (struct lu_ent *ent,
                       const char *attr,
                       id_t value);

Replaces all current attributes attr in a struct lu_ent by an id_t value .

Parameters

ent

An entity

 

attr

Attribute name

 

value

An id_t value

 

lu_ent_set_long ()

void
lu_ent_set_long (struct lu_ent *ent,
                 const char *attr,
                 long int value);

Replaces all pending attributes attr in a struct lu_ent by a long value .

Parameters

ent

An entity

 

attr

Attribute name

 

value

A value

 

lu_ent_set_long_current ()

void
lu_ent_set_long_current (struct lu_ent *ent,
                         const char *attr,
                         long int value);

Replaces all current attributes attr in a struct lu_ent by a long value .

Parameters

ent

An entity

 

attr

Attribute name

 

value

A value

 

Types and Values

struct lu_ent

struct lu_ent;

An opaque structure used to hold data about a particular user or group account.

Each struct lu_ent contains two sets of attributes: pending and current. The pending attributes are modified by default, the current attributes are modified by functions ending with _current.

Each attribute contains a list of values. The list is never empty; removing the last entry from the list removes the list completely.


lu_ent_t

typedef struct lu_ent lu_ent_t;

lu_ent_t has been deprecated since version 0.57.3 and should not be used in newly-written code.

Use struct lu_ent directly.

An alias for struct lu_ent.


LU_USERNAME

#define LU_USERNAME		"pw_name"

User name, a G_TYPE_STRING.


LU_USERPASSWORD

#define LU_USERPASSWORD		"pw_passwd"

User password, a G_TYPE_STRING. If shadow passwords are used, this is the placeholder password.

Don't modify passwords by changing this attribute directly, use one of the specialized functions.


LU_UIDNUMBER

#define LU_UIDNUMBER		"pw_uid"

User ID, an id_t.


LU_GIDNUMBER

#define LU_GIDNUMBER		"pw_gid"

Group ID, an id_t.


LU_GECOS

#define LU_GECOS		"pw_gecos"

Usually user's real name, a G_TYPE_STRING. Often contains user's real name, office name, office phone, home phone, separated by commas.


LU_HOMEDIRECTORY

#define LU_HOMEDIRECTORY "pw_dir"

User's home directory, a G_TYPE_STRING.


LU_LOGINSHELL

#define LU_LOGINSHELL		"pw_shell"

User's login shell, a G_TYPE_STRING.


LU_GROUPNAME

#define LU_GROUPNAME		"gr_name"

Group name, a G_TYPE_STRING.


LU_GROUPPASSWORD

#define LU_GROUPPASSWORD "gr_passwd"

Group password, a G_TYPE_STRING.

Don't modify passwords by changing this attribute directly, use one of the specialized functions.


LU_MEMBERNAME

#define LU_MEMBERNAME		"gr_mem"

Group member names; each member is represented by a separate G_TYPE_STRING value.


LU_ADMINISTRATORNAME

#define LU_ADMINISTRATORNAME "gr_adm"

Group administrator names; each administrator is represented by a separate G_TYPE_STRING value.


LU_SHADOWNAME

#define LU_SHADOWNAME		LU_USERNAME

User name, a G_TYPE_STRING. Note that LU_SHADOWNAME is not distinct from LU_USERNAME.


LU_SHADOWPASSWORD

#define LU_SHADOWPASSWORD "sp_pwdp"

User password in the shadow file, a G_TYPE_STRING.

Don't modify passwords by changing this attribute directly, use one of the specialized functions.


LU_SHADOWLASTCHANGE

#define LU_SHADOWLASTCHANGE "sp_lstchg"

The number of days since the epoch to the day when the password was last changed, a G_TYPE_LONG.

May be -1 to indicate that the field exists without a value. This should be handled the same as if the attribute was missing altogether, and consistently with shadow(5).


LU_SHADOWMIN

#define LU_SHADOWMIN		"sp_min"

Minimum password lifetime in days before it can be changed, a G_TYPE_LONG.

May be -1 to indicate that the field exists without a value. This should be handled the same as if the attribute was missing altogether, and consistently with shadow(5).


LU_SHADOWMAX

#define LU_SHADOWMAX		"sp_max"

Maximum password lifetime in days before it must be changed, a G_TYPE_LONG.

May be -1 to indicate that the field exists without a value. This should be handled the same as if the attribute was missing altogether, and consistently with shadow(5).


LU_SHADOWWARNING

#define LU_SHADOWWARNING "sp_warn"

Days before the password lifetime expires when the user should start to be warned, a G_TYPE_LONG.

May be -1 to indicate that the field exists without a value. This should be handled the same as if the attribute was missing altogether, and consistently with shadow(5).


LU_SHADOWINACTIVE

#define LU_SHADOWINACTIVE "sp_inact"

Days after the password lifetime expires when the user account is disabled (because it is considered inactive), a G_TYPE_LONG. -1 to disable inactive account disabling.


LU_SHADOWEXPIRE

#define LU_SHADOWEXPIRE		"sp_expire"

The number of days since the epoch to the day when the account expires and is disabled, a G_TYPE_LONG. -1 to disable account expiration.


LU_SHADOWFLAG

#define LU_SHADOWFLAG		"sp_flag"

A reserved value "for future use", a G_TYPE_LONG. In most cases the value is -1.


LU_COMMONNAME

#define LU_COMMONNAME		"cn"

User's real name, a G_TYPE_STRING.


LU_GIVENNAME

#define LU_GIVENNAME		"givenName"

User's given name, a G_TYPE_STRING.


LU_SN

#define LU_SN			"sn"

User's surname, a G_TYPE_STRING.


LU_ROOMNUMBER

#define LU_ROOMNUMBER		"roomNumber"

User's room number, a G_TYPE_STRING.


LU_TELEPHONENUMBER

#define LU_TELEPHONENUMBER "telephoneNumber"

User's telephone number, a G_TYPE_STRING.


LU_HOMEPHONE

#define LU_HOMEPHONE		"homePhone"

User's home telephone number, a G_TYPE_STRING.


LU_EMAIL

#define LU_EMAIL		"mail"

User's email address, a G_TYPE_STRING.