NAME

librrd - RRD library functions


DESCRIPTION

librrd contains most of the functionality in RRDTool. The command line utilities and language bindings are often just wrappers around the code contained in librrd.

This manual page documents the librrd API.

NOTE: This document is a work in progress, and should be considered incomplete as long as this warning persists. For more information about the librrd functions, always consult the source code.


UTILITY FUNCTIONS

rrd_random()
Generates random numbers just like random(). This further ensures that the random number generator is seeded exactly once per process.

rrd_add_ptr(void ***dest, size_t *dest_size, void *src)
Dynamically resize the array pointed to by dest. dest_size is a pointer to the current size of dest. Upon successful realloc(), the dest_size is incremented by 1 and the src pointer is stored at the end of the new dest. Returns 1 on success, 0 on failure.
    type **arr = NULL;
    type *elem = "whatever";
    size_t arr_size = 0;
    if (!rrd_add_ptr(&arr, &arr_size, elem))
        handle_failure();

rrd_add_strdup(char ***dest, size_t *dest_size, char *src)
Like rrd_add_ptr, except adds a strdup of the source string.
    char **arr = NULL;
    size_t arr_size = NULL;
    char *str  = "example text";
    if (!rrd_add_strdup(&arr, &arr_size, str))
        handle_failure();

rrd_free_ptrs(void ***src, size_t *cnt)
Free an array of pointers allocated by rrd_add_ptr or rrd_add_strdup. Also frees the array pointer itself. On return, the source pointer will be NULL and the count will be zero.
    /* created as above */
    rrd_free_ptrs(&arr, &arr_size);
    /* here, arr == NULL && arr_size == 0 */