getfields.c - 9base - revived minimalist port of Plan 9 userland to Unix
(HTM) git clone git://git.suckless.org/9base
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
getfields.c (501B)
---
1 #include <lib9.h>
2
3 int
4 getfields(char *str, char **args, int max, int mflag, char *set)
5 {
6 Rune r;
7 int nr, intok, narg;
8
9 if(max <= 0)
10 return 0;
11
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 }