xref: /plan9/sys/src/cmd/auth/lib/wrbio.c (revision 9a747e4fd48b9f4522c70c07e8f882a15030f964)
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
wrbio(char * file,Acctbio * a)8219b2ee8SDavid du Colombier wrbio(char *file, Acctbio *a)
9219b2ee8SDavid du Colombier {
107dd7cddfSDavid du Colombier 	char buf[1024];
11219b2ee8SDavid du Colombier 	int i, fd, n;
12219b2ee8SDavid du Colombier 
13219b2ee8SDavid du Colombier 	fd = open(file, OWRITE);
14219b2ee8SDavid du Colombier 	if(fd < 0)
15219b2ee8SDavid du Colombier 		error("can't open %s", file);
16219b2ee8SDavid du Colombier 	if(seek(fd, 0, 2) < 0)
17219b2ee8SDavid du Colombier 		error("can't seek %s", file);
18219b2ee8SDavid du Colombier 
197dd7cddfSDavid du Colombier 	if(a->postid == 0)
207dd7cddfSDavid du Colombier 		a->postid = "";
21219b2ee8SDavid du Colombier 	if(a->name == 0)
227dd7cddfSDavid du Colombier 		a->name = "";
23219b2ee8SDavid du Colombier 	if(a->dept == 0)
247dd7cddfSDavid du Colombier 		a->dept = "";
25219b2ee8SDavid du Colombier 	if(a->email[0] == 0)
26219b2ee8SDavid du Colombier 		a->email[0] = strdup(a->user);
27219b2ee8SDavid du Colombier 
28219b2ee8SDavid du Colombier 	n = 0;
297dd7cddfSDavid du Colombier 	n += snprint(buf+n, sizeof(buf)-n, "%s|%s|%s|%s",
307dd7cddfSDavid du Colombier 		a->user, a->postid, a->name, a->dept);
317dd7cddfSDavid du Colombier 	for(i = 0; i < Nemail; i++){
32219b2ee8SDavid du Colombier 		if(a->email[i] == 0)
33219b2ee8SDavid du Colombier 			break;
347dd7cddfSDavid du Colombier 		n += snprint(buf+n, sizeof(buf)-n, "|%s", a->email[i]);
35219b2ee8SDavid du Colombier 	}
367dd7cddfSDavid du Colombier 	n += snprint(buf+n, sizeof(buf)-n, "\n");
37219b2ee8SDavid du Colombier 
387dd7cddfSDavid du Colombier 	write(fd, buf, n);
39219b2ee8SDavid du Colombier 	close(fd);
40219b2ee8SDavid du Colombier }
41