     libtar_list_new(3)        University of Illinois         libtar_list_new(3)
     C Library Calls                                             C Library Calls

                                      Jan 2000

     NAME
          libtar_list_new, libtar_list_free, libtar_list_next, libtar_list_prev,
          libtar_list_add, libtar_list_del, libtar_list_search, libtar_list_dup,
          libtar_list_merge, libtar_list_add_str - linked list routines

     SYNOPSIS
          #include <libtar.h>

          libtar_list_t *libtar_list_new(int flags, int (*cmpfunc)());
          void libtar_list_free(libtar_list_t *l, void (*freefunc)());
          int libtar_list_add_str(libtar_list_t *l, char *str, char *delim);
          int libtar_list_add(libtar_list_t *l, void *data);
          void libtar_list_del(libtar_list_t *l, libtar_node_t **n);
          int libtar_list_search(libtar_list_t *l, libtar_node_t **n, void *data,
          int (*matchfunc)());
          int libtar_list_next(libtar_list_t *l, libtar_node_t **n);
          int libtar_list_prev(libtar_list_t *l, libtar_node_t **n);
          libtar_list_t *libtar_list_dup(libtar_list_t *l);
          libtar_list_t *libtar_list_merge(int (*cmpfunc)(), int flags,
          libtar_list_t *list1, libtar_list_t *list2);

     DESCRIPTION
          The libtar_list_new() function creates a new list.  The flags argument
          must be one of the following values:

          LIST_USERFUNC
               The cmpfunc argument points to a user-supplied function which
               determines the ordering of the list.

          LIST_STACK
               Use the list as a stack.  New elements are added to the front of
               the list.

          LIST_QUEUE
               Use the list as a queue.  New elements are added to the end of
               the list.

          The libtar_list_free() function deallocates all memory associated with
          the list l.  If freefunc is not NULL, it is called to free memory
          associated with each node in the list.

          The libtar_list_add() function adds the element pointed to by data to
          the list l.  The position of the new element will be determined by the
          flags passed to libtar_list_new() when the list was created.

          The libtar_list_add_str() function tokenizes the string str using the
          delimiter characters in the string delim.  The resulting tokens are
          added to list l using libtar_list_add().

                                        - 1 -     Formatted:  September 22, 2017

     libtar_list_new(3)        University of Illinois         libtar_list_new(3)
     C Library Calls                                             C Library Calls

                                      Jan 2000

          The libtar_list_search() function searches for an element which
          matches data using the matching function matchfunc.  If matchfunc is
          NULL, a default matching function designed for ASCII strings is used.
          Searching begins from the node pointed to by n.

          The libtar_list_del() function removes the entry pointed to by n from
          the list pointed to by l.

          The libtar_list_dup() function creates a copy of the list l using
          dynamically allocated memory.

          The libtar_list_merge() function creates a new list with flags and
          cmpfunc, in the same way as libtar_list_new().  It then adds all
          elements from list1 and list2 using libtar_list_add().

     RETURN VALUE
          The libtar_list_new(), libtar_list_dup(), and libtar_list_merge()
          functions return a pointer to the new list structure, or NULL on
          error.

          The libtar_list_next(), libtar_list_prev(), and libtar_list_search()
          functions return 1 when valid data is returned, or 0 otherwise.

          The libtar_list_add() and libtar_list_add_str() functions return 0 on
          success, or -1 on error.

     SEE ALSO
          libtar_hash_new(3)

                                        - 2 -     Formatted:  September 22, 2017