ref: 5030157da9e89da53739b13c36942a5355de669f
dir: /sys/man/2/getfields/
.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 .B /sys/src/libc/port/getfields.c .br .B /sys/src/libc/port/tokenize.c .SH SEE ALSO .I strtok in .IR strcat (2), .IR quote (2).