1 7cf289ca 2004-04-06 devnull #include <u.h>
2 7cf289ca 2004-04-06 devnull #include <libc.h>
3 7cf289ca 2004-04-06 devnull #include <bio.h>
4 7cf289ca 2004-04-06 devnull #include <draw.h>
5 7cf289ca 2004-04-06 devnull #include <html.h>
6 7cf289ca 2004-04-06 devnull #include "dat.h"
9 7cf289ca 2004-04-06 devnull emalloc(ulong n)
13 7cf289ca 2004-04-06 devnull p = malloc(n);
14 7cf289ca 2004-04-06 devnull if(p == nil)
15 7cf289ca 2004-04-06 devnull error("can't malloc: %r");
16 7cf289ca 2004-04-06 devnull memset(p, 0, n);
17 7cf289ca 2004-04-06 devnull return p;
21 7cf289ca 2004-04-06 devnull erealloc(void *p, ulong n)
23 7cf289ca 2004-04-06 devnull p = realloc(p, n);
24 7cf289ca 2004-04-06 devnull if(p == nil)
25 7cf289ca 2004-04-06 devnull error("can't malloc: %r");
26 7cf289ca 2004-04-06 devnull return p;
30 7cf289ca 2004-04-06 devnull estrdup(char *s)
34 7cf289ca 2004-04-06 devnull t = emalloc(strlen(s)+1);
35 7cf289ca 2004-04-06 devnull strcpy(t, s);
36 7cf289ca 2004-04-06 devnull return t;
40 7cf289ca 2004-04-06 devnull estrstrdup(char *s, char *t)
42 7cf289ca 2004-04-06 devnull long ns, nt;
45 7cf289ca 2004-04-06 devnull ns = strlen(s);
46 7cf289ca 2004-04-06 devnull nt = strlen(t);
47 7cf289ca 2004-04-06 devnull /* use malloc to avoid memset */
48 7cf289ca 2004-04-06 devnull u = malloc(ns+nt+1);
49 7cf289ca 2004-04-06 devnull if(u == nil)
50 7cf289ca 2004-04-06 devnull error("can't malloc: %r");
51 7cf289ca 2004-04-06 devnull memmove(u, s, ns);
52 7cf289ca 2004-04-06 devnull memmove(u+ns, t, nt);
53 7cf289ca 2004-04-06 devnull u[ns+nt] = '\0';
54 7cf289ca 2004-04-06 devnull return u;
58 7cf289ca 2004-04-06 devnull eappend(char *s, char *sep, char *t)
60 7cf289ca 2004-04-06 devnull long ns, nsep, nt;
63 7cf289ca 2004-04-06 devnull if(t == nil)
64 7cf289ca 2004-04-06 devnull u = estrstrdup(s, sep);
66 7cf289ca 2004-04-06 devnull ns = strlen(s);
67 7cf289ca 2004-04-06 devnull nsep = strlen(sep);
68 7cf289ca 2004-04-06 devnull nt = strlen(t);
69 7cf289ca 2004-04-06 devnull /* use malloc to avoid memset */
70 7cf289ca 2004-04-06 devnull u = malloc(ns+nsep+nt+1);
71 7cf289ca 2004-04-06 devnull if(u == nil)
72 7cf289ca 2004-04-06 devnull error("can't malloc: %r");
73 7cf289ca 2004-04-06 devnull memmove(u, s, ns);
74 7cf289ca 2004-04-06 devnull memmove(u+ns, sep, nsep);
75 7cf289ca 2004-04-06 devnull memmove(u+ns+nsep, t, nt);
76 7cf289ca 2004-04-06 devnull u[ns+nsep+nt] = '\0';
79 7cf289ca 2004-04-06 devnull return u;
83 7cf289ca 2004-04-06 devnull egrow(char *s, char *sep, char *t)
85 7cf289ca 2004-04-06 devnull s = eappend(s, sep, t);
87 7cf289ca 2004-04-06 devnull return s;
91 7cf289ca 2004-04-06 devnull error(char *fmt, ...)
93 7cf289ca 2004-04-06 devnull va_list arg;
94 7cf289ca 2004-04-06 devnull char buf[256];
97 7cf289ca 2004-04-06 devnull fmtfdinit(&f, 2, buf, sizeof buf);
98 7cf289ca 2004-04-06 devnull fmtprint(&f, "Mail: ");
99 7cf289ca 2004-04-06 devnull va_start(arg, fmt);
100 7cf289ca 2004-04-06 devnull fmtvprint(&f, fmt, arg);
101 7cf289ca 2004-04-06 devnull va_end(arg);
102 7cf289ca 2004-04-06 devnull fmtprint(&f, "\n");
103 7cf289ca 2004-04-06 devnull fmtfdflush(&f);
104 7cf289ca 2004-04-06 devnull exits(fmt);
108 7cf289ca 2004-04-06 devnull growbytes(Bytes *b, char *s, long ns)
110 7cf289ca 2004-04-06 devnull if(b->nalloc < b->n + ns + 1){
111 7cf289ca 2004-04-06 devnull b->nalloc = b->n + ns + 8000;
112 7cf289ca 2004-04-06 devnull /* use realloc to avoid memset */
113 7cf289ca 2004-04-06 devnull b->b = realloc(b->b, b->nalloc);
114 7cf289ca 2004-04-06 devnull if(b->b == nil)
115 7cf289ca 2004-04-06 devnull error("growbytes: can't realloc: %r");
117 7cf289ca 2004-04-06 devnull memmove(b->b+b->n, s, ns);
118 7cf289ca 2004-04-06 devnull b->n += ns;
119 7cf289ca 2004-04-06 devnull b->b[b->n] = '\0';