44caa7cd4b189987255299fc47052cfbe9a35074
[ia32rtools.git] / tools / my_str.h
1 static int my_isblank(char c)
2 {
3         return c == '\t' || c == ' ' || c == '\r' || c == '\n';
4 }
5
6 static int my_issep(char c)
7 {
8         return c == '(' || c == ')' || c == '[' || c == ']'
9             || c == '<' || c == '>' || c == ',';
10 }
11
12 static char *sskip(char *s)
13 {
14         while (my_isblank(*s))
15                 s++;
16
17         return s;
18 }
19
20 static char *next_word(char *w, size_t wsize, char *s)
21 {
22         size_t i;
23
24         s = sskip(s);
25
26         for (i = 0; i < wsize - 1; i++) {
27                 if (*s == 0 || my_isblank(s[i]))
28                         break;
29                 w[i] = s[i];
30         }
31         w[i] = 0;
32
33         if (*s != 0 && !my_isblank(s[i]))
34                 printf("warning: '%s' truncated\n", w);
35
36         return s + i;
37 }
38
39 static inline char *next_idt(char *w, size_t wsize, char *s)
40 {
41         size_t i;
42
43         s = sskip(s);
44
45         for (i = 0; i < wsize - 1; i++) {
46                 if (*s == 0 || my_isblank(s[i]) || my_issep(s[i]))
47                         break;
48                 w[i] = s[i];
49         }
50         w[i] = 0;
51
52         if (*s != 0 && !my_isblank(s[i]) && !my_issep(s[i]))
53                 printf("warning: '%s' truncated\n", w);
54
55         return s + i;
56 }