1*219b2ee8SDavid du Colombier #include <u.h> 2*219b2ee8SDavid du Colombier #include <libc.h> 3*219b2ee8SDavid du Colombier #include <bio.h> 4*219b2ee8SDavid du Colombier #include <ctype.h> 5*219b2ee8SDavid du Colombier #include <auth.h> 6*219b2ee8SDavid du Colombier #include "authsrv.h" 7*219b2ee8SDavid du Colombier 8*219b2ee8SDavid du Colombier void 9*219b2ee8SDavid du Colombier wrbio(char *file, Acctbio *a) 10*219b2ee8SDavid du Colombier { 11*219b2ee8SDavid du Colombier char uinfo[512]; 12*219b2ee8SDavid du Colombier char sponsors[512]; 13*219b2ee8SDavid du Colombier int i, fd, n; 14*219b2ee8SDavid du Colombier 15*219b2ee8SDavid du Colombier fd = open(file, OWRITE); 16*219b2ee8SDavid du Colombier if(fd < 0) 17*219b2ee8SDavid du Colombier error("can't open %s", file); 18*219b2ee8SDavid du Colombier if(seek(fd, 0, 2) < 0) 19*219b2ee8SDavid du Colombier error("can't seek %s", file); 20*219b2ee8SDavid du Colombier 21*219b2ee8SDavid du Colombier if(a->name == 0) 22*219b2ee8SDavid du Colombier a->name = strdup(a->user); 23*219b2ee8SDavid du Colombier if(a->dept == 0) 24*219b2ee8SDavid du Colombier a->dept = strdup("1127?"); 25*219b2ee8SDavid du Colombier if(a->email[0] == 0) 26*219b2ee8SDavid du Colombier a->email[0] = strdup(a->user); 27*219b2ee8SDavid du Colombier 28*219b2ee8SDavid du Colombier snprint(uinfo, sizeof(uinfo), "%s %s <%s>", a->name, a->dept, a->email[0]); 29*219b2ee8SDavid du Colombier n = 0; 30*219b2ee8SDavid du Colombier sponsors[0] = 0; 31*219b2ee8SDavid du Colombier for(i = 1; i < Nemail; i++){ 32*219b2ee8SDavid du Colombier if(a->email[i] == 0) 33*219b2ee8SDavid du Colombier break; 34*219b2ee8SDavid du Colombier n += snprint(sponsors+n, sizeof(sponsors)-n, "<%s>", a->email[i]); 35*219b2ee8SDavid du Colombier } 36*219b2ee8SDavid du Colombier 37*219b2ee8SDavid du Colombier fprint(fd, "%s %s %s\n", a->user, uinfo, sponsors); 38*219b2ee8SDavid du Colombier close(fd); 39*219b2ee8SDavid du Colombier } 40