xref: /plan9/sys/src/cmd/auth/lib/wrbio.c (revision 219b2ee8daee37f4aad58d63f21287faa8e4ffdc)
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