diff -r a41df078684a -r 4122176ea935 baseintegtests/baseintegrationtest/testsuites/common/basedump/src/thindump.cpp --- a/baseintegtests/baseintegrationtest/testsuites/common/basedump/src/thindump.cpp Mon Oct 19 15:55:17 2009 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,264 +0,0 @@ -// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of the License "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: -// Thindump is a small tool for dumping text files. The text file -// given will be dumped using RDebug::Print meaning the text goes to -// both the console and the Debug Serial Port. -// -// - -/** - @file - @internalComponent -*/ - -#include -#include -#ifndef SYMBIAN_BASEDUMP -#include -#include -#include -#endif // SYMBIAN_BASEDUMP - - -GLDEF_D RTest gTest(_L("thindump utility")); -GLDEF_D RFs gFs; - -LOCAL_C void SendFileL(const TPtrC &aFilename, const TInt &aPause) -/** -Dump narrow text file to console, comms & debug (WINS) -*/ - { - TInt err; - - // Open file and determine size - RFile file; - err = file.Open(gFs, aFilename, EFileRead); - if( err == KErrNotFound || err == KErrBadName ) - { - gTest.Printf(_L("File %S does not exist"), &aFilename); - return; - } - else if( err == KErrInUse ) // Test Execute opens with ShareAny - { - gTest.Printf(_L("Open failed as %S is in use. Retry open with EFileShareAny"), &aFilename); - err = file.Open(gFs, aFilename, EFileRead|EFileShareAny); - } - -// gTest.Printf(_L("SendFileL Line %d, RFile::Open err = %d"), __LINE__, err); -// gTest.Getch(); - User::LeaveIfError(err); - - TInt size; - err = file.Size(size); -// gTest.Printf(_L("SendFileL Line %d, RFile::Size err = %d"), __LINE__, err); -// gTest.Getch(); - User::LeaveIfError(err); - - gTest.Printf(_L("File %S (%d bytes)"), &aFilename, size); - - // Get ready to read file - const TInt KBufferSize = 32; - const TInt KBufferMaxLength = 1024; - - _LIT(KCharLF, "\x0a"); - _LIT(KCharCR, "\x0d"); - - TInt pos = 0; - TInt lfPos; - TInt crPos; - - TBuf8 buf8(KBufferSize+1); - TBuf buf16(KBufferSize+1); - - HBufC* format16=HBufC::NewLC(KBufferMaxLength); - - // Read block from file - while(pos < size) - { - err = file.Read(buf8, KBufferSize); -// gTest.Printf(_L("SendFileL Line %d, RFile::Read err = %d"), __LINE__, err); -// gTest.Getch(); - User::LeaveIfError(err); - - // Expand to 16 bit chars - buf16.Copy(buf8); - - // Remove carriage returns - while ( (crPos = buf16.Find(KCharCR)) != KErrNotFound ) - buf16.Delete(crPos, 1); - - // Find line feeds - TPtr ptr16( format16->Des() ); - while ( (lfPos = buf16.Find(KCharLF)) != KErrNotFound ) - { - // Extract this line & append to any buffered line - TPtrC ptrLeft = buf16.Left(lfPos+1); - ptr16.Append(ptrLeft); - buf16.Delete(0, lfPos+1); - - // Print this line - gTest.Printf(_L("%S"), &ptr16 ); - ptr16.Zero(); - - // Small 10ms pause to prevent data loss during upload - User::After(10000); - } - - ptr16.Append(buf16); - pos += KBufferSize; - } - - // Output any partial line still in buffer - if (format16->Length()) - { - TPtr ptr16( format16->Des() ); - gTest.Printf(_L("%S"), &ptr16 ); - } - - CleanupStack::PopAndDestroy(1, format16); - - if (aPause) - { - gTest.Printf(_L("Dump complete. Press any key ...")); - gTest.Getch(); - } - - file.Close(); - } - - -LOCAL_C void InitGlobalsL() -/** -Initialise global variables. -*/ - { - TInt err; - - err = gFs.Connect(); -// gTest.Printf(_L("InitGlobals Line %d, RFs::Connect err = %d"), __LINE__, err); -// gTest.Getch(); - User::LeaveIfError(err); - } - - -LOCAL_C void DestroyGlobals() -/** -Free global variables -*/ - { - gFs.Close(); - } - - -LOCAL_C void RunSendFileL() -/** -Transmit the file down the Debug Port -*/ - { - InitGlobalsL(); - - TInt pause=EFalse; - _LIT(KOptionNoPause,"-nop"); - _LIT(KOptionPause,"-p"); - _LIT(KDumpFileDefault, "c:\\log.txt"); - - // Obtain command line parameters - TPtrC filename( KDumpFileDefault ); - -#ifndef SYMBIAN_BASEDUMP - CCommandLineArguments* args = CCommandLineArguments::NewLC(); - - for(TInt i=1;iCount();i++) - { - if(args->Arg(i).MatchF(KOptionNoPause)==0) - { - pause=EFalse; - } - else if(args->Arg(i).MatchF(KOptionPause)==0) - { - pause=ETrue; - } - else - { - filename.Set(args->Arg(i)); - } - } -#else - TBuf<256> cmd; - User::CommandLine(cmd); - TLex lex(cmd); - - while (!lex.Eos()) - { - TPtrC token; - token.Set(lex.NextToken()); - if (token.Length()==0) - { - break; // ignore trailing whitespace - } - else if (token==KOptionNoPause) - { - pause=EFalse; - } - else if (token==KOptionPause) - { - pause=ETrue; - } - else - { - filename.Set(token); - } - } -#endif - SendFileL( filename, pause ); - -#ifndef SYMBIAN_BASEDUMP - CleanupStack::PopAndDestroy(1, args); -#endif - DestroyGlobals(); - } - - -EXPORT_C TInt E32Main() -/** -Main Program -*/ - { - CTrapCleanup* cleanup = CTrapCleanup::New(); - CActiveScheduler* theActiveScheduler = new CActiveScheduler(); - CActiveScheduler::Install(theActiveScheduler); - - __UHEAP_MARK; - - User::ResetInactivityTime(); - - gTest.Printf(_L("========== Start Log File ==========")); - - TRAPD(err,RunSendFileL()); - if (err!=KErrNone) - { - gTest.Printf(_L("thindump left with Error No %d"), err); - } - - gTest.Printf(_L("========== Finish Log File ==========")); - - gTest.Close(); - - __UHEAP_MARKEND; - - delete cleanup; - delete theActiveScheduler; - - return KErrNone; - }