diff -r 7259cf1302ad -r 169364e7e4b4 hti/HtiFileHlp/src/HtiFileHlp.cpp --- a/hti/HtiFileHlp/src/HtiFileHlp.cpp Tue Jul 06 16:05:13 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,210 +0,0 @@ -/* -* Copyright (c) 2009 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: HtiFileHlp implementation. This exe is used for file operations -* to TCB folders (requiring capability ALL). -* -*/ - - -// INCLUDE FILES -#include -#include - -// CONSTANTS -_LIT( KFileHlpName, "HtiFileHlp" ); - -_LIT( KCmdCopy, "c" ); -_LIT( KCmdDelete, "d" ); -_LIT( KCmdMkd, "m" ); -_LIT( KCmdRmd, "r" ); -_LIT( KCmdMove, "mv" ); -_LIT( KCmdRename, "re" ); -_LIT( KDelimiter, "|" ); - -// MACROS - -// LOCAL CONSTANTS AND MACROS - -// MODULE DATA STRUCTURES - -// LOCAL FUNCTION PROTOTYPES - -// FORWARD DECLARATIONS - -// ============================ LOCAL FUNCTIONS =============================== - -LOCAL_C void HandleCopyMoveRenameL( TDesC& aCmd, - TDesC& aFromFile, TDesC& aToFile ) - { - RFs fs; - User::LeaveIfError( fs.Connect() ); - CleanupClosePushL( fs ); - - CFileMan* fileMan = CFileMan::NewL( fs ); - CleanupStack::PushL( fileMan ); - - if ( aCmd == KCmdCopy ) - { - User::LeaveIfError( fileMan->Copy( aFromFile, aToFile, - CFileMan::ERecurse|CFileMan::EOverWrite ) ); - } - else if ( aCmd == KCmdMove ) - { - User::LeaveIfError( fileMan->Move( aFromFile, aToFile, - CFileMan::ERecurse|CFileMan::EOverWrite ) ); - } - else - { - User::LeaveIfError( fileMan->Rename( aFromFile, aToFile ) ); - } - - CleanupStack::PopAndDestroy(); // fileman - CleanupStack::PopAndDestroy(); // fs - } - -LOCAL_C void HandleDeleteL( TDesC& aFilename ) - { - RFs fs; - User::LeaveIfError( fs.Connect() ); - CleanupClosePushL( fs ); - - // check that filenames are valid - if ( !fs.IsValidName( aFilename ) ) - { - User::Leave( KErrBadName ); - } - - // delete file - User::LeaveIfError( fs.Delete( aFilename ) ); - - CleanupStack::PopAndDestroy(); - } - -LOCAL_C void HandleMkdL( TDesC& aDirName ) - { - RFs fs; - User::LeaveIfError( fs.Connect() ); - CleanupClosePushL( fs ); - - User::LeaveIfError( fs.MkDirAll( aDirName ) ); - - CleanupStack::PopAndDestroy(); - } - -LOCAL_C void HandleRmdL( TDesC& aDirName ) - { - RFs fs; - User::LeaveIfError( fs.Connect() ); - CleanupClosePushL( fs ); - - CFileMan* fileMan = CFileMan::NewL( fs ); - CleanupStack::PushL( fileMan ); - - User::LeaveIfError( fileMan->RmDir( aDirName ) ); - - CleanupStack::PopAndDestroy(); - CleanupStack::PopAndDestroy(); - } - -LOCAL_C TInt StartL() - { - TInt cmdLen = User::CommandLineLength(); - if ( cmdLen < 3 ) - { - User::Leave( KErrArgument ); - } - HBufC* cmdLine = HBufC::NewLC( cmdLen ); - TPtr ptCmdLine = cmdLine->Des(); - User::CommandLine( ptCmdLine ); - - TInt paramStart = 0; - TInt paramEnd = 0; - - // Take first parameter (the command) - paramEnd = cmdLine->Find( KDelimiter ); - if ( paramEnd <= paramStart ) - { - User::Leave( KErrArgument ); - } - TPtrC cmd = cmdLine->Mid( paramStart, paramEnd - paramStart ); - - // Take the next parameter either until next delimiter or - // the rest of the command line. - paramStart = paramEnd + 1; - paramEnd = cmdLine->Mid( paramStart ).Find( KDelimiter ) + paramStart; - if ( paramEnd < paramStart ) - { - // No delimiter found - this is the last parameter - paramEnd = cmdLen; - } - - TPtrC param1 = cmdLine->Mid( paramStart, paramEnd - paramStart ); - - paramStart = paramEnd + 1; - - if ( cmd == KCmdCopy || cmd == KCmdMove || cmd == KCmdRename ) - { - // Copy, Move and Rename should have also the destination parameter - // It is assumed to be the rest of the command line from previous delim - if ( paramStart >= cmdLen ) - { - User::Leave( KErrArgument ); - } - TPtrC param2 = cmdLine->Mid( paramStart ); - HandleCopyMoveRenameL( cmd, param1, param2 ); - } - else if ( cmd == KCmdDelete ) - { - HandleDeleteL( param1 ); - } - else if ( cmd == KCmdMkd ) - { - HandleMkdL( param1 ); - } - else if ( cmd == KCmdRmd ) - { - HandleRmdL( param1 ); - } - else - { - User::Leave( KErrArgument ); - } - - CleanupStack::PopAndDestroy(); // cmdLine - - return KErrNone; - } - -GLDEF_C TInt E32Main() - { - __UHEAP_MARK; - - CTrapCleanup* cleanup = CTrapCleanup::New(); - CActiveScheduler* scheduler = new ( ELeave ) CActiveScheduler; - CActiveScheduler::Install( scheduler ); - - User::RenameThread( KFileHlpName ); - - TRAPD( error, StartL() ); - - delete scheduler; - delete cleanup; - __UHEAP_MARKEND; - - //__ASSERT_ALWAYS( !error, User::Panic( KFileHlpName, error ) ); - return error; - } - - -// End of File