July 27, 2006

### NAME

stringlist, sl_init, sl_add, sl_free, sl_find, sl_delete - stringlist manipulation functions

### LIBRARY

Standard C Library (libc, -lc)

### SYNOPSIS

```StringList``*` sl_init(``)
```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

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;

  `

sl_str
  a pointer to the base of the array containing the list.

sl_max
  the size of sl_str.

sl_cur
  the offset in sl_str of the current element.

The following stringlist manipulation functions are available:

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

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(``)
  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(``)
  Find item in sl, returning ```NULL` if it's not found.

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

free(3), malloc(3)

### HISTORY

The stringlist functions appeared in NetBSD1.3.