void Cdmatest::SaveMappingsL() { TInt c( iMappingTable.Count() ); if ( c > 0 ) { RFs fs; User::LeaveIfError( fs.Connect() ); CleanupClosePushL( fs ); RFileWriteStream buf; User::LeaveIfError( buf.Replace( fs, KMappingTableFile, EFileWrite ) ); CleanupClosePushL( buf ); TInt i( 0 ) ; do { buf.WriteUint32L( iMappingTable[i].iURI.Length() ); buf.WriteL( iMappingTable[i].iURI ); buf.WriteUint32L( iMappingTable[i].iLuid.Length() ); buf.WriteL( iMappingTable[i].iLuid ); } while ( ++i < c ) ; buf.CommitL(); buf.Close(); CleanupStack::PopAndDestroy(); // buf CleanupStack::PopAndDestroy(); // fs } }
TInt CSenBaseIdentityManager::WriteConfigurationToL( const TDesC& aFile ) { // First, collect everything into MEMORY CBufFlat *pBuf = CBufFlat::NewL(KFLATBUF_SIZE); CleanupStack::PushL(pBuf); RBufWriteStream bufWs(*pBuf); CleanupClosePushL(bufWs); bufWs.WriteL(KUsersStart); if(iIdentity) { iIdentity->WriteAsXMLToL(bufWs); } bufWs.WriteL(KUsersEnd); TPtrC8 p8 = pBuf->Ptr(0); CleanupStack::PopAndDestroy(1); // bufWs // Everything in MEMORY ok, prepare to write into file RFs fss; User::LeaveIfError(fss.Connect()); CleanupClosePushL(fss); RFileWriteStream fileOutStream; CleanupClosePushL(fileOutStream); if(!SysUtil::FFSSpaceBelowCriticalLevelL(&fss, p8.Length()) ) { // note, this will zero-length the file(!) // it is better to require that 2xfilesize is available and not to // dangerously zero the old file and find out // that there is no space left.. //Data caging 2 implementation #if defined( EKA2 ) || defined( RD_SECURE_PRIV_DATA ) TBuf<KMaxPath> file; fss.CreatePrivatePath(EDriveC); fss.PrivatePath(file); file.Append(aFile); fileOutStream.Replace(fss, file, EFileWrite); #else fileOutStream.Replace(fss, aFile, EFileWrite); #endif // finally write the UTF-8 into the file. fileOutStream.WriteL(p8); } CleanupStack::PopAndDestroy(3); // fileOutStream, fss, pBuf return KErrNone; }
void CEmTubePlaylistEntry::ExportL( RFileWriteStream& aStream ) { TInt l = iLocation->Length(); aStream.WriteInt32L( l ); if( l ) { aStream.WriteL( *iLocation ); } l = iName->Length(); aStream.WriteInt32L( l ); if( l ) { aStream.WriteL( *iName ); } aStream.WriteInt32L( iPlayCount ); aStream.WriteInt32L( (TInt)iType ); aStream.WriteReal64L( TReal(iTime.Int64()) ); }
// --------------------------------------------------------------------------- // --------------------------------------------------------------------------- // void CPolicyClientRequestHandler::DumpClientsL(RFileWriteStream& aFile) { // Lint seems to have some trouble identifying the TThreadId class. // Due to this, Lint will report several errors here that are incorrect. // These errors are disabled. /*lint -e10 -e1013 -e1055 -e746 -e747 */ for(TInt i = iControlPolicyClients.Count() - 1; i >= 0; i--) { TPckgC<TThreadId> clientid(iControlPolicyClients[i]->iClientId.Id()); aFile.WriteL(clientid); } /*lint +e10 +e1013 +e1055 +e746 +e747 */ }
// ---------------------------------------------------------------------------- // CAudioStreamEngine::SaveAudioFileL() // // saves the audio data in the buffer into a file // ---------------------------------------------------------------------------- void CAudioStreamEngine::SaveAudioFileL() { if (!iBufferOK) { // In case the encoding was changed between recording and trying to save the file ShowMessage(_L("CAudioStreamEngine::SaveAudioFileL() Recorded buffer does not match current encoding."), ETrue); ShowMessage(_L("CAudioStreamEngine::SaveAudioFileL() Please re-record and try again."), EFalse); return; } RFileWriteStream audiofile; // Check for free space for saving the sample TVolumeInfo volinfo; TInt err=iFs.Volume(volinfo,EDriveC); if ( volinfo.iFree<(iFrameCount*iFrameSize)) { // Not enough free space on drive for saving, report and exit ShowMessage(_L("CAudioStreamEngine::SaveAudioFileL() Cannot save file:\nnot enough space!"), ETrue); return; } TFileName fileName; fileName.Copy(iAudioFilePath); fileName.Append(iAudioFile); err = audiofile.Replace(iFs, fileName, EFileWrite|EFileStream); if (err==KErrNone) { if (iUseAMR) { // Write the six-byte AMR header, so that the file can be used by other // applications as well. for (int i = 0; i < KAMRHeaderLength; i++) audiofile.WriteUint8L(KAMRNBHeader[i]); } // File opened ok, proceed writing. // Write audio data directly from iStreamBuffer for (TUint idx=iStreamStart; idx<=iStreamEnd; idx++)//iFrameCount; idx++) { audiofile.WriteL(GetFrame(idx)); } ShowMessage(_L("CAudioStreamEngine::SaveAudioFileL() Saving complete!"), ETrue); } else { // failed to open file ShowMessage(_L("CAudioStreamEngine::SaveAudioFileL() Error saving audio sample!"), ETrue); } audiofile.Close(); }
void CVideoEntry::ExportL( RFileWriteStream &aStream ) { aStream.WriteInt16L( iMediaTitle->Length() ); aStream.WriteL( *iMediaTitle, iMediaTitle->Length() ); aStream.WriteInt16L( iUrl->Length() ); aStream.WriteL( *iUrl, iUrl->Length() ); aStream.WriteInt16L( iThumbnailUrl->Length() ); aStream.WriteL( *iThumbnailUrl, iThumbnailUrl->Length() ); aStream.WriteInt16L( iThumbnailFile->Length() ); aStream.WriteL( *iThumbnailFile, iThumbnailFile->Length() ); aStream.WriteInt16L( iVideoId->Length() ); aStream.WriteL( *iVideoId, iVideoId->Length() ); aStream.WriteInt16L( iAuthorName->Length() ); aStream.WriteL( *iAuthorName, iAuthorName->Length() ); aStream.WriteInt16L( iAuthorUrl->Length() ); aStream.WriteL( *iAuthorUrl, iAuthorUrl->Length() ); aStream.WriteInt16L( iRelatedUrl->Length() ); aStream.WriteL( *iRelatedUrl, iRelatedUrl->Length() ); aStream.WriteInt16L( iAuthorVideosUrl->Length() ); aStream.WriteL( *iAuthorVideosUrl, iAuthorVideosUrl->Length() ); aStream.WriteInt32L( iThumbnailHeight ); aStream.WriteInt32L( iThumbnailWidth ); aStream.WriteInt32L( iDuration ); aStream.WriteReal32L( iAverageRating ); aStream.WriteInt32L( iViewCount ); aStream.CommitL(); }
void CEmTubePlaylist::ExportL( RFileWriteStream& aStream ) { if( Name().Length() ) { aStream.WriteInt32L( Name().Length() ); aStream.WriteL( Name() ); } else { aStream.WriteInt32L( 0 ); } aStream.WriteInt32L( (TInt)iType ); aStream.WriteInt32L( iFlags ); aStream.WriteInt32L( iEntries.Count() ); for(TInt i=0;i<iEntries.Count();i++) { iEntries[i]->ExportL( aStream ); } }
// --------------------------------------------------------------------------- // Write the file to correct directory. // --------------------------------------------------------------------------- // EXPORT_C void CXIMPTestFileTool::PluginStoreL( const TDesC8& aExternalizedObject ) { HBufC* fileName = GetFileNameLC( KFileToolPluginDirBase, iObjIndex ); RFileWriteStream out; CleanupClosePushL( out ); out.Create( iFs, *fileName, EFileWrite|EFileStream|EFileShareAny ); // write the file TUint32 len = aExternalizedObject.Length(); out.WriteUint32L( len ); out.WriteL( aExternalizedObject ); CleanupStack::PopAndDestroy(); // out CleanupStack::PopAndDestroy( fileName ); // fileName // next file will have a new index iObjIndex++; }
TBool CDiscussion::WriteDiscussionToFileL() { TPtr pId(iDiscussionId->Des()); if(iDiscussionInMemory && pId.Length() > 0) { RFs aSession = CCoeEnv::Static()->FsSession(); TFileName aFilePath = GetFileName(aSession); RFileWriteStream aFile; TBuf8<128> aBuf; #ifdef _DEBUG if(iDiscussionReadObserver) { aBuf.Format(_L8("DISC Start: Save discussion %d to file"), iItemId); iDiscussionReadObserver->DiscussionDebug(aBuf); } #endif if(aFile.Replace(aSession, aFilePath, EFileStreamText|EFileWrite) == KErrNone) { CleanupClosePushL(aFile); CXmppAtomEntryParser* aAtomEntryParser = CXmppAtomEntryParser::NewLC(); aFile.WriteL(_L8("<?xml version='1.0' encoding='UTF-8'?>\r\n")); aBuf.Format(_L8("\t<discussion notify='%d'>\r\n"), iNotify); aFile.WriteL(aBuf); for(TInt i = 0; i < iEntries.Count(); i++) { CThreadedEntry* aThread = iEntries[i]; CAtomEntryData* aEntry = aThread->GetEntry(); aFile.WriteL(_L8("\t\t")); aFile.WriteL(aAtomEntryParser->AtomEntryToXmlL(aEntry, KNullDesC8, true)); aFile.WriteL(_L8("\r\n")); if(aThread->CommentCount() > 0) { aFile.WriteL(_L8("\t\t<comments>\r\n")); for(TInt x = 0; x < aThread->CommentCount(); x++) { CAtomEntryData* aComment = aThread->GetCommentByIndex(x); aFile.WriteL(_L8("\t\t\t")); aFile.WriteL(aAtomEntryParser->AtomEntryToXmlL(aComment, aEntry->GetId(), true)); aFile.WriteL(_L8("\r\n")); } aFile.WriteL(_L8("\t\t</comments>\r\n")); } } aFile.WriteL(_L8("\t</discussion>\r\n</?xml?>")); CleanupStack::PopAndDestroy(); // CXmppAtomEntryParser CleanupStack::PopAndDestroy(&aFile); #ifdef _DEBUG if(iDiscussionReadObserver) { aBuf.Format(_L8("DISC End: Save discussion %d to file"), iItemId); iDiscussionReadObserver->DiscussionDebug(aBuf); } #endif return true; } #ifdef _DEBUG else { if(iDiscussionReadObserver) { aBuf.Format(_L8("DISC Fail: Save discussion %d to file"), iItemId); iDiscussionReadObserver->DiscussionDebug(aBuf); } } #endif } return false; }
EXPORT_C void CSenXmlReader::ParseL(const TDesC8& aBuff) { // In S60 2nd edition FP3 (2.8) platform a temp file has to be used, since the // underlying expat parser would crash when parsing a document which consists // of more that 2048 bytes of XML. if (aBuff.Length() > 2048) // there is 2048 bytes limitation in expat parser! { SENDEBUG_L("CSenXmlReader::ParseL(): parsing over 2048 bytes of XML (EKA1)"); SENDEBUG((_L("- document size: %d bytes."), aBuff.Length() )); // Parse large XML documents using file server RFs fss; User::LeaveIfError(fss.Connect()); CleanupClosePushL(fss); // Now create a new temp file in the specified path using unique // file name which is generated by the file server. Since file // server is not responsible to delete this file, it must be done // after parsing is finished. // Path for temp file _LIT(KFilePath, "c:\\"); // Stores the temp file name when fileOutStream.Temp() returns: TFileName tempFilename; // Try to generate new temporary file, leave if it failes: RFileWriteStream fileOutStream; User::LeaveIfError(fileOutStream.Temp(fss, KFilePath, tempFilename, EFileWrite)); CleanupClosePushL(fileOutStream); SENDEBUG((_L("CSenXmlReader::ParseL(): used temp file name: '%S'"), &tempFilename)); // Write XML document into the file: fileOutStream.WriteL(aBuff); // fileOutStream.Close(). Must be done prior ParseL()! CleanupStack::PopAndDestroy(); // Parse the file: ParseL(fss, tempFilename); // Now delete the temporary file (when it is not in locked in parser's use) fss.Delete(tempFilename); // Finally close the file server session CleanupStack::PopAndDestroy(); // fss.Close() SENDEBUG_L("CSenXmlReader::ParseL() successfully parsed > 2048 bytes of XML."); } else { // Smaller documents may be parsed normally, even with older versions // of Symbian XML framework's expat parser. CleanUp(); #if defined(__SERIES60_30__) RecreateParserL(); #endif // __SERIES_30__ defined TInt feature(iEnabledFeature); TReaderData* pData = new (ELeave) TReaderData; pData->ipReader = this; pData->iEnabledFeature = iEnabledFeature; CleanupStack::PushL( TCleanupItem( CSenXmlReader::CleanupParser, pData ) ); // Parse the XML document: iParser->ParseL(aBuff); CleanupStack::Pop(); delete pData; iParser->ParseEndL(); // Enables Symbian XML framework errors to propagete OnErrorL() callback CleanUp(); if (iEnabledFeature < 0) { TInt error(iEnabledFeature); iEnabledFeature = feature; SENDEBUG((_L("CSenXmlReader::ParserL: leaving (%d)"), iEnabledFeature)); User::Leave(error); } iContentHandler->EndDocument(); } }