コード例 #1
0
ファイル: s_grow.c プロジェクト: 99years/plan9
/* grow a String's allocation by at least `incr' bytes */
extern String*
s_grow(String *s, int incr)	
{
	char *cp;
	int size;

	if(s->fixed)
		sysfatal("s_grow of constant string");
	s = s_unique(s);

	/*
	 *  take a larger increment to avoid mallocing too often
	 */
	size = s->end-s->base;
	if(size/2 < incr)
		size += incr;
	else
		size += size/2;

	cp = realloc(s->base, size);
	if (cp == 0)
		sysfatal("s_grow: %r");
	s->ptr = (s->ptr - s->base) + cp;
	s->end = cp + size;
	s->base = cp;

	return s;
}
コード例 #2
0
ファイル: s_reset.c プロジェクト: 00001/plan9port
String*
s_restart(String *s)
{
	s = s_unique(s);
	s->ptr = s->base;
	return s;
}
コード例 #3
0
ファイル: s_reset.c プロジェクト: 00001/plan9port
String*
s_reset(String *s)
{
	if(s != nil){
		s = s_unique(s);
		s->ptr = s->base;
		*s->ptr = '\0';
	} else
		s = s_new();
	return s;
}