x86: Don't enter the monitor for invalid opcode
[akaros.git] / user / iplib / getfields.c
1 /*
2  * This file is part of the UCB release of Plan 9. It is subject to the license
3  * terms in the LICENSE file found in the top-level directory of this
4  * distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No
5  * part of the UCB release of Plan 9, including this file, may be copied,
6  * modified, propagated, or distributed except according to the terms contained
7  * in the LICENSE file.
8  */
9 #include <string.h>
10
11 /* currently only used in arp.c; so we don't do the full monty. */
12 int getfields(char *str, char **args, int max, int mflag, char *set)
13 {
14         int nr, intok, narg;
15
16         if (max <= 0)
17                 return 0;
18
19         narg = 0;
20         args[narg] = str;
21         if (!mflag)
22                 narg++;
23         intok = 0;
24         for (;; str++) {
25                 nr = *str;
26                 if (nr == 0)
27                         break;
28                 if (index(set, nr)) {
29                         if (narg >= max)
30                                 break;
31                         *str = 0;
32                         intok = 0;
33                         args[narg] = str + 1;
34                         if (!mflag)
35                                 narg++;
36                 } else {
37                         if (!intok && mflag)
38                                 narg++;
39                         intok = 1;
40                 }
41         }
42         return narg;
43 }