Fixes stat() #include
[akaros.git] / user / ndblib / ipattr.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 <stdlib.h>
10
11 #include <stdio.h>
12 #include <parlib.h>
13 #include <unistd.h>
14 #include <signal.h>
15 #include <fcntl.h>
16 #include <ctype.h>
17 #include <iplib.h>
18 #include <ndb.h>
19
20 /*
21  *  return ndb attribute type of an ip name
22  */
23 char*
24 ipattr(char *name)
25 {
26         char *p, c;
27         int dot = 0;
28         int alpha = 0;
29         int colon = 0;
30         int hex = 0;
31
32         for(p = name; *p; p++){
33                 c = *p;
34                 if(isdigit(c))
35                         continue;
36                 if(isxdigit(c))
37                         hex = 1;
38                 else if(isalpha(c) || c == '-')
39                         alpha = 1;
40                 else if(c == '.')
41                         dot = 1;
42                 else if(c == ':')
43                         colon = 1;
44                 else
45                         return "sys";
46         }
47
48         if(alpha){
49                 if(dot)
50                         return "dom";
51                 else
52                         return "sys";
53         }
54
55         if(colon)
56                 return "ip";    /* ip v6 */
57
58         if(dot && !hex)
59                 return "ip";
60         else
61                 return "sys";
62 }