echolinehmmm3ffbdfe10 years agoHistory
105 lines · 1.4 KB · C
RawDownload
#include <u.h>#include <libc.h>#include <bio.h>#include <thread.h>#include <plumb.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(buf);} 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");}

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t