Blob


1 #include <lib9.h>
3 int
4 getfields(char *str, char **args, int max, int mflag, char *set)
5 {
6 Rune r;
7 int nr, intok, narg;
9 if(max <= 0)
10 return 0;
12 narg = 0;
13 args[narg] = str;
14 if(!mflag)
15 narg++;
16 intok = 0;
17 for(;; str += nr) {
18 nr = chartorune(&r, str);
19 if(r == 0)
20 break;
21 if(utfrune(set, r)) {
22 if(narg >= max)
23 break;
24 *str = 0;
25 intok = 0;
26 args[narg] = str + nr;
27 if(!mflag)
28 narg++;
29 } else {
30 if(!intok && mflag)
31 narg++;
32 intok = 1;
33 }
34 }
35 return narg;
36 }