Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1344)

Side by Side Diff: fusl/src/network/inet_pton.c

Issue 1714623002: [fusl] clang-format fusl (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: headers too Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 #include <sys/socket.h> 1 #include <sys/socket.h>
2 #include <arpa/inet.h> 2 #include <arpa/inet.h>
3 #include <ctype.h> 3 #include <ctype.h>
4 #include <errno.h> 4 #include <errno.h>
5 #include <string.h> 5 #include <string.h>
6 6
7 static int hexval(unsigned c) 7 static int hexval(unsigned c) {
8 { 8 if (c - '0' < 10)
9 » if (c-'0'<10) return c-'0'; 9 return c - '0';
10 » c |= 32; 10 c |= 32;
11 » if (c-'a'<6) return c-'a'+10; 11 if (c - 'a' < 6)
12 » return -1; 12 return c - 'a' + 10;
13 return -1;
13 } 14 }
14 15
15 int inet_pton(int af, const char *restrict s, void *restrict a0) 16 int inet_pton(int af, const char* restrict s, void* restrict a0) {
16 { 17 uint16_t ip[8];
17 » uint16_t ip[8]; 18 unsigned char* a = a0;
18 » unsigned char *a = a0; 19 int i, j, v, d, brk = -1, need_v4 = 0;
19 » int i, j, v, d, brk=-1, need_v4=0;
20 20
21 » if (af==AF_INET) { 21 if (af == AF_INET) {
22 » » for (i=0; i<4; i++) { 22 for (i = 0; i < 4; i++) {
23 » » » for (v=j=0; j<3 && isdigit(s[j]); j++) 23 for (v = j = 0; j < 3 && isdigit(s[j]); j++)
24 » » » » v = 10*v + s[j]-'0'; 24 v = 10 * v + s[j] - '0';
25 » » » if (j==0 || (j>1 && s[0]=='0') || v>255) return 0; 25 if (j == 0 || (j > 1 && s[0] == '0') || v > 255)
26 » » » a[i] = v; 26 return 0;
27 » » » if (s[j]==0 && i==3) return 1; 27 a[i] = v;
28 » » » if (s[j]!='.') return 0; 28 if (s[j] == 0 && i == 3)
29 » » » s += j+1; 29 return 1;
30 » » } 30 if (s[j] != '.')
31 » » return 0; 31 return 0;
32 » } else if (af!=AF_INET6) { 32 s += j + 1;
33 » » errno = EAFNOSUPPORT; 33 }
34 » » return -1; 34 return 0;
35 » } 35 } else if (af != AF_INET6) {
36 errno = EAFNOSUPPORT;
37 return -1;
38 }
36 39
37 » if (*s==':' && *++s!=':') return 0; 40 if (*s == ':' && *++s != ':')
41 return 0;
38 42
39 » for (i=0; ; i++) { 43 for (i = 0;; i++) {
40 » » if (s[0]==':' && brk<0) { 44 if (s[0] == ':' && brk < 0) {
41 » » » brk=i; 45 brk = i;
42 » » » ip[i&7]=0; 46 ip[i & 7] = 0;
43 » » » if (!*++s) break; 47 if (!*++s)
44 » » » if (i==7) return 0; 48 break;
45 » » » continue; 49 if (i == 7)
46 » » } 50 return 0;
47 » » for (v=j=0; j<4 && (d=hexval(s[j]))>=0; j++) 51 continue;
48 » » » v=16*v+d; 52 }
49 » » if (j==0) return 0; 53 for (v = j = 0; j < 4 && (d = hexval(s[j])) >= 0; j++)
50 » » ip[i&7] = v; 54 v = 16 * v + d;
51 » » if (!s[j] && (brk>=0 || i==7)) break; 55 if (j == 0)
52 » » if (i==7) return 0; 56 return 0;
53 » » if (s[j]!=':') { 57 ip[i & 7] = v;
54 » » » if (s[j]!='.' || (i<6 && brk<0)) return 0; 58 if (!s[j] && (brk >= 0 || i == 7))
55 » » » need_v4=1; 59 break;
56 » » » i++; 60 if (i == 7)
57 » » » break; 61 return 0;
58 » » } 62 if (s[j] != ':') {
59 » » s += j+1; 63 if (s[j] != '.' || (i < 6 && brk < 0))
60 » } 64 return 0;
61 » if (brk>=0) { 65 need_v4 = 1;
62 » » memmove(ip+brk+7-i, ip+brk, 2*(i+1-brk)); 66 i++;
63 » » for (j=0; j<7-i; j++) ip[brk+j] = 0; 67 break;
64 » } 68 }
65 » for (j=0; j<8; j++) { 69 s += j + 1;
66 » » *a++ = ip[j]>>8; 70 }
67 » » *a++ = ip[j]; 71 if (brk >= 0) {
68 » } 72 memmove(ip + brk + 7 - i, ip + brk, 2 * (i + 1 - brk));
69 » if (need_v4 && inet_pton(AF_INET, (void *)s, a-4) <= 0) return 0; 73 for (j = 0; j < 7 - i; j++)
70 » return 1; 74 ip[brk + j] = 0;
75 }
76 for (j = 0; j < 8; j++) {
77 *a++ = ip[j] >> 8;
78 *a++ = ip[j];
79 }
80 if (need_v4 && inet_pton(AF_INET, (void*)s, a - 4) <= 0)
81 return 0;
82 return 1;
71 } 83 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698