sys_rename: allow arbitrary rename
[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 r;
20         int nr, intok, narg;
21
22         if (max <= 0)
23                 return 0;
24
25         narg = 0;
26         args[narg] = str;
27         if (!mflag)
28                 narg++;
29         intok = 0;
30         for (;; str += nr) {
31                 r = str[0];
32                 //nr = chartorune(&r, str);
33                 nr = 1;
34
35                 if (r == 0)
36                         break;
37                 //if(utfrune(set, r)) {
38                 if (strchr(set, r)) {
39                         if (narg >= max)
40                                 break;
41                         *str = 0;
42                         intok = 0;
43                         args[narg] = str + nr;
44                         if (!mflag)
45                                 narg++;
46                 } else {
47                         if (!intok && mflag)
48                                 narg++;
49                         intok = 1;
50                 }
51         }
52         return narg;
53 }