henesyinit from lsubb0c8bdb6 years agoHistory
106 lines · 1.4 KB · C
RawDownload
#include <u.h>#include <libc.h>#include <bio.h>#include <thread.h>#include <plumb.h>#include <omero.h>#include "dat.h" void*emalloc(uint n){	void *p; 	p = malloc(n);	if(p == nil)		error("can't malloc: %r");	memset(p, 0, n);	setmalloctag(p, getcallerpc(&n));	return p;} void*erealloc(void *p, uint n){	p = realloc(p, n);	if(p == nil)		error("can't realloc: %r");	setmalloctag(p, getcallerpc(&n));	return p;} char*estrdup(char *s){	char *t; 	t = emalloc(strlen(s)+1);	strcpy(t, s);	return t;} char*estrstrdup(char *s, char *t){	char *u; 	u = emalloc(strlen(s)+strlen(t)+1);	strcpy(u, s);	strcat(u, t);	return u;} char*eappend(char *s, char *sep, char *t){	char *u; 	if(t == nil)		u = estrstrdup(s, sep);	else{		u = emalloc(strlen(s)+strlen(sep)+strlen(t)+1);		strcpy(u, s);		strcat(u, sep);		strcat(u, t);	}	free(s);	return u;} char*egrow(char *s, char *sep, char *t){	s = eappend(s, sep, t);	free(t);	return s;} voiderror(char *fmt, ...){	Fmt f;	char buf[64];	va_list arg; 	fmtfdinit(&f, 2, buf, sizeof buf);	fmtprint(&f, "Mail: ");	va_start(arg, fmt);	fmtvprint(&f, fmt, arg);	va_end(arg);	fmtprint(&f, "\n");	fmtfdflush(&f);	threadexitsall(fmt);} voidctlprint(int fd, char *fmt, ...){	int n;	va_list arg; 	va_start(arg, fmt);	n = vfprint(fd, fmt, arg);	va_end(arg);	if(n <= 0)		error("control file write error: %r");}