bool StorageChunkWriter::WriteBuffer() { ssize_t writeSize; writeSize = writeBuffer.GetLength(); if (FS_FileWrite(fd.GetFD(), writeBuffer.GetBuffer(), writeSize) != writeSize) return false; return true; }
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 ); } }
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; } } }
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 ); } } }
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); }
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; }