diff -r 6ca72c0fe49a -r a941bc465d9f wvuing/Utils/CAVersion.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wvuing/Utils/CAVersion.cpp Wed Sep 01 12:31:13 2010 +0100 @@ -0,0 +1,127 @@ +/* +* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Version provider for IM. +* +*/ + + +#include "CAVersion.h" +#include "ChatDebugPrint.h" + +#include +#include + + +// CONSTANTS +const TInt KChatVersionBuffer = 1024; +const TInt KDriveAndColon = 2; + +// --------------------------------------------------------- +// CAVersion::UpdateVersion +// --------------------------------------------------------- +// +TInt CAVersion::UpdateVersion( RFs& aFs + , const TDesC& aOwnVersionFile + , const TDesC& aTargetFile ) + { + CHAT_DP( D_CHAT_LIT( "CAVersion::UpdateVersion %S %S" ), &aOwnVersionFile, + &aTargetFile ); + + // Get ROM and C drives + TBuf romDrive; + TBuf cDrive; + romDrive = PathInfo::RomRootPath().Left( KDriveAndColon ); + cDrive = PathInfo::PhoneMemoryRootPath().Left( KDriveAndColon ); + + // Construct full path for private version file + TFileName ownVersionFile; + aFs.PrivatePath( ownVersionFile ); + ownVersionFile.Insert( 0, romDrive ); + ownVersionFile.Append( aOwnVersionFile ); + + // Append drive to published version file + TFileName targetFile; + targetFile.Append( cDrive ); + targetFile.Append( aTargetFile ); + + if ( ownVersionFile.Compare( targetFile ) == KErrNone ) + { + //nothing to do + return KErrNone; + } + + TBuf8< KChatVersionBuffer > myBuffer; + myBuffer.Zero(); + + TInt err( KErrNone ); + + RFile myInputFile; + RFile myOutputFile; + + err = myInputFile.Open( aFs, ownVersionFile, EFileRead ); + + if ( !err ) + { + err = myOutputFile.Replace( aFs, targetFile, EFileWrite ); + } +#ifdef _DEBUG + else + { + CHAT_DP( D_CHAT_LIT( "CAVersion::UpdateVersion Open %d" ), err ); + } +#endif + + if ( !err ) + { + TBool more( ETrue ); + while ( !err && more ) + { + err = myInputFile.Read( myBuffer, KChatVersionBuffer ); + if ( !myBuffer.Length() ) + { + more = EFalse; + } + if ( !err ) + { + err = myOutputFile.Write( myBuffer ); + } +#ifdef _DEBUG + else + { + CHAT_DP( D_CHAT_LIT( "CAVersion::UpdateVersion Read %d" ), + err ); + } + + if ( err ) + { + CHAT_DP( D_CHAT_LIT( "CAVersion::UpdateVersion Write %d" ), + err ); + } +#endif + } + } +#ifdef _DEBUG + else + { + CHAT_DP( D_CHAT_LIT( "CAVersion::UpdateVersion Replace %d" ), err ); + } +#endif + + myInputFile.Close(); + myOutputFile.Close(); + + return err; + } + +// End of file