Пример #1
0
bool StorageChunkWriter::WriteBuffer()
{
    ssize_t     writeSize;

    writeSize = writeBuffer.GetLength();
    if (FS_FileWrite(fd.GetFD(), writeBuffer.GetBuffer(), writeSize) != writeSize)
        return false;
        
    return true;
}
Пример #2
0
static void FS_MmsProcessRecvResponse( FS_MmsNetData * data, FS_WspResultData * rData )
{
	FS_MmsEncHead head;

	if( data->send_notify_resp )
	{
		data->finished = FS_TRUE;
		data->success = FS_TRUE;
		FS_MMS_NET_CALLBACK( data, FS_MMS_NET_OK, data->file );
		return;
	}
	
	if( rData->status == FS_WSP_STATUS_OK )
	{
		if( ! data->file[0] )
		{
			if( rData->content_type == FS_WCT_APP_VND_WAP_MMS 
				|| ( FS_STR_NI_EQUAL(rData->mime_content, "application/vnd.wap.mms-message", 31)) )
			{
				FS_GetGuid( data->file );
				IFS_Strcat( data->file, ".mms" );
			}
			else
			{
				data->finished = FS_TRUE;
				FS_MMS_NET_CALLBACK( data, FS_MMS_NET_ERR_UNKNOW, 0 );
				return;
			}
		}
		FS_FileWrite( FS_DIR_MMS, data->file, data->offset, rData->data, rData->len );
		data->offset += rData->len;
		FS_MMS_NET_CALLBACK( data, FS_MMS_NET_RECVING, data->offset );
		
		if( rData->done )
		{
			if( FS_MmsCodecDecodeFileHead( &head, data->file ) && head.tid )
			{
				FS_MmsSendNotifyResp( data, head.tid, FS_MMS_H_V_STATUS_RETRIEVED );
				FS_MmsCodecFreeHead( &head );
				data->send_notify_resp = FS_TRUE;
			}
			else
			{
				data->finished = FS_TRUE;
				data->success = FS_TRUE;
				FS_MMS_NET_CALLBACK( data, FS_MMS_NET_OK, data->file );
			}
		}
	}
	else
	{
		data->finished = FS_TRUE;
		FS_MMS_NET_CALLBACK( data, FS_MMS_NET_ERR_NET, rData->status );
	}
}
Пример #3
0
static void FS_MmsHttpResponseData( void *user_data, FS_HttpHandle hHttp, FS_BYTE *rdata, FS_SINT4 rdata_len )
{
	FS_MmsEncHead head;
	FS_MmsNetData *data = (FS_MmsNetData *)user_data;

	if( data->finished )
		return;
	
	if( data->task == FS_MMS_NET_TASK_SEND )
	{
		/* mms send response */
		data->finished = FS_TRUE;
		FS_MmsCodecDecodeHead( &head, rdata, rdata_len );
		data->success = FS_TRUE;
		FS_MMS_NET_CALLBACK( data, FS_MMS_NET_OK, head.message_id );
		FS_MmsCodecFreeHead( &head );
	}
	else if( data->task == FS_MMS_NET_TASK_RECV )
	{
		if( ! data->send_notify_resp )
		{
			/* mms recv response */
			FS_FileWrite( FS_DIR_MMS, data->file, data->offset, rdata, rdata_len );
			data->offset += rdata_len;
			FS_MMS_NET_CALLBACK( data, FS_MMS_NET_RECVING, data->offset );
		}
		else
		{
			if( ! data->finished )
			{
				data->finished = FS_TRUE;
				data->success = FS_TRUE;
				FS_MMS_NET_CALLBACK( data, FS_MMS_NET_OK, data->file );
			}
		}
	}
	else if( data->task == FS_MMS_NET_TASK_RESP )
	{
		if( ! data->finished )
		{
			data->finished = FS_TRUE;
			data->success = FS_TRUE;
			FS_MMS_NET_CALLBACK( data, FS_MMS_NET_OK, data->file );
		}
	}
	else if( data->task == FS_MMS_NET_TASK_READ_REPORT )
	{
		if( ! data->finished )
		{
			data->finished = FS_TRUE;
			data->success = FS_TRUE;
		}
	}
}
Пример #4
0
void FS_MmsSendReadReportMms( FS_CHAR *to, FS_CHAR *subject, FS_CHAR *content )
{
	FS_MmsNetData *data = &GFS_MmsNetData;
	FS_MmsFile *pMmsFile;
	FS_SINT4 len;
	FS_CHAR absfile[FS_MAX_PATH_LEN], file[FS_FILE_NAME_LEN], *cid, *rptFile = "readreport.txt";
	
	if( data->in_use || content == FS_NULL || to == FS_NULL ) return;
	
	/* send a normal mms read report */
	pMmsFile = FS_CreateMmsFile( );
	if( pMmsFile )
	{
		pMmsFile->data.head.message_class = FS_MMS_H_V_CLASS_AUTO;
		pMmsFile->data.head.read_report = FS_MMS_H_V_READ_REPORT_NO;
		pMmsFile->data.head.delivery_report = FS_MMS_H_V_DELIVERY_REPORT_NO;
		pMmsFile->data.head.to = IFS_Strdup( to );
		if( subject ) pMmsFile->data.head.subject = IFS_Strdup( subject );
		FS_MmsFileAddFrame( pMmsFile, 0 );
		len = IFS_Strlen( content );
		FS_FileWrite( FS_DIR_TMP, rptFile, 0, content, len );
		cid = FS_MmsCodecCreateEntry( &pMmsFile->data, rptFile, len );
		FS_SmilAddFrameText( pMmsFile->smil, 1, cid );
		FS_GetGuid( file );
		IFS_Strcat( file, ".mms" );
		FS_MmsEncodeFile( file, pMmsFile );
		FS_DestroyMmsFile( pMmsFile );
		
		FS_GetAbsFileName( FS_DIR_MMS, file, absfile );
		/* will remenber this file name. and delete it when send complete */
		rptFile = IFS_Strdup( file );	
		if( FS_MmsSend( absfile, FS_MmsReadReportResult, rptFile ) != FS_MMS_NET_OK )
		{
			IFS_Free( rptFile );
			FS_FileDelete( FS_DIR_MMS, file );
		}
	}
}
Пример #5
0
int __cdecl Com_SaveBsp_EnforceVersion(FILE* h)
{
	long len = FS_FTell(h);
	BYTE* buf = new BYTE[len];

	FS_FSeek(h, 0, SEEK_SET);
	FS_FileRead(buf, 1, len, h);

	D3DBSP* iBSP = new D3DBSP;
	iBSP->Load(buf);
	delete[] buf;

	iBSP->Convert(BSPVERSION_COD_BO);

	if (!preservedPrimaryLights.isEmpty)
	{
		printf("restoring primary ligmmpts\n");
		iBSP->RestoreLump(LUMP_PRIMARY_LIGHTS, &preservedPrimaryLights);
	}

	if (g_HDR)
	{
		delete[] LightGridSampleColors_HDR;

		Com_SaveLightmaps_HDR(&iBSP->lumps[LUMP_LIGHTBYTES]);
		Com_SaveLightgrid_HDR(&iBSP->lumps[LUMP_LIGHTGRIDCOLORS]);
	}

	len = iBSP->PotentialFileSize();
	buf = new BYTE[len];
	iBSP->Write(buf);
	delete iBSP;

	FS_FSeek(h, 0, SEEK_SET);
	FS_FileWrite(buf, 1, len, h);

	return FS_FileClose(h);
}
Пример #6
0
FS_List *FS_DcdParseEntryList(FS_CHAR *boundary, FS_BYTE *data, FS_SINT4 len)
{
	typedef enum FS_DcdEntryHeadField_Tag
	{
		FS_H_CONTENT_LENGTH = 0,
		FS_H_CONTENT_TYPE,
		FS_H_CONTENT_ID
	}FS_HttpHeadField;
	
	FS_HeadField hentry[] = 
	{
		{ "Content-Length:",			FS_NULL },
		{ "Content-Type:",				FS_NULL },
		{ "Content-ID:",				FS_NULL },
		// last item
		{ FS_NULL,						FS_NULL }
	};
	FS_SINT4 hnum, bndrylen;
	FS_CHAR *ptr, *buf = FS_NULL, *hp, *ext;
	FS_DcdRspEntry *entry;
	FS_List *entry_list = FS_NULL;
	

	entry_list = IFS_Malloc( sizeof(FS_List) );
	if( entry_list == FS_NULL ){
		return FS_NULL;
	}
	FS_ListInit( entry_list );
	buf = IFS_Malloc( FS_MIME_HEAD_FIELD_MAX_LEN );
	if( buf == FS_NULL ){
		goto ERR_RET;
	}

	bndrylen = IFS_Strlen(boundary);
	ptr = data;
	while( ptr + len >= data ) {
		/* parse entry header */
		if( !FS_IS_BOUNDARY( data, boundary, bndrylen) ){
			goto ERR_RET;
		}
		if( data[bndrylen + 2] == '-' && data[bndrylen + 3] =='-' ){
			break;	/* parse complete */
		}
		entry = IFS_Malloc( sizeof(FS_DcdRspEntry) );
		if( entry == FS_NULL ){
			goto ERR_RET;
		}
		IFS_Memset( entry, 0, sizeof(FS_DcdRspEntry) );
		FS_ListAddTail( entry_list, &entry->list );
		data += bndrylen + 4;	/* prefix -- and trail CRLF */
		while(( hnum = FS_GetOneField( buf, FS_MIME_HEAD_FIELD_MAX_LEN, &data, hentry )) != -1 )
		{
			hp = buf + IFS_Strlen( hentry[hnum].name );
			while (*hp == ' ' || *hp == '\t')
				hp++;

			switch (hnum)
			{
			case FS_H_CONTENT_LENGTH:
				entry->len = IFS_Atoi( hp );
				break;
			case FS_H_CONTENT_TYPE:
				if( ! entry->content_type )
					entry->content_type = IFS_Strdup( hp );
				break;
			case FS_H_CONTENT_ID:
				if( ! entry->content_id )
					entry->content_id = IFS_Strdup( hp );
				break;
			default:
				break;
			}
		}
		if( entry->len == 0 ){
			goto ERR_RET;
		}
		FS_GetGuid( entry->file );
		ext = FS_GetExtFromMime( entry->content_type );
		if( ext != FS_NULL ){
			IFS_Strcat( entry->file, "." );
			IFS_Strcat( entry->file, ext );
		}
		FS_FileWrite( FS_DIR_DCD, entry->file, 0, data, entry->len );
		data += entry->len + 2;	/* skip trail CRLF */
	}
	
	IFS_Free( buf );
	return entry_list;
	
ERR_RET:
	IFS_Free( buf );
	FS_DcdFreeRspEntryList( entry_list );
	return FS_NULL;
}