Blame


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"
7 7cf289ca 2004-04-06 devnull
8 7cf289ca 2004-04-06 devnull void*
9 7cf289ca 2004-04-06 devnull emalloc(ulong n)
10 7cf289ca 2004-04-06 devnull {
11 7cf289ca 2004-04-06 devnull void *p;
12 7cf289ca 2004-04-06 devnull
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;
18 7cf289ca 2004-04-06 devnull }
19 7cf289ca 2004-04-06 devnull
20 7cf289ca 2004-04-06 devnull void*
21 7cf289ca 2004-04-06 devnull erealloc(void *p, ulong n)
22 7cf289ca 2004-04-06 devnull {
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;
27 7cf289ca 2004-04-06 devnull }
28 7cf289ca 2004-04-06 devnull
29 7cf289ca 2004-04-06 devnull char*
30 7cf289ca 2004-04-06 devnull estrdup(char *s)
31 7cf289ca 2004-04-06 devnull {
32 7cf289ca 2004-04-06 devnull char *t;
33 7cf289ca 2004-04-06 devnull
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;
37 7cf289ca 2004-04-06 devnull }
38 7cf289ca 2004-04-06 devnull
39 7cf289ca 2004-04-06 devnull char*
40 7cf289ca 2004-04-06 devnull estrstrdup(char *s, char *t)
41 7cf289ca 2004-04-06 devnull {
42 7cf289ca 2004-04-06 devnull long ns, nt;
43 7cf289ca 2004-04-06 devnull char *u;
44 7cf289ca 2004-04-06 devnull
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;
55 7cf289ca 2004-04-06 devnull }
56 7cf289ca 2004-04-06 devnull
57 7cf289ca 2004-04-06 devnull char*
58 7cf289ca 2004-04-06 devnull eappend(char *s, char *sep, char *t)
59 7cf289ca 2004-04-06 devnull {
60 7cf289ca 2004-04-06 devnull long ns, nsep, nt;
61 7cf289ca 2004-04-06 devnull char *u;
62 7cf289ca 2004-04-06 devnull
63 7cf289ca 2004-04-06 devnull if(t == nil)
64 7cf289ca 2004-04-06 devnull u = estrstrdup(s, sep);
65 7cf289ca 2004-04-06 devnull else{
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';
77 7cf289ca 2004-04-06 devnull }
78 7cf289ca 2004-04-06 devnull free(s);
79 7cf289ca 2004-04-06 devnull return u;
80 7cf289ca 2004-04-06 devnull }
81 7cf289ca 2004-04-06 devnull
82 7cf289ca 2004-04-06 devnull char*
83 7cf289ca 2004-04-06 devnull egrow(char *s, char *sep, char *t)
84 7cf289ca 2004-04-06 devnull {
85 7cf289ca 2004-04-06 devnull s = eappend(s, sep, t);
86 7cf289ca 2004-04-06 devnull free(t);
87 7cf289ca 2004-04-06 devnull return s;
88 7cf289ca 2004-04-06 devnull }
89 7cf289ca 2004-04-06 devnull
90 7cf289ca 2004-04-06 devnull void
91 7cf289ca 2004-04-06 devnull error(char *fmt, ...)
92 7cf289ca 2004-04-06 devnull {
93 7cf289ca 2004-04-06 devnull va_list arg;
94 7cf289ca 2004-04-06 devnull char buf[256];
95 7cf289ca 2004-04-06 devnull Fmt f;
96 7cf289ca 2004-04-06 devnull
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);
105 7cf289ca 2004-04-06 devnull }
106 7cf289ca 2004-04-06 devnull
107 7cf289ca 2004-04-06 devnull void
108 7cf289ca 2004-04-06 devnull growbytes(Bytes *b, char *s, long ns)
109 7cf289ca 2004-04-06 devnull {
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");
116 7cf289ca 2004-04-06 devnull }
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';
120 7cf289ca 2004-04-06 devnull }