#include <u.h> | |
#include <libc.h> | |
#include <bio.h> | |
#include <mach.h> | |
#include "dat.h" | |
static int nwarn; | |
void | |
warn(char *fmt, ...) | |
{ | |
va_list arg; | |
if(++nwarn < 5){ | |
va_start(arg, fmt); | |
fprint(2, "warning: "); | |
vfprint(2, fmt, arg); | |
fprint(2, "\n"); | |
va_end(arg); | |
}else if(nwarn == 5) | |
fprint(2, "[additional warnings elided...]\n"); | |
} | |
void* | |
erealloc(void *v, uint n) | |
{ | |
v = realloc(v, n); | |
if(v == nil) | |
sysfatal("realloc: %r"); | |
return v; | |
} | |
void* | |
emalloc(uint n) | |
{ | |
void *v; | |
v = mallocz(n, 1); | |
if(v == nil) | |
sysfatal("malloc: %r"); | |
return v; | |
} | |
char* | |
estrdup(char *s) | |
{ | |
s = strdup(s); | |
if(s == nil) | |
sysfatal("strdup: %r"); | |
return s; | |
} | |
TypeList* | |
mktl(Type *hd, TypeList *tail) | |
{ | |
TypeList *tl; | |
tl = emalloc(sizeof(*tl)); | |
tl->hd = hd; | |
tl->tl = tail; | |
return tl; | |
} | |