xt_dsv_line_read(3)

NAME
xt_dsv_line_read() - Read a line of generic tabular data

LIBRARY
#include <xtend/dsv.h>
-lbiolibc

SYNOPSIS
int     xt_dsv_line_read(xt_dsv_line_t *xt_dsv_line, FILE *stream, const char *delims)

ARGUMENTS
xt_dsv_line    Pointer to a xt_dsv_line_t structure to hold the fields
stream      FILE stream from which the line is read
delims      Array of acceptable delimiters

DESCRIPTION
Read a line of an arbitrary DSV file into a xt_dsv_line_t object. Memory is allocated for the text of the fields, and it must be freed using fsv_line_free(3) before calling xt_dsv_line_read(3) on the same object again. The xt_dsv_line_t structure contains an array of strings, each holding one field from the line, and an an array of delimiters, each holding the character that ended the corresponding field. Note that each field could potentially end with a different delimiter, as multiple delimiters can be specified. This function serves a purpose similar to the split() functions present in many languages. However, it does not need to read an entire line into a character array and then split the array. Instead, it separates fields as they are read from the input stream.

RETURN VALUES
Actual delimiter of last field (should be newline)

EXAMPLES
xt_dsv_line_t  *line = xt_dsv_line_new();
while ( xt_dsv_line_read(line, stdin, "\t") != EOF )
{
    xt_dsv_line_write(line, stdout);
    xt_dsv_line_free(line);
}

SEE ALSO
xt_dsv_line_new(3), xt_dsv_line_free(3), xt_dsv_line_read(3), xt_dsv_line_write(3), xt_dsv_line_copy(3), xt_dsv_read_field(3), xt_dsv_read_field_malloc(3), xt_dsv_skip_field(3), xt_dsv_skip_rest_of_line(3)