1219b2ee8SDavid du Colombier #include <u.h>
2219b2ee8SDavid du Colombier #include <libc.h>
3219b2ee8SDavid du Colombier #include <bio.h>
4219b2ee8SDavid du Colombier #include <ctype.h>
5*9a747e4fSDavid du Colombier #include "authcmdlib.h"
6219b2ee8SDavid du Colombier
7219b2ee8SDavid du Colombier void
clrbio(Acctbio * a)8219b2ee8SDavid du Colombier clrbio(Acctbio *a)
9219b2ee8SDavid du Colombier {
10219b2ee8SDavid du Colombier int i;
11219b2ee8SDavid du Colombier
12219b2ee8SDavid du Colombier if(a->user)
13219b2ee8SDavid du Colombier free(a->user);
147dd7cddfSDavid du Colombier if(a->postid)
157dd7cddfSDavid du Colombier free(a->postid);
16219b2ee8SDavid du Colombier if(a->name)
17219b2ee8SDavid du Colombier free(a->name);
18219b2ee8SDavid du Colombier if(a->dept)
19219b2ee8SDavid du Colombier free(a->dept);
20219b2ee8SDavid du Colombier for(i = 0; i < Nemail; i++)
21219b2ee8SDavid du Colombier if(a->email[i])
22219b2ee8SDavid du Colombier free(a->email[i]);
23219b2ee8SDavid du Colombier memset(a, 0, sizeof(Acctbio));
24219b2ee8SDavid du Colombier }
25219b2ee8SDavid du Colombier
26219b2ee8SDavid du Colombier void
rdbio(char * file,char * user,Acctbio * a)27219b2ee8SDavid du Colombier rdbio(char *file, char *user, Acctbio *a)
28219b2ee8SDavid du Colombier {
297dd7cddfSDavid du Colombier int i,n;
30219b2ee8SDavid du Colombier Biobuf *b;
317dd7cddfSDavid du Colombier char *p;
327dd7cddfSDavid du Colombier char *field[20];
33219b2ee8SDavid du Colombier
34219b2ee8SDavid du Colombier memset(a, 0, sizeof(Acctbio));
35219b2ee8SDavid du Colombier b = Bopen(file, OREAD);
36219b2ee8SDavid du Colombier if(b == 0)
37219b2ee8SDavid du Colombier return;
38219b2ee8SDavid du Colombier while(p = Brdline(b, '\n')){
397dd7cddfSDavid du Colombier p[Blinelen(b)-1] = 0;
407dd7cddfSDavid du Colombier n = getfields(p, field, nelem(field), 0, "|");
417dd7cddfSDavid du Colombier if(n < 4)
42219b2ee8SDavid du Colombier continue;
437dd7cddfSDavid du Colombier if(strcmp(field[0], user) != 0)
44219b2ee8SDavid du Colombier continue;
45219b2ee8SDavid du Colombier
46219b2ee8SDavid du Colombier clrbio(a);
47219b2ee8SDavid du Colombier
487dd7cddfSDavid du Colombier a->postid = strdup(field[1]);
497dd7cddfSDavid du Colombier a->name = strdup(field[2]);
507dd7cddfSDavid du Colombier a->dept = strdup(field[3]);
517dd7cddfSDavid du Colombier if(n-4 >= Nemail)
527dd7cddfSDavid du Colombier n = Nemail-4;
537dd7cddfSDavid du Colombier for(i = 4; i < n; i++)
547dd7cddfSDavid du Colombier a->email[i-4] = strdup(field[i]);
55219b2ee8SDavid du Colombier }
56219b2ee8SDavid du Colombier a->user = strdup(user);
57219b2ee8SDavid du Colombier Bterm(b);
58219b2ee8SDavid du Colombier }
59