#include "a.h" void* emalloc(int n) { void *v; v = mallocz(n, 1); if(v == nil) sysfatal("out of memory"); return v; } void* erealloc(void *v, int n) { v = realloc(v, n); if(v == nil) sysfatal("out of memory"); return v; } char* estrdup(char *s) { s = strdup(s); if(s == nil) sysfatal("out of memory"); return s; } int timefmt(Fmt *f) { Tm tm; vlong ms; ms = nsec()/1000000; tm = *localtime(ms/1000); fmtprint(f, "%02d:%02d:%02d.%03d", tm.hour, tm.min, tm.sec, (int)(ms%1000)); return 0; } int writen(int fd, void *buf, int n) { long m, tot; for(tot=0; tot 8192) m = 8192; if(write(fd, (uchar*)buf+tot, m) != m) break; } return tot; } int urlencodefmt(Fmt *fmt) { int x; char *s; s = va_arg(fmt->args, char*); for(; *s; s++){ x = (uchar)*s; if(x == ' ') fmtrune(fmt, '+'); else if(('a' <= x && x <= 'z') || ('A' <= x && x <= 'Z') || ('0' <= x && x <= '9') || strchr("$-_.+!*'()", x)){ fmtrune(fmt, x); }else fmtprint(fmt, "%%%02ux", x); } return 0; }