GETFIELDS(2)GETFIELDS(2)
NAME
getfields, gettokens, tokenize – break a string into fields
SYNOPSIS
#include <u.h>
#include <libc.h>
int getfields(char *str, char **args, int maxargs, int multiflag,
char *delims)
int gettokens(char *str, char **args, int maxargs, char *delims)
int tokenize(char *str, char **args, int maxargs)
DESCRIPTION
Getfields
places into the array
args
pointers to the first
maxargs
fields of the null terminated
UTF
string
str.
Delimiters between these fields are set to null.
Fields are substrings of
str
whose definition depends on the value of
multiflag.
If
multiflag
is zero,
adjacent fields are separated by exactly one delimiter.
For example
getfields("#alice#bob##charles###", arg, 3, 0, "#");
yields three substrings:
null-string ,
alice ,
and
bob##charles### .
If the
multiflag
argument is not zero,
a field is a non-empty string of non-delimiters.
For example
getfields("#alice#bob##charles###", arg, 3, 1, "#");
yields the three substrings:
alice ,
bob ,
and
charles### .
Getfields returns the number of fields pointed to.
Gettokens
is the same as
getfields
with
multiflag
non-zero,
except that fields may be quoted using single quotes, in the manner
of
rc(1).
Any such quotes remain in the resulting
args.
See
quote(2)
for related quote-handling software.
Tokenize
is similar to
gettokens
with
delims
set to \f5"\t\r\n ",
except that quotes are interpreted but do not appear in the resulting
args.
SOURCE
/sys/src/libc/port/getfields.c
/sys/src/libc/port/tokenize.c
SEE
strtok
in
strcat(2),
quote(2).