1 9f1fdc12 2005-10-29 devnull #include <u.h>
2 9f1fdc12 2005-10-29 devnull #include <libc.h>
3 9f1fdc12 2005-10-29 devnull #include <bio.h>
4 9f1fdc12 2005-10-29 devnull #include <thread.h>
5 9f1fdc12 2005-10-29 devnull #include <plumb.h>
6 9f1fdc12 2005-10-29 devnull #include <9pclient.h>
7 9f1fdc12 2005-10-29 devnull #include "dat.h"
10 9f1fdc12 2005-10-29 devnull emalloc(uint n)
14 9f1fdc12 2005-10-29 devnull p = malloc(n);
15 9f1fdc12 2005-10-29 devnull if(p == nil)
16 9f1fdc12 2005-10-29 devnull error("can't malloc: %r");
17 9f1fdc12 2005-10-29 devnull memset(p, 0, n);
18 9f1fdc12 2005-10-29 devnull setmalloctag(p, getcallerpc(&n));
19 9f1fdc12 2005-10-29 devnull return p;
23 9f1fdc12 2005-10-29 devnull erealloc(void *p, uint n)
25 9f1fdc12 2005-10-29 devnull p = realloc(p, n);
26 9f1fdc12 2005-10-29 devnull if(p == nil)
27 9f1fdc12 2005-10-29 devnull error("can't realloc: %r");
28 9f1fdc12 2005-10-29 devnull setmalloctag(p, getcallerpc(&n));
29 9f1fdc12 2005-10-29 devnull return p;
33 9f1fdc12 2005-10-29 devnull estrdup(char *s)
37 9f1fdc12 2005-10-29 devnull t = emalloc(strlen(s)+1);
38 9f1fdc12 2005-10-29 devnull strcpy(t, s);
39 9f1fdc12 2005-10-29 devnull return t;
43 9f1fdc12 2005-10-29 devnull estrstrdup(char *s, char *t)
47 9f1fdc12 2005-10-29 devnull u = emalloc(strlen(s)+strlen(t)+1);
48 9f1fdc12 2005-10-29 devnull strcpy(u, s);
49 9f1fdc12 2005-10-29 devnull strcat(u, t);
50 9f1fdc12 2005-10-29 devnull return u;
54 9f1fdc12 2005-10-29 devnull eappend(char *s, char *sep, char *t)
58 9f1fdc12 2005-10-29 devnull if(t == nil)
59 9f1fdc12 2005-10-29 devnull u = estrstrdup(s, sep);
61 9f1fdc12 2005-10-29 devnull u = emalloc(strlen(s)+strlen(sep)+strlen(t)+1);
62 9f1fdc12 2005-10-29 devnull strcpy(u, s);
63 9f1fdc12 2005-10-29 devnull strcat(u, sep);
64 9f1fdc12 2005-10-29 devnull strcat(u, t);
67 9f1fdc12 2005-10-29 devnull return u;
71 9f1fdc12 2005-10-29 devnull egrow(char *s, char *sep, char *t)
73 9f1fdc12 2005-10-29 devnull s = eappend(s, sep, t);
75 9f1fdc12 2005-10-29 devnull return s;
79 9f1fdc12 2005-10-29 devnull error(char *fmt, ...)
82 9f1fdc12 2005-10-29 devnull char buf[64];
83 9f1fdc12 2005-10-29 devnull va_list arg;
85 9f1fdc12 2005-10-29 devnull fmtfdinit(&f, 2, buf, sizeof buf);
86 9f1fdc12 2005-10-29 devnull fmtprint(&f, "Mail: ");
87 9f1fdc12 2005-10-29 devnull va_start(arg, fmt);
88 9f1fdc12 2005-10-29 devnull fmtvprint(&f, fmt, arg);
89 9f1fdc12 2005-10-29 devnull va_end(arg);
90 9f1fdc12 2005-10-29 devnull fmtprint(&f, "\n");
91 9f1fdc12 2005-10-29 devnull fmtfdflush(&f);
92 9f1fdc12 2005-10-29 devnull threadexitsall(fmt);
96 3f8c36d6 2006-02-09 devnull ctlprint(CFid *fd, char *fmt, ...)
99 9f1fdc12 2005-10-29 devnull va_list arg;
101 9f1fdc12 2005-10-29 devnull va_start(arg, fmt);
102 3f8c36d6 2006-02-09 devnull n = fsvprint(fd, fmt, arg);
103 9f1fdc12 2005-10-29 devnull va_end(arg);
104 9f1fdc12 2005-10-29 devnull if(n <= 0)
105 9f1fdc12 2005-10-29 devnull error("control file write error: %r");