henesyinit from p9f47575dc5 years agoHistory
80 lines · 1.1 KB · C
RawDownload
#include "cdmglob.h" #define MSIZE	8192#define NSTACK	32  typedef struct {	char	*m_start;	char	*m_end;	char	*m_brk;} Minfo;   static Minfo	stack[NSTACK];static char	*mend, *mstart;static int	nstack;  char *doalloc (int n){	char	*x;	unsigned int	size; 	if (n & 3)		n = 4 + (n & ~3);	if ((unsigned long) mstart & 3)		mstart = (char *) (4 + ((unsigned long) mstart & ~3));	if (mend - mstart < n) {		size = ((n+3) / MSIZE + 1) * MSIZE;		if ((mstart = sbrk (size)) != (char *) -1)			mend = mstart + size;		else	fatal ("out of space");		if ((unsigned long) mstart & 3)			mstart = (char *) (4 + ((unsigned long) mstart & ~3));	}	x = mstart;	mstart += n;	return (x);}  voidpopmem(void){	if (--nstack < 0)		fatal ("stack underflow");	mstart = stack[nstack].m_start;	return;}  voidpushmem(void){	if (nstack >= NSTACK)		fatal ("stack overflow");	stack[nstack].m_start = mstart;	stack[nstack++].m_end = mend;	return;}  char *strsave (char *s){	register char	*t, *u; again:	for (t = s, u = mstart; u < mend && (*u++ = *t++);); 	if (u < mend) {		t = mstart;		mstart = u;		return (t);	}	mstart = doalloc (MSIZE);	goto again;}

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