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