![]() |
![]() |
![]() |
libuser Reference Manual | ![]() |
---|---|---|---|---|
Top | Description |
#include <libuser/user.h> #define LU_VALUE_INVALID_ID char * lu_value_strdup (const GValue *value
); gboolean lu_value_init_set_attr_from_string (GValue *value
,const char *attr
,const char *string
,struct lu_error **error
); void lu_value_init_set_id (GValue *value
,id_t id
); id_t lu_value_get_id (const GValue *value
); int lu_values_equal (const GValue *a
,const GValue *b
);
Libuser entities store attribute values as GValue, which allows representing
any possible data type. Only a few types are needed in practice; the only
types applications should hard-code are G_TYPE_LONG
and G_TYPE_STRING
(G_TYPE_STRING
can usually be used as a fallback for other number types).
The only currently used data types that are not conveniently supported using
the above types are uid_t and gid_t (which can be together represented in
id_t), because they can support values outside of the range of glong.
Helper functions are provided to convert values between id_t and GValue,
even if the value is stored using G_TYPE_STRING
. The GValue types used
for storing id_t values are an internal implementation detail of libuser
and applications should not rely on them.
Values of each attribute are expected to have a specific type, documented in
the documentation of the specific attribute name. Using other types (e.g.
using G_TYPE_STRING
for LU_UIDNUMBER
) is not allowed and results in
undefined behavior. You can use lu_value_strdup()
and
lu_value_init_set_attr_from_string()
for conversion between strings and
values appropriate for a specific attribute.
#define LU_VALUE_INVALID_ID ((id_t)-1)
An id_t value that matches no valid user or group ID.
char * lu_value_strdup (const GValue *value
);
Converts value
, of any type used by libuser, to a string. Preferable to
hard-coding checks for expected value types.
gboolean lu_value_init_set_attr_from_string (GValue *value
,const char *attr
,const char *string
,struct lu_error **error
);
Initializes a zero-filled (uninitialized) value
for storing a value of
attribute attr
and sets it to the contents of string
. To see whether a
specific type is used for an attribute, see the documentation of that
attribute.
The error messages returned from this function don't contain the input
string, to allow the caller to output at least partially usable error
message without disclosing the invalid string in
e.g. /etc/shadow
, which might be somebody's misplaced
password.
void lu_value_init_set_id (GValue *value
,id_t id
);
Initializes a zero-filled (uninitialized) value
with an unspecified type and
sets it to id
.
|
GValue |
|
User or group ID. |
id_t lu_value_get_id (const GValue *value
);
Get the contents of value
. value
should be initialized by
lu_value_init_set_id()
or use G_TYPE_LONG
or G_TYPE_STRING
.
If value
does not contain a valid id_t value, LU_VALUE_INVALID_ID
is returned.
|
GValue |
Returns : |
ID value or LU_VALUE_INVALID_ID
|