示例#1
0
imeth char * BufferedTempFile_im_gGets(object self, char *buf, int sz)
{ BufferedTempFile_iv_t *iv = GetIVs(BufferedTempFile, self);
	char *tmpBuffer; 

	if (iv->iTmpFile) 
		return gGets(iv->iTmpFile, buf, sz); 
	else 
	{ 



		tmpBuffer = strstr(iv->iBuffer + iv->iCurrentOffset, "\n"); 

		if (tmpBuffer == NULL) 
		{ 
			gRead(self, buf, sz - 1); 
			buf[sz - 1] = 0x00; 
		} 
		else if (tmpBuffer - iv->iBuffer + iv->iCurrentOffset <= sz - 1) 
		{ 
			gRead(self, buf, tmpBuffer - iv->iBuffer + iv->iCurrentOffset + 1); 
			buf[tmpBuffer - iv->iBuffer + iv->iCurrentOffset] = 0x00; 
		} 
		else 
		{ 
			gRead(self, buf, sz - 1); 
			buf[sz - 1] = 0x00; 
		} 

		return buf; 
	} 
} 
示例#2
0
char *
gRecvArr( int *num )
{
	char *arr;

	gDebug( "Receiving array from %s ...\n", who );
	gRead( num, sizeof(*num) );
	gDebug( " -> %d bytes\n", *num );
	if (!*num)
		return (char *)0;
	if (!(arr = malloc( *num )))
		logPanic( "No memory for read buffer\n" );
	gRead( arr, *num );
	gDebug( " -> %02[*hhx\n", *num, arr );
	return arr;
}
示例#3
0
static char *
igRecvArr( int *rlen )
{
	int len;
	char *buf;

	gRead( &len, sizeof(len) );
	*rlen = len;
	gDebug( " -> %d bytes\n", len );
	if (!len)
		return (char *)0;
	if (!(buf = malloc( len )))
		logPanic( "No memory for read buffer\n" );
	gRead( buf, len );
	return buf;
}
示例#4
0
int
gRecvInt()
{
	int val;

	gDebug( "Receiving int from %s ...\n", who );
	gRead( &val, sizeof(val) );
	gDebug( " -> %d (%#x)\n", val, val );
	return val;
}
示例#5
0
imeth int BufferedTempFile_im_gRead(object self, char *buf, unsigned n)
{ BufferedTempFile_iv_t *iv = GetIVs(BufferedTempFile, self);
	int bytesRead = min(n, iv->iBufSize - iv->iCurrentOffset); 

	if (iv->iTmpFile) 
		return gRead(iv->iTmpFile, buf, n); 
	else 
	{ 
		memcpy(buf, iv->iBuffer + iv->iCurrentOffset, bytesRead); 
		iv->iCurrentOffset += bytesRead; 
		return bytesRead; 
	} 
}