1 #include <u.h>
2 #include <libc.h>
3 #include <bio.h>
4 #include <ctype.h>
5 #include "authcmdlib.h"
6
7 void
clrbio(Acctbio * a)8 clrbio(Acctbio *a)
9 {
10 int i;
11
12 if(a->user)
13 free(a->user);
14 if(a->postid)
15 free(a->postid);
16 if(a->name)
17 free(a->name);
18 if(a->dept)
19 free(a->dept);
20 for(i = 0; i < Nemail; i++)
21 if(a->email[i])
22 free(a->email[i]);
23 memset(a, 0, sizeof(Acctbio));
24 }
25
26 void
rdbio(char * file,char * user,Acctbio * a)27 rdbio(char *file, char *user, Acctbio *a)
28 {
29 int i,n;
30 Biobuf *b;
31 char *p;
32 char *field[20];
33
34 memset(a, 0, sizeof(Acctbio));
35 b = Bopen(file, OREAD);
36 if(b == 0)
37 return;
38 while(p = Brdline(b, '\n')){
39 p[Blinelen(b)-1] = 0;
40 n = getfields(p, field, nelem(field), 0, "|");
41 if(n < 4)
42 continue;
43 if(strcmp(field[0], user) != 0)
44 continue;
45
46 clrbio(a);
47
48 a->postid = strdup(field[1]);
49 a->name = strdup(field[2]);
50 a->dept = strdup(field[3]);
51 if(n-4 >= Nemail)
52 n = Nemail-4;
53 for(i = 4; i < n; i++)
54 a->email[i-4] = strdup(field[i]);
55 }
56 a->user = strdup(user);
57 Bterm(b);
58 }
59