.TH GETFIELDS 2
.SH NAME
getfields, gettokens, tokenize \- break a string into fields
.SH SYNOPSIS
.B #include <u.h>
.br
.B #include <libc.h>
.PP
.ta \w'\fLchar* \fP'u
.B
int	getfields(char *str, char **args, int maxargs, int multiflag,
.br
.B
	    char *delims)
.PP
.B
int	gettokens(char *str, char **args, int maxargs, char *delims)
.PP
.B
int	tokenize(char *str, char **args, int maxargs)
.SH DESCRIPTION
.I Getfields
breaks the null-terminated
.SM UTF
string
.I str
into at most
.I maxargs
null-terminated fields and places pointers to the start of these fields in the array
.IR args .
Some of the bytes in
.I str
are overwritten.
If there are more than
.I maxargs
fields,
only the first
.I maxargs
fields will be set.
.I Delims
is a
.SM UTF
string defining a set of delimiters.
.PP
If
.I multiflag
is zero,
adjacent fields are separated by exactly one delimiter.
A string containing
.I n
delimiter characters
contains
.IR n +1
fields.
If the
.I multiflag
argument is not zero,
a field is a non-empty string of non-delimiters.
.PP
Getfields
returns the number of tokens processed.
.PP
.I Gettokens
is the same as
.I getfields
with
.I multiflag
non-zero,
except that fields may be quoted using single quotes, in the manner
of
.IR rc (1).
See
.IR quote (2)
for related quote-handling software.
.PP
.I Tokenize
is
.I gettokens
with 
.I delims
set to \f5"\et\er\en "\fP.
.SH SOURCE
.B /sys/src/libc/port/tokenize.c
.SH SEE ALSO
.I strtok
in
.IR strcat (2),
.IR quote (2).
