]> git.sur5r.net Git - ngadmin/blob - cli/common.c
Cli: refactor, change coding style
[ngadmin] / cli / common.c
1
2 #include "common.h"
3
4
5 void printErrCode (int err)
6 {
7         switch (err) {
8         case ERR_OK:
9                 break;
10         
11         case ERR_NET:
12                 printf("network error\n");
13                 break;
14         
15         case ERR_NOTLOG:
16                 printf("no switch selected\n");
17                 break;
18         
19         case ERR_DENIED:
20                 printf("access denied\n");
21                 break;
22         
23         case ERR_BADPASS:
24                 printf("wrong password\n");
25                 break;
26         
27         case ERR_BADID:
28                 printf("bad switch id\n");
29                 break;
30         
31         case ERR_INVARG:
32                 printf("invalid argument\n");
33                 break;
34         
35         case ERR_TIMEOUT:
36                 printf("timeout\n");
37                 break;
38         
39         case ERR_NOTIMPL:
40                 printf("not implemented\n");
41                 break;
42         
43         default:
44                 printf("unknown status code (%i)\n", err);
45         }
46 }
47
48
49 const char* const bitrates[] = {
50         "nl",
51         "512K",
52         "1M",
53         "2M",
54         "4M",
55         "8M",
56         "16M",
57         "32M",
58         "64M",
59         "128M",
60         "256M",
61         "512M",
62         NULL
63 };
64
65
66 const char* const prio[]={
67         NULL,
68         "high",
69         "medium",
70         "normal",
71         "low",
72         NULL
73 };
74
75
76 int parseBitrate (const char *s)
77 {
78         int i;
79         
80         for (i = 0; bitrates[i] != NULL && strcasecmp(bitrates[i], s) != 0; i++);
81         
82         return i;
83 }
84
85
86 char parsePrio (const char *s)
87 {
88         int i;
89         
90         for (i = 1; prio[i] != NULL && strcasecmp(prio[i], s) != 0; i++);
91         
92         return (char)i;
93 }
94
95
96 void displaySwitchTab (const struct swi_attr *sa, int nb)
97 {
98         int i=0;
99         
100         if (nb == 0) {
101                 printf("no switch found\n");
102                 return;
103         }
104         
105         printf("Num\tMac\t\t\tProduct\t\tName\t\t\tIP/mask\t\t\tDHCP\tPorts\tFirmware\n");
106         
107         for (i = 0; i < nb; i++) {
108                 printf("%i\t%s\t%s\t%s\t\t%s/", i, ether_ntoa(&sa[i].mac), sa[i].product, sa[i].name, inet_ntoa(sa[i].nc.ip));
109                 printf("%s\t%s\t%i\t%s\n", inet_ntoa(sa[i].nc.netmask), ( sa[i].nc.dhcp ? "Yes" : "No" ), sa[i].ports, sa[i].firmware);
110         }
111         
112         printf("\nfound %i switch(es)\n", nb);
113 }
114
115
116 int trim (char *txt, int start)
117 {
118         char *p;
119         
120         if (txt == NULL)
121                 return 0;
122         
123         p = txt + start;
124         for (p--; p >= txt && (*p == ' ' || *p == '\n'); *p-- = 0);
125         
126         return p - txt + 1;
127 }
128
129
130 int explode (const char *commande, char** tab, int maximum)
131 {
132         const char *start, *end;
133         int n = 0, len;
134         
135         
136         for (end = commande; ; n++) {
137                 for (start = end; *start == ' ' && *start != 0; start++);
138                 for (end = start; (*end != ' ' || n >= maximum - 1 ) && *end != 0; end++);
139                 
140                 len = end - start;
141                 if (len == 0)
142                         break;
143                 
144                 tab[n] = malloc(sizeof(char) * (len + 1));
145                 memcpy(tab[n], start, len);
146                 tab[n][len] = 0;
147         }
148         
149         
150         return n;
151 }
152
153