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

Side by Side Diff: fusl/src/passwd/getgrent_a.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 "pwf.h" 1 #include "pwf.h"
2 #include <pthread.h> 2 #include <pthread.h>
3 3
4 static unsigned atou(char **s) 4 static unsigned atou(char** s) {
5 { 5 unsigned x;
6 » unsigned x; 6 for (x = 0; **s - '0' < 10U; ++*s)
7 » for (x=0; **s-'0'<10U; ++*s) x=10*x+(**s-'0'); 7 x = 10 * x + (**s - '0');
8 » return x; 8 return x;
9 } 9 }
10 10
11 int __getgrent_a(FILE *f, struct group *gr, char **line, size_t *size, char ***m em, size_t *nmem, struct group **res) 11 int __getgrent_a(FILE* f,
12 { 12 struct group* gr,
13 » ssize_t l; 13 char** line,
14 » char *s, *mems; 14 size_t* size,
15 » size_t i; 15 char*** mem,
16 » int rv = 0; 16 size_t* nmem,
17 » int cs; 17 struct group** res) {
18 » pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs); 18 ssize_t l;
19 » for (;;) { 19 char *s, *mems;
20 » » if ((l=getline(line, size, f)) < 0) { 20 size_t i;
21 » » » rv = ferror(f) ? errno : 0; 21 int rv = 0;
22 » » » free(*line); 22 int cs;
23 » » » *line = 0; 23 pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
24 » » » gr = 0; 24 for (;;) {
25 » » » goto end; 25 if ((l = getline(line, size, f)) < 0) {
26 » » } 26 rv = ferror(f) ? errno : 0;
27 » » line[0][l-1] = 0; 27 free(*line);
28 *line = 0;
29 gr = 0;
30 goto end;
31 }
32 line[0][l - 1] = 0;
28 33
29 » » s = line[0]; 34 s = line[0];
30 » » gr->gr_name = s++; 35 gr->gr_name = s++;
31 » » if (!(s = strchr(s, ':'))) continue; 36 if (!(s = strchr(s, ':')))
37 continue;
32 38
33 » » *s++ = 0; gr->gr_passwd = s; 39 *s++ = 0;
34 » » if (!(s = strchr(s, ':'))) continue; 40 gr->gr_passwd = s;
41 if (!(s = strchr(s, ':')))
42 continue;
35 43
36 » » *s++ = 0; gr->gr_gid = atou(&s); 44 *s++ = 0;
37 » » if (*s != ':') continue; 45 gr->gr_gid = atou(&s);
46 if (*s != ':')
47 continue;
38 48
39 » » *s++ = 0; mems = s; 49 *s++ = 0;
40 » » break; 50 mems = s;
41 » } 51 break;
52 }
42 53
43 » for (*nmem=!!*s; *s; s++) 54 for (*nmem = !!*s; *s; s++)
44 » » if (*s==',') ++*nmem; 55 if (*s == ',')
45 » free(*mem); 56 ++*nmem;
46 » *mem = calloc(sizeof(char *), *nmem+1); 57 free(*mem);
47 » if (!*mem) { 58 *mem = calloc(sizeof(char*), *nmem + 1);
48 » » rv = errno; 59 if (!*mem) {
49 » » free(*line); 60 rv = errno;
50 » » *line = 0; 61 free(*line);
51 » » gr = 0; 62 *line = 0;
52 » » goto end; 63 gr = 0;
53 » } 64 goto end;
54 » if (*mems) { 65 }
55 » » mem[0][0] = mems; 66 if (*mems) {
56 » » for (s=mems, i=0; *s; s++) 67 mem[0][0] = mems;
57 » » » if (*s==',') *s++ = 0, mem[0][++i] = s; 68 for (s = mems, i = 0; *s; s++)
58 » » mem[0][++i] = 0; 69 if (*s == ',')
59 » } else { 70 *s++ = 0, mem[0][++i] = s;
60 » » mem[0][0] = 0; 71 mem[0][++i] = 0;
61 » } 72 } else {
62 » gr->gr_mem = *mem; 73 mem[0][0] = 0;
74 }
75 gr->gr_mem = *mem;
63 end: 76 end:
64 » pthread_setcancelstate(cs, 0); 77 pthread_setcancelstate(cs, 0);
65 » *res = gr; 78 *res = gr;
66 » if(rv) errno = rv; 79 if (rv)
67 » return rv; 80 errno = rv;
81 return rv;
68 } 82 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698