Fix genbuf/attach issue with specs
[akaros.git] / kern / src / ns / getfields.c
1 // INFERNO
2 #include <vfs.h>
3 #include <kfs.h>
4 #include <slab.h>
5 #include <kmalloc.h>
6 #include <kref.h>
7 #include <string.h>
8 #include <stdio.h>
9 #include <assert.h>
10 #include <error.h>
11 #include <cpio.h>
12 #include <pmap.h>
13 #include <smp.h>
14 #include <ip.h>
15
16 int getfields(char *str, char **args, int max, int mflag, char *set)
17 {
18         //Rune r;
19         int next = 0;
20         int r;
21         int nr, intok, narg;
22
23         if (max <= 0)
24                 return 0;
25
26         narg = 0;
27         args[narg] = str;
28         if (!mflag)
29                 narg++;
30         intok = 0;
31         for (;; str += nr) {
32                 r = str[next++];
33                 //nr = chartorune(&r, str);
34                 nr = 1;
35
36                 if (r == 0)
37                         break;
38                 //if(utfrune(set, r)) {
39                 if (strchr(set, r)) {
40                         if (narg >= max)
41                                 break;
42                         *str = 0;
43                         intok = 0;
44                         args[narg] = str + nr;
45                         if (!mflag)
46                                 narg++;
47                 } else {
48                         if (!intok && mflag)
49                                 narg++;
50                         intok = 1;
51                 }
52         }
53         return narg;
54 }