stringlist(3bsd) 3bsd stringlist(3bsd)

# [NAME](#NAME)

`stringlist`, `sl_init`, `sl_add`, `sl_free`, `sl_find`, `sl_delete` — stringlist manipulation functions

# [LIBRARY](#LIBRARY)

library “libbsd”

# [SYNOPSIS](#SYNOPSIS)

`#include <stringlist.h>` (See [libbsd(7)](/man/os/libbsd/libbsd.7) for include usage.)  
`StringList *`  
`sl_init`(`void`);

`int`  
`sl_add`(`StringList *sl`, `char *item`);

`void`  
`sl_free`(`StringList *sl`, `int freeall`);

`char *`  
`sl_find`(`StringList *sl`, `const char *item`);

`int`  
`sl_delete`(`StringList *sl`, `const char *item`, `int freeit`);

# [DESCRIPTION](#DESCRIPTION)

The `stringlist` functions manipulate stringlists, which are lists of strings that extend automatically if necessary.

The `StringList` structure has the following definition:

```
typedef struct _stringlist {
	char	**sl_str;
	size_t	  sl_max;
	size_t	  sl_cur;
} StringList;
```

where:

`sl_str`

is a pointer to the base of the array containing the list,

`sl_max`

is the size of `sl_str`, and

`sl_cur`

is the offset in `sl_str` of the current element.

The following stringlist manipulation functions are available:

[`sl_init`](#sl_init)()

Create a stringlist. Returns a pointer to a `StringList`, or `NULL` in case of failure.

[`sl_free`](#sl_free)()

Releases memory occupied by `sl` and the `sl->sl_str` array. If `freeall` is non-zero, then each of the items within `sl->sl_str` is released as well.

[`sl_add`](#sl_add)()

Add `item` to `sl->sl_str` at `sl->sl_cur`, extending the size of `sl->sl_str`. Returns zero upon success, -1 upon failure.

[`sl_find`](#sl_find)()

Find `item` in `sl`, returning `NULL` if it's not found.

[`sl_delete`](#sl_delete)()

Remove `item` from the list. If `freeit` is non-zero, the string is freed. Returns `0` if the name is found and `-1` if the name is not found.

# [SEE ALSO](#SEE_ALSO)

[free(3)](/man/os/libbsd/free.3), [malloc(3)](/man/os/libbsd/malloc.3)

# [HISTORY](#HISTORY)

The `stringlist` functions appeared in FreeBSD 2.2.6 and NetBSD 1.3.

May 6, 2010 Linux 4.19.0-gvisor

---

Document: stringlist(3bsd) from libbsd 0.12.2-r8 (Chainguard OS)
Source: https://gitlab.freedesktop.org/libbsd/libbsd
