---
name: "genders_getattr"
section: "3"
platform: "linux"
package: "libgenders0-dev"
version: "1.27-3-3.1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/genders_getattr"
---

# genders\_getattr(3)

get attributes from a genders file

## NAME

genders\_getattr - get attributes from a genders file

## SYNOPSIS

**#include \<genders.h\>**

**int genders\_getattr(genders\_t handle, char \*attrs\[\], char \*vals\[\], int len, const char \*node);**\

## DESCRIPTION

**genders\_getattr()** gets the attributes and values for the node pointed to by *node*.  If *node* is NULL, attributes and values are retrieved for the current node.  The attributes are stored in the attribute list pointed to by *attrs* and the attribute values are stored in *vals*.  If attribute values are not desired, *vals* can be set to NULL.  *len* should indicate the number of elements that can be stored in both the attribute list and attribute values list.

To avoid passing in a list that is not large enough to store all the attributes and attribute values, [**genders\_getmaxattrs**(3)](/genders_getmaxattrs/3.md) should be used to determine the minimum number of elements *attrs* and *vals* should be able to store. [**genders\_attrlist\_create**(3)](/genders_attrlist_create/3.md) and [**genders\_vallist\_create**(3)](/genders_vallist_create/3.md) could be used to create lists that are guaranteed to be large enough to store all attributes and attribute values.\

## RETURN VALUES

On success, the number of attributes stored in *attrs* is returned.  On error, -1 is returned, and an error code is returned in *handle*.  The error code can be retrieved via [**genders\_errnum**(3)](/genders_errnum/3.md) , and a description of the error code can be retrieved via  [**genders\_strerror**(3)](/genders_strerror/3.md). Error codes are defined in genders.h.\

## ERRORS

- **GENDERS\_ERR\_NULLHANDLE**

  The *handle* parameter is NULL.  The genders handle must be created with [**genders\_handle\_create**(3)](/genders_handle_create/3.md).

- **GENDERS\_ERR\_NOTLOADED**

  [**genders\_load\_data**(3)](/genders_load_data/3.md) has not been called to load genders data.

- **GENDERS\_ERR\_OVERFLOW**

  The list pointed to by *attrs* or *vals* is not large enough to store all the attributes or attribute values.

- **GENDERS\_ERR\_PARAMETERS**

  An incorrect parameter has been passed in.

- **GENDERS\_ERR\_NULLPTR**

  A null pointer has been found in the list passed in.

- **GENDERS\_ERR\_NOTFOUND**

  The node pointed to by *node* cannot be found in the genders file or if *node*=NULL, the machine genders is running on is not listed in the genders database.

- **GENDERS\_ERR\_MAGIC**

  *handle* has an incorrect magic number.  *handle* does not point to a genders handle or *handle* has been destroyed by [**genders\_handle\_destroy**(3)](/genders_handle_destroy/3.md).\

## FILES

/usr/include/genders.h

## SEE ALSO

[libgenders(3)](/libgenders/3.md), [genders\_handle\_create(3)](/genders_handle_create/3.md), [genders\_load\_data(3)](/genders_load_data/3.md), [genders\_getmaxattrs(3)](/genders_getmaxattrs/3.md), [genders\_attrlist\_create(3)](/genders_attrlist_create/3.md), [genders\_vallist\_create(3)](/genders_vallist_create/3.md), [genders\_errnum(3)](/genders_errnum/3.md), [genders\_strerror(3)](/genders_strerror/3.md)
