xref: /plan9/sys/src/cmd/awd.c (revision 4d44ba9b9ee4246ddbd96c7fcaf0918ab92ab35a)
1219b2ee8SDavid du Colombier #include <u.h>
2219b2ee8SDavid du Colombier #include <libc.h>
3219b2ee8SDavid du Colombier 
4*4d44ba9bSDavid du Colombier /*
5*4d44ba9bSDavid du Colombier  * like fprint but be sure to deliver as a single write.
6*4d44ba9bSDavid du Colombier  * (fprint uses a small write buffer.)
7*4d44ba9bSDavid du Colombier  */
8*4d44ba9bSDavid du Colombier void
xfprint(int fd,char * fmt,...)9*4d44ba9bSDavid du Colombier xfprint(int fd, char *fmt, ...)
10*4d44ba9bSDavid du Colombier {
11*4d44ba9bSDavid du Colombier 	char *s;
12*4d44ba9bSDavid du Colombier 	va_list arg;
13*4d44ba9bSDavid du Colombier 
14*4d44ba9bSDavid du Colombier 	va_start(arg, fmt);
15*4d44ba9bSDavid du Colombier 	s = vsmprint(fmt, arg);
16*4d44ba9bSDavid du Colombier 	va_end(arg);
17*4d44ba9bSDavid du Colombier 	if(s == nil)
18*4d44ba9bSDavid du Colombier 		sysfatal("smprint: %r");
19*4d44ba9bSDavid du Colombier 	write(fd, s, strlen(s));
20*4d44ba9bSDavid du Colombier 	free(s);
21*4d44ba9bSDavid du Colombier }
22*4d44ba9bSDavid du Colombier 
23219b2ee8SDavid du Colombier void
main(int argc,char ** argv)24219b2ee8SDavid du Colombier main(int argc, char **argv)
25219b2ee8SDavid du Colombier {
26*4d44ba9bSDavid du Colombier 	int fd;
27*4d44ba9bSDavid du Colombier 	char dir[512];
28219b2ee8SDavid du Colombier 
29219b2ee8SDavid du Colombier 	fd = open("/dev/acme/ctl", OWRITE);
30219b2ee8SDavid du Colombier 	if(fd < 0)
31219b2ee8SDavid du Colombier 		exits(0);
32219b2ee8SDavid du Colombier 	getwd(dir, 512);
33*4d44ba9bSDavid du Colombier 	if(dir[0]!=0 && dir[strlen(dir)-1]=='/')
34*4d44ba9bSDavid du Colombier 		dir[strlen(dir)-1] = 0;
35*4d44ba9bSDavid du Colombier 	xfprint(fd, "name %s/-%s\n",  dir, argc > 1 ? argv[1] : "rc");
36*4d44ba9bSDavid du Colombier 	xfprint(fd, "dumpdir %s\n", dir);
37219b2ee8SDavid du Colombier 	exits(0);
38219b2ee8SDavid du Colombier }
39