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

Side by Side Diff: fusl/src/network/resolvconf.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 "lookup.h" 1 #include "lookup.h"
2 #include "stdio_impl.h" 2 #include "stdio_impl.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 #include <netinet/in.h> 6 #include <netinet/in.h>
7 7
8 int __get_resolv_conf(struct resolvconf *conf, char *search, size_t search_sz) 8 int __get_resolv_conf(struct resolvconf* conf, char* search, size_t search_sz) {
9 { 9 char line[256];
10 » char line[256]; 10 unsigned char _buf[256];
11 » unsigned char _buf[256]; 11 FILE *f, _f;
12 » FILE *f, _f; 12 int nns = 0;
13 » int nns = 0;
14 13
15 » conf->ndots = 1; 14 conf->ndots = 1;
16 » conf->timeout = 5; 15 conf->timeout = 5;
17 » conf->attempts = 2; 16 conf->attempts = 2;
18 » if (search) *search = 0; 17 if (search)
18 *search = 0;
19 19
20 » f = __fopen_rb_ca("/etc/resolv.conf", &_f, _buf, sizeof _buf); 20 f = __fopen_rb_ca("/etc/resolv.conf", &_f, _buf, sizeof _buf);
21 » if (!f) switch (errno) { 21 if (!f)
22 » case ENOENT: 22 switch (errno) {
23 » case ENOTDIR: 23 case ENOENT:
24 » case EACCES: 24 case ENOTDIR:
25 » » goto no_resolv_conf; 25 case EACCES:
26 » default: 26 goto no_resolv_conf;
27 » » return -1; 27 default:
28 » } 28 return -1;
29 }
29 30
30 » while (fgets(line, sizeof line, f)) { 31 while (fgets(line, sizeof line, f)) {
31 » » char *p, *z; 32 char *p, *z;
32 » » if (!strchr(line, '\n') && !feof(f)) { 33 if (!strchr(line, '\n') && !feof(f)) {
33 » » » /* Ignore lines that get truncated rather than 34 /* Ignore lines that get truncated rather than
34 » » » * potentially misinterpreting them. */ 35 * potentially misinterpreting them. */
35 » » » int c; 36 int c;
36 » » » do c = getc(f); 37 do
37 » » » while (c != '\n' && c != EOF); 38 c = getc(f);
38 » » » continue; 39 while (c != '\n' && c != EOF);
39 » » } 40 continue;
40 » » if (!strncmp(line, "options", 7) && isspace(line[7])) { 41 }
41 » » » p = strstr(line, "ndots:"); 42 if (!strncmp(line, "options", 7) && isspace(line[7])) {
42 » » » if (p && isdigit(p[6])) { 43 p = strstr(line, "ndots:");
43 » » » » p += 6; 44 if (p && isdigit(p[6])) {
44 » » » » unsigned long x = strtoul(p, &z, 10); 45 p += 6;
45 » » » » if (z != p) conf->ndots = x > 15 ? 15 : x; 46 unsigned long x = strtoul(p, &z, 10);
46 » » » } 47 if (z != p)
47 » » » p = strstr(line, "attempts:"); 48 conf->ndots = x > 15 ? 15 : x;
48 » » » if (p && isdigit(p[6])) { 49 }
49 » » » » p += 6; 50 p = strstr(line, "attempts:");
50 » » » » unsigned long x = strtoul(p, &z, 10); 51 if (p && isdigit(p[6])) {
51 » » » » if (z != p) conf->attempts = x > 10 ? 10 : x; 52 p += 6;
52 » » » } 53 unsigned long x = strtoul(p, &z, 10);
53 » » » p = strstr(line, "timeout:"); 54 if (z != p)
54 » » » if (p && (isdigit(p[8]) || p[8]=='.')) { 55 conf->attempts = x > 10 ? 10 : x;
55 » » » » p += 8; 56 }
56 » » » » unsigned long x = strtoul(p, &z, 10); 57 p = strstr(line, "timeout:");
57 » » » » if (z != p) conf->timeout = x > 60 ? 60 : x; 58 if (p && (isdigit(p[8]) || p[8] == '.')) {
58 » » » } 59 p += 8;
59 » » » continue; 60 unsigned long x = strtoul(p, &z, 10);
60 » » } 61 if (z != p)
61 » » if (!strncmp(line, "nameserver", 10) && isspace(line[10])) { 62 conf->timeout = x > 60 ? 60 : x;
62 » » » if (nns >= MAXNS) continue; 63 }
63 » » » for (p=line+11; isspace(*p); p++); 64 continue;
64 » » » for (z=p; *z && !isspace(*z); z++); 65 }
65 » » » *z=0; 66 if (!strncmp(line, "nameserver", 10) && isspace(line[10])) {
66 » » » if (__lookup_ipliteral(conf->ns+nns, p, AF_UNSPEC) > 0) 67 if (nns >= MAXNS)
67 » » » » nns++; 68 continue;
68 » » » continue; 69 for (p = line + 11; isspace(*p); p++)
69 » » } 70 ;
71 for (z = p; *z && !isspace(*z); z++)
72 ;
73 *z = 0;
74 if (__lookup_ipliteral(conf->ns + nns, p, AF_UNSPEC) > 0)
75 nns++;
76 continue;
77 }
70 78
71 » » if (!search) continue; 79 if (!search)
72 » » if ((strncmp(line, "domain", 6) && strncmp(line, "search", 6)) 80 continue;
73 » » || !isspace(line[6])) 81 if ((strncmp(line, "domain", 6) && strncmp(line, "search", 6)) ||
74 » » » continue; 82 !isspace(line[6]))
75 » » for (p=line+7; isspace(*p); p++); 83 continue;
76 » » size_t l = strlen(p); 84 for (p = line + 7; isspace(*p); p++)
77 » » /* This can never happen anyway with chosen buffer sizes. */ 85 ;
78 » » if (l >= search_sz) continue; 86 size_t l = strlen(p);
79 » » memcpy(search, p, l+1); 87 /* This can never happen anyway with chosen buffer sizes. */
80 » } 88 if (l >= search_sz)
89 continue;
90 memcpy(search, p, l + 1);
91 }
81 92
82 » __fclose_ca(f); 93 __fclose_ca(f);
83 94
84 no_resolv_conf: 95 no_resolv_conf:
85 » if (!nns) { 96 if (!nns) {
86 » » __lookup_ipliteral(conf->ns, "127.0.0.1", AF_UNSPEC); 97 __lookup_ipliteral(conf->ns, "127.0.0.1", AF_UNSPEC);
87 » » nns = 1; 98 nns = 1;
88 » } 99 }
89 100
90 » conf->nns = nns; 101 conf->nns = nns;
91 102
92 » return 0; 103 return 0;
93 } 104 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698