1219b2ee8SDavid du Colombier #include <u.h> 2219b2ee8SDavid du Colombier #include <libc.h> 3219b2ee8SDavid du Colombier #include <bio.h> 4219b2ee8SDavid du Colombier #include <ctype.h> 5219b2ee8SDavid du Colombier #include <auth.h> 6219b2ee8SDavid du Colombier #include "authsrv.h" 7219b2ee8SDavid du Colombier 8219b2ee8SDavid du Colombier void 9219b2ee8SDavid du Colombier clrbio(Acctbio *a) 10219b2ee8SDavid du Colombier { 11219b2ee8SDavid du Colombier int i; 12219b2ee8SDavid du Colombier 13219b2ee8SDavid du Colombier if(a->user) 14219b2ee8SDavid du Colombier free(a->user); 15*7dd7cddfSDavid du Colombier if(a->postid) 16*7dd7cddfSDavid du Colombier free(a->postid); 17219b2ee8SDavid du Colombier if(a->name) 18219b2ee8SDavid du Colombier free(a->name); 19219b2ee8SDavid du Colombier if(a->dept) 20219b2ee8SDavid du Colombier free(a->dept); 21219b2ee8SDavid du Colombier for(i = 0; i < Nemail; i++) 22219b2ee8SDavid du Colombier if(a->email[i]) 23219b2ee8SDavid du Colombier free(a->email[i]); 24219b2ee8SDavid du Colombier memset(a, 0, sizeof(Acctbio)); 25219b2ee8SDavid du Colombier } 26219b2ee8SDavid du Colombier 27219b2ee8SDavid du Colombier void 28219b2ee8SDavid du Colombier rdbio(char *file, char *user, Acctbio *a) 29219b2ee8SDavid du Colombier { 30*7dd7cddfSDavid du Colombier int i,n; 31219b2ee8SDavid du Colombier Biobuf *b; 32*7dd7cddfSDavid du Colombier char *p; 33*7dd7cddfSDavid du Colombier char *field[20]; 34219b2ee8SDavid du Colombier 35219b2ee8SDavid du Colombier memset(a, 0, sizeof(Acctbio)); 36219b2ee8SDavid du Colombier b = Bopen(file, OREAD); 37219b2ee8SDavid du Colombier if(b == 0) 38219b2ee8SDavid du Colombier return; 39219b2ee8SDavid du Colombier while(p = Brdline(b, '\n')){ 40*7dd7cddfSDavid du Colombier p[Blinelen(b)-1] = 0; 41*7dd7cddfSDavid du Colombier n = getfields(p, field, nelem(field), 0, "|"); 42*7dd7cddfSDavid du Colombier if(n < 4) 43219b2ee8SDavid du Colombier continue; 44*7dd7cddfSDavid du Colombier if(strcmp(field[0], user) != 0) 45219b2ee8SDavid du Colombier continue; 46219b2ee8SDavid du Colombier 47219b2ee8SDavid du Colombier clrbio(a); 48219b2ee8SDavid du Colombier 49*7dd7cddfSDavid du Colombier a->postid = strdup(field[1]); 50*7dd7cddfSDavid du Colombier a->name = strdup(field[2]); 51*7dd7cddfSDavid du Colombier a->dept = strdup(field[3]); 52*7dd7cddfSDavid du Colombier if(n-4 >= Nemail) 53*7dd7cddfSDavid du Colombier n = Nemail-4; 54*7dd7cddfSDavid du Colombier for(i = 4; i < n; i++) 55*7dd7cddfSDavid du Colombier a->email[i-4] = strdup(field[i]); 56219b2ee8SDavid du Colombier } 57219b2ee8SDavid du Colombier a->user = strdup(user); 58219b2ee8SDavid du Colombier Bterm(b); 59219b2ee8SDavid du Colombier } 60