ref: fd50731b43864c9e2e7dcaf1a8aae4d3a3c7c8fb
dir: /util.c/
#include <u.h> #include <libc.h> #include <draw.h> #include "dat.h" #include "fns.h" int debug; int max(int a, int b) { return a > b ? a : b; } int min(int a, int b) { return a < b ? a : b; } int mobjfmt(Fmt *fmt) { Mobj *mo; mo = va_arg(fmt->args, Mobj*); if(mo == nil) return fmtstrcpy(fmt, "[]"); return fmtprint(fmt, "[%s:%#p:%P]", mo->o->name, mo, mo->Point); } void dprint(char *fmt, ...) { char s[256]; va_list arg; if(!debug) return; va_start(arg, fmt); vseprint(s, s+sizeof s, fmt, arg); va_end(arg); fprint(2, "%s", s); } char * estrdup(char *s) { if((s = strdup(s)) == nil) sysfatal("estrdup: %r"); setmalloctag(s, getcallerpc(&s)); return s; } void * erealloc(void *p, ulong n, ulong oldn) { if((p = realloc(p, n)) == nil) sysfatal("realloc: %r"); setrealloctag(p, getcallerpc(&p)); if(n > oldn) memset((uchar *)p + oldn, 0, n - oldn); return p; } void * emalloc(ulong n) { void *p; if((p = mallocz(n, 1)) == nil) sysfatal("emalloc: %r"); setmalloctag(p, getcallerpc(&n)); return p; } vlong flen(int fd) { vlong l; Dir *d; if((d = dirfstat(fd)) == nil) sysfatal("flen: %r"); l = d->length; free(d); return l; }