2011-03-30 13:49:47 +00:00
|
|
|
.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
|
|
|
|
places into the array
|
|
|
|
.I args
|
|
|
|
pointers to the first
|
|
|
|
.I maxargs
|
|
|
|
fields of the null terminated
|
|
|
|
.SM UTF
|
|
|
|
string
|
|
|
|
.IR str .
|
|
|
|
Delimiters between these fields are set to null.
|
|
|
|
.PP
|
|
|
|
Fields are substrings of
|
|
|
|
.I str
|
|
|
|
whose definition depends on the value of
|
|
|
|
.IR multiflag.
|
|
|
|
If
|
|
|
|
.I multiflag
|
|
|
|
is zero,
|
|
|
|
adjacent fields are separated by exactly one delimiter.
|
|
|
|
For example
|
|
|
|
.EX
|
|
|
|
|
|
|
|
getfields("#alice#bob##charles###", arg, 3, 0, "#");
|
|
|
|
|
|
|
|
.EE
|
|
|
|
yields three substrings:
|
|
|
|
null-string ,
|
|
|
|
.BR "alice" ,
|
|
|
|
and
|
|
|
|
.BR "bob##charles###" .
|
|
|
|
If the
|
|
|
|
.I multiflag
|
|
|
|
argument is not zero,
|
|
|
|
a field is a non-empty string of non-delimiters.
|
|
|
|
For example
|
|
|
|
.EX
|
|
|
|
|
|
|
|
getfields("#alice#bob##charles###", arg, 3, 1, "#");
|
|
|
|
|
|
|
|
.EE
|
|
|
|
yields the three substrings:
|
|
|
|
.BR "alice" ,
|
|
|
|
.BR "bob" ,
|
|
|
|
and
|
|
|
|
.BR "charles###" .
|
|
|
|
.PP
|
|
|
|
Getfields returns the number of fields pointed to.
|
|
|
|
.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).
|
|
|
|
Any such quotes remain in the resulting
|
|
|
|
.IR args .
|
|
|
|
See
|
|
|
|
.IR quote (2)
|
|
|
|
for related quote-handling software.
|
|
|
|
.PP
|
|
|
|
.I Tokenize
|
|
|
|
is similar to
|
|
|
|
.I gettokens
|
|
|
|
with
|
|
|
|
.I delims
|
|
|
|
set to \f5"\et\er\en\ "\fP,
|
|
|
|
except that quotes are interpreted but do not appear in the resulting
|
|
|
|
.IR args .
|
|
|
|
.SH SOURCE
|
2014-04-01 17:12:23 +00:00
|
|
|
.B /sys/src/libc/port/getfields.c
|
|
|
|
.br
|
2011-03-30 13:49:47 +00:00
|
|
|
.B /sys/src/libc/port/tokenize.c
|
|
|
|
.SH SEE ALSO
|
|
|
|
.I strtok
|
|
|
|
in
|
|
|
|
.IR strcat (2),
|
|
|
|
.IR quote (2).
|