core/src/commands.h
changeset 0 7f656887cf89
child 7 184a1eb85cf2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/core/src/commands.h	Wed Jun 23 15:52:26 2010 +0100
@@ -0,0 +1,1243 @@
+// commands.h
+// 
+// Copyright (c) 2006 - 2010 Accenture. All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the "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:
+// Accenture - Initial contribution
+//
+
+
+#ifndef __COMMANDS_H__
+#define __COMMANDS_H__
+
+#include <fshell/common.mmh>
+#include <fshell/consoleextensions.h>
+#include "parser.h"
+#include <hal.h>
+#include <fshell/ioutils.h>
+#include <fshell/memoryaccesscmd.h>
+
+using namespace IoUtils;
+
+
+class CCmdHelp : public CCommandBase
+	{
+public:
+	static CCommandBase* NewLC();
+	~CCmdHelp();
+private:
+	CCmdHelp();
+private: // From CCommandBase.
+	virtual const TDesC& Name() const;
+	virtual void DoRunL();
+	virtual void OptionsL(RCommandOptionList& aOptions);
+private:
+	IoUtils::CTextFormatter* iFormatter;
+	TBool iCount;
+	};
+
+
+// Note, this command should never execute as 'exit' has handled explicitly by CParser.
+// It exists so that 'exit' appears in fshell's help list and also to support 'exit --help'.
+class CCmdExit : public CCommandBase
+	{
+public:
+	static CCommandBase* NewLC();
+	~CCmdExit();
+private:
+	CCmdExit();
+private: // From CCommandBase.
+	virtual const TDesC& Name() const;
+	virtual void DoRunL();
+	};
+
+
+class MDirReaderObserver
+	{
+public:
+	virtual void DirReadComplete(TInt aError) = 0;
+	};
+
+
+class CCmdLs : public CCommandBase
+	{
+public:
+	static CCommandBase* NewLC();
+	~CCmdLs();
+private:
+	CCmdLs();
+	void ConstructL();
+	void PrintDirContentL(const CDir& aDir);
+	void PrintDirContentL(RDir& aDir);
+	void RecursiveScanDirL(const TDesC& aName);
+	void DoScanDirL();
+	void FormatEntryL(const TEntry& aEntry);
+private: // From CCommandBase.
+	virtual const TDesC& Name() const;
+	virtual void DoRunL();
+	virtual void OptionsL(RCommandOptionList& aOptions);
+	virtual void ArgumentsL(RCommandArgumentList& aArguments);
+private:
+	TFileName2 iFileName;
+	TPtrC iBaseDir;
+	TBuf<256> iTempBuf;
+	CTextFormatter* iFormatter;
+	TBool iOptAll;
+	TBool iOptLong;
+	TBool iOptHuman;
+	TBool iOptOnePerLine;
+	TBool iOptRecurse;
+	};
+
+
+class CCmdCd : public CCommandBase
+	{
+public:
+	static CCommandBase* NewLC();
+	~CCmdCd();
+private:
+	CCmdCd();
+private: // From CCommandBase.
+	virtual const TDesC& Name() const;
+	virtual void DoRunL();
+	virtual void ArgumentsL(RCommandArgumentList& aArguments);
+private:
+	TFileName2 iDir;
+	};
+
+
+class CCmdClear : public CCommandBase
+	{
+public:
+	static CCommandBase* NewLC();
+	~CCmdClear();
+private:
+	CCmdClear();
+private: // From CCommandBase.
+	virtual const TDesC& Name() const;
+	virtual void DoRunL();
+	virtual void OptionsL(RCommandOptionList& aOptions);
+
+private:
+	TBool iFormFeed;
+	};
+
+
+class CForegroundAdjuster;
+
+class CCmdFg : public CCommandBase
+	{
+public:
+	static CCommandBase* NewLC();
+	~CCmdFg();
+private:
+	CCmdFg();
+private: // From CCommandBase.
+	virtual const TDesC& Name() const;
+	virtual void DoRunL();
+	virtual void ArgumentsL(RCommandArgumentList& aArguments);
+private:
+	HBufC* iJobSpec;
+	CForegroundAdjuster* iForegroundAdjuster;
+	};
+
+
+class CCmdBg : public CCommandBase
+	{
+public:
+	static CCommandBase* NewLC();
+	~CCmdBg();
+private:
+	CCmdBg();
+private: // From CCommandBase.
+	virtual const TDesC& Name() const;
+	virtual void DoRunL();
+	virtual void ArgumentsL(RCommandArgumentList& aArguments);
+private:
+	HBufC* iJobSpec;
+	CForegroundAdjuster* iForegroundAdjuster;
+	};
+
+
+class CCmdJobs : public CCommandBase
+	{
+public:
+	static CCommandBase* NewLC();
+	~CCmdJobs();
+private:
+	CCmdJobs();
+private: // From CCommandBase.
+	virtual const TDesC& Name() const;
+	virtual void DoRunL();
+private:
+	CTextFormatter* iFormatter;
+	};
+
+
+class CCmdRm : public CCommandBase
+	{
+public:
+	static CCommandBase* NewLC();
+	~CCmdRm();
+private:
+	CCmdRm();
+	TInt DoDelete(const TDesC& aFileName);
+private: // From CCommandBase.
+	virtual const TDesC& Name() const;
+	virtual void DoRunL();
+	virtual void OptionsL(RCommandOptionList& aOptions);
+	virtual void ArgumentsL(RCommandArgumentList& aArguments);
+private:
+	RArray<TFileName2> iFileNames;
+	CFileMan* iFileMan;
+	TBool iRecurse;
+	TBool iForce;
+	};
+
+
+class CCmdCp : public CCommandBase
+	{
+public:
+	static CCommandBase* NewLC();
+	~CCmdCp();
+private:
+	CCmdCp();
+private: // From CCommandBase.
+	virtual const TDesC& Name() const;
+	virtual void DoRunL();
+	virtual void OptionsL(RCommandOptionList& aOptions);
+	virtual void ArgumentsL(RCommandArgumentList& aArguments);
+private:
+	void ForciblyCopyFileL(const TDesC& aSourceFileName, const TDesC& aDestFileName);
+private:
+	TFileName2 iFrom;
+	TFileName2 iTo;
+	CFileMan* iFileMan;
+	TBool iRecurse;
+	TBool iForce;
+	TBool iOverwrite;
+	};
+
+
+class CCmdMv : public CCommandBase
+	{
+public:
+	static CCommandBase* NewLC();
+	~CCmdMv();
+private:
+	CCmdMv();
+private: // From CCommandBase.
+	virtual const TDesC& Name() const;
+	virtual void DoRunL();
+	virtual void ArgumentsL(RCommandArgumentList& aArguments);
+private:
+	TFileName2 iFrom;
+	TFileName2 iTo;
+	CFileMan* iFileMan;
+	};
+
+
+class CCmdMkDir : public CCommandBase
+	{
+public:
+	static CCommandBase* NewLC();
+	~CCmdMkDir();
+private:
+	CCmdMkDir();
+private: // From CCommandBase.
+	virtual const TDesC& Name() const;
+	virtual void DoRunL();
+	virtual void OptionsL(RCommandOptionList& aOptions);
+	virtual void ArgumentsL(RCommandArgumentList& aArguments);
+private:
+	TFileName2 iDir;
+	TBool iAllowExists;
+	};
+
+
+class CCmdRmDir : public CCommandBase
+	{
+public:
+	static CCommandBase* NewLC();
+	~CCmdRmDir();
+private:
+	CCmdRmDir();
+private: // From CCommandBase.
+	virtual const TDesC& Name() const;
+	virtual void DoRunL();
+	virtual void OptionsL(RCommandOptionList& aOptions);
+	virtual void ArgumentsL(RCommandArgumentList& aArguments);
+private:
+	RArray<TFileName2> iDirs;
+	CFileMan* iFileMan;
+	TBool iRecurse;
+	};
+
+
+class CCmdMatch : public CCommandBase
+	{
+public:
+	static CCommandBase* NewLC();
+	~CCmdMatch();
+private:
+	CCmdMatch();
+private: // From CCommandBase.
+	virtual const TDesC& Name() const;
+	virtual void DoRunL();
+	virtual void OptionsL(RCommandOptionList& aOptions);
+	virtual void ArgumentsL(RCommandArgumentList& aArguments);
+private:
+	HBufC* iToMatch;
+	TBool iIgnoreCase;
+	TBool iInvertMatch;
+	TBool iCount;
+	};
+
+
+class CCmdEcho : public CCommandBase
+	{
+public:
+	static CCommandBase* NewLC();
+	~CCmdEcho();
+private:
+	CCmdEcho();
+	void DoWriteL(const TDesC& aDes);
+private: // From CCommandBase.
+	virtual const TDesC& Name() const;
+	virtual void DoRunL();
+	virtual void OptionsL(RCommandOptionList& aOptions);
+	virtual void ArgumentsL(RCommandArgumentList& aArguments);
+private:
+	enum TAttr
+		{
+		EBold,
+		EUnderscore,
+		EBlink,
+		EInverse,
+		EConceal
+		};
+private:
+	HBufC* iToEcho;
+	TBool iToStderr;
+	TBool iWrap;
+	TUint iIndent;
+	RArray<TInt> iAttributes;
+	ConsoleAttributes::TColor iForegroundColor;
+	ConsoleAttributes::TColor iBackgroundColor;
+	TBool iBinaryMode;
+	TBool iNoNewline;
+	};
+
+
+class CCmdMore : public CCommandBase
+	{
+public:
+	static CCommandBase* NewLC();
+	~CCmdMore();
+	virtual void ArgumentsL(RCommandArgumentList& aArguments);
+private:
+	CCmdMore();
+private: // From CCommandBase.
+	virtual const TDesC& Name() const;
+	virtual void DoRunL();
+private:
+	TFileName2 iFile;
+	};
+
+
+class CCmdTrace : public CCommandBase
+	{
+public:
+	static CCommandBase* NewLC();
+	~CCmdTrace();
+private:
+	CCmdTrace();
+	void PrintConfig();
+	TInt SetFlag(const TDesC& aFlagName, TBool aSet);
+
+private: // From CCommandBase.
+	virtual const TDesC& Name() const;
+	virtual void DoRunL();
+	virtual void OptionsL(RCommandOptionList& aOptions);
+	virtual void ArgumentsL(RCommandArgumentList& aArguments);
+private:
+	TUint iMask;
+	TUint iIndex;
+	TBool iOptF32;
+	TBool iOptMultiThread;
+	TBool iOptLoader;
+	TBool iOptFat;
+	TBool iOptLffs;
+	TBool iOptIso9660;
+	TBool iOptNtfs;
+	TBool iOptRofs;
+	TBool iOptCompfs;
+	RPointerArray<HBufC> iEnable;
+	RPointerArray<HBufC> iDisable;
+	};
+
+
+class CCmdMemInfo : public CCommandBase
+	{
+public:
+	static CCommandBase* NewLC();
+	~CCmdMemInfo();
+private:
+	CCmdMemInfo();
+private: // From CCommandBase.
+	virtual const TDesC& Name() const;
+	virtual void DoRunL();
+	virtual void OptionsL(RCommandOptionList& aOptions);
+private:
+	void AppendLineL(CTextFormatter& aFormatter, const TDesC& aCaption, HALData::TAttribute aHalAttribute, TBool aNewLine);
+private:
+	TUint iUpdateRate;
+	TBool iHumanReadable;
+	TBool iOnlyFreeRam;
+	TBool iOnlyTotalRam;
+	TInt iLastTotalRamUsage;
+	};
+
+
+class CCmdDump : public CCommandBase
+	{
+public:
+	static CCommandBase* NewLC();
+	~CCmdDump();
+private:
+	CCmdDump();
+private: // From CCommandBase.
+	virtual const TDesC& Name() const;
+	virtual void DoRunL();
+	virtual void OptionsL(RCommandOptionList& aOptions);
+	virtual void ArgumentsL(RCommandArgumentList& aArguments);
+private:
+	RArray<TFileName2> iFileNames;
+	TBool iBinaryMode;
+	};
+
+
+class CCmdSleep : public CCommandBase
+	{
+public:
+	static CCommandBase* NewLC();
+	~CCmdSleep();
+private:
+	CCmdSleep();
+private: // From CCommandBase.
+	virtual const TDesC& Name() const;
+	virtual void DoRunL();
+	virtual void ArgumentsL(RCommandArgumentList& aArguments);
+private:
+	TUint iDuration;
+	};
+
+
+class CCmdEnv : public CCommandBase
+	{
+public:
+	static CCommandBase* NewLC();
+	~CCmdEnv();
+private:
+	CCmdEnv();
+private: // From CCommandBase.
+	virtual const TDesC& Name() const;
+	virtual void DoRunL();
+	};
+
+
+class CCmdExport : public CCommandBase
+	{
+public:
+	static CCommandBase* NewLC();
+	~CCmdExport();
+private:
+	CCmdExport();
+private: // From CCommandBase.
+	virtual const TDesC& Name() const;
+	virtual void DoRunL();
+	virtual void OptionsL(RCommandOptionList& aOptions);
+	virtual void ArgumentsL(RCommandArgumentList& aArguments);
+private:
+	HBufC* iKey;
+	HBufC* iVal;
+	TBool iStdin;
+	TBuf<512> iBuf;
+	};
+
+
+class CCmdSort : public CCommandBase
+	{
+public:
+	static CCommandBase* NewLC();
+	~CCmdSort();
+private:
+	CCmdSort();
+private: // From CCommandBase.
+	virtual const TDesC& Name() const;
+	virtual void DoRunL();
+	virtual void OptionsL(RCommandOptionList& aOptions);
+private:
+	TBool iReverse;
+	};
+
+
+class CCmdExists : public CCommandBase
+	{
+public:
+	static CCommandBase* NewLC();
+	~CCmdExists();
+private:
+	CCmdExists();
+private: // From CCommandBase.
+	virtual const TDesC& Name() const;
+	virtual void DoRunL();
+	virtual void ArgumentsL(RCommandArgumentList& aArguments);
+private:
+	TFileName2 iFileName;
+	};
+
+
+class CCmdInfoPrint : public CCommandBase
+	{
+public:
+	static CCommandBase* NewLC();
+	~CCmdInfoPrint();
+private:
+	CCmdInfoPrint();
+private: // From CCommandBase.
+	virtual const TDesC& Name() const;
+	virtual void DoRunL();
+	virtual void ArgumentsL(RCommandArgumentList& aArguments);
+private:
+	HBufC* iToPrint;
+	};
+
+
+class CCmdRDebug : public CCommandBase
+	{
+public:
+	static CCommandBase* NewLC();
+	~CCmdRDebug();
+private:
+	CCmdRDebug();
+private: // From CCommandBase.
+	virtual const TDesC& Name() const;
+	virtual void DoRunL();
+	virtual void ArgumentsL(RCommandArgumentList& aArguments);
+private:
+	HBufC* iToPrint;
+	};
+
+
+class CCmdDate : public CCommandBase
+	{
+public:
+	static CCommandBase* NewLC();
+	~CCmdDate();
+private:
+	CCmdDate();
+	void Display(const TTime& aTime);
+private: // From CCommandBase.
+	virtual const TDesC& Name() const;
+	virtual void DoRunL();
+	virtual void OptionsL(RCommandOptionList& aOptions);
+private:
+	TBool iUniversalTime;
+	HBufC* iDateToSet;
+	TInt iUtcOffset;
+	TBool iSecure;
+	TBool iRaw;
+	TBool iJustDisplay;
+	TInt64 iRawTimeToSet;
+	TBool iUseTimestampFormat;
+	};
+
+
+class CCmdFsck : public CCommandBase
+	{
+public:
+	static CCommandBase* NewLC();
+	~CCmdFsck();
+private:
+	CCmdFsck();
+private: // From CCommandBase.
+	virtual const TDesC& Name() const;
+	virtual void DoRunL();
+	virtual void ArgumentsL(RCommandArgumentList& aArguments);
+private:
+	HBufC* iDriveLetter;
+	};
+
+
+class CCmdDriver : public CCommandBase
+	{
+public:
+	static CCommandBase* NewLC();
+	~CCmdDriver();
+private:
+	enum TOperation
+		{
+		ELoad,
+		EFree,
+		EFind
+		};
+	enum TType
+		{
+		ELogical,
+		EPhysical
+		};
+private:
+	CCmdDriver();
+private: // From CCommandBase.
+	virtual const TDesC& Name() const;
+	virtual void DoRunL();
+	virtual void ArgumentsL(RCommandArgumentList& aArguments);
+private:
+	TOperation iOperation;
+	TType iType;
+	HBufC* iDriverName;
+	};
+
+
+class CCmdChunkInfo : public CMemoryAccessCommandBase
+	{
+public:
+	static CCommandBase* NewLC();
+	~CCmdChunkInfo();
+private:
+	CCmdChunkInfo();
+	void DoPrintL();
+	void ListChunksL();
+	void PrintChunkInfoL();
+	void PrintSizeL(const TDesC& aCaption, TInt aSize);
+private: // From CCommandBase.
+	virtual const TDesC& Name() const;
+	virtual void DoRunL();
+	virtual void OptionsL(RCommandOptionList& aOptions);
+	virtual void ArgumentsL(RCommandArgumentList& aArguments);
+private:
+	TUint iAddress;
+	TUint iUpdateRate;
+	TBool iHumanReadable;
+	TBool iIncludeSize;
+	HBufC* iOwningProcess;
+	TUint iControllingProcess;
+	TName iName;
+	TFullName iFullName;
+	CTextFormatter* iFormatter;
+	CTextBuffer* iBuf;
+	};
+
+
+class CCmdSvrInfo : public CMemoryAccessCommandBase
+	{
+public:
+	static CCommandBase* NewLC();
+	~CCmdSvrInfo();
+private:
+	CCmdSvrInfo();
+	void ListServersL();
+	void ListSessionsL();
+private: // From CCommandBase.
+	virtual const TDesC& Name() const;
+	virtual void DoRunL();
+	virtual void ArgumentsL(RCommandArgumentList& aArguments);
+private:
+	TUint iAddress;
+	TName iName;
+	TFullName iFullName;
+#ifdef FSHELL_MEMORY_ACCESS_SUPPORT
+	TServerKernelInfo iServerInfo;
+	TThreadKernelInfo iThreadInfo;
+	TProcessKernelInfo iProcessInfo;
+	TSessionKernelInfo iSessionInfo;
+#endif
+	CTextFormatter* iFormatter;
+	CTextBuffer* iBuf;
+	};
+
+
+class CCmdTickle : public CCommandBase
+	{
+public:
+	static CCommandBase* NewLC();
+	~CCmdTickle();
+private:
+	CCmdTickle();
+private: // From CCommandBase.
+	virtual const TDesC& Name() const;
+	virtual void DoRunL();
+	};
+
+
+class CCmdTicks : public CCommandBase
+	{
+public:
+	static CCommandBase* NewLC();
+	~CCmdTicks();
+private:
+	CCmdTicks();
+private: // From CCommandBase.
+	virtual const TDesC& Name() const;
+	virtual void DoRunL();
+	virtual void OptionsL(RCommandOptionList& aOptions);
+private:
+	TBool iVerbose;
+	};
+
+
+class CCmdUpTime : public CCommandBase
+	{
+public:
+	static CCommandBase* NewLC();
+	~CCmdUpTime();
+private:
+	CCmdUpTime();
+private: // From CCommandBase.
+	virtual const TDesC& Name() const;
+	virtual void DoRunL();
+	virtual void OptionsL(RCommandOptionList& aOptions);
+private:
+	TBool iHuman;
+	};
+
+
+class CCmdVar : public CCommandBase
+	{
+public:
+	static CCommandBase* NewLC();
+	~CCmdVar();
+private:
+	CCmdVar();
+private: // From CCommandBase.
+	virtual const TDesC& Name() const;
+	virtual void DoRunL();
+	virtual void ArgumentsL(RCommandArgumentList& aArguments);
+private:
+	enum
+		{
+		EDefined,
+		ENotDefined,
+		EEqual,
+		ENotEqual,
+		EAdd,
+		ESubtract,
+		} iOperation;
+	HBufC* iVar1;
+	HBufC* iArg;
+	};
+
+
+class CCmdSource : public CCommandBase, public MParserObserver
+	{
+public:
+	static CCommandBase* NewLC();
+	~CCmdSource();
+protected:
+	CCmdSource();
+private:
+	void BackupVarL(const TDesC& aKey, HBufC*& aBuf);
+	void RestoreVarL(const TDesC& aKey, const HBufC* aBuf);
+protected: // From CCommandBase.
+	virtual const TDesC& Name() const;
+	virtual void DoRunL();
+	virtual void ArgumentsL(RCommandArgumentList& aArguments);
+	virtual void OptionsL(RCommandOptionList& aOptions);
+private: // From MParserObserver.
+	virtual void HandleParserComplete(CParser& aParser, const TError& aError);
+protected:
+	TFileName2 iFileName;
+	HBufC* iArgs;
+	TBool iKeepGoing;
+	HBufC* iScriptData;
+	CParser* iParser;
+	};
+
+
+class CCmdStart : public CCommandBase
+	{
+public:
+	static CCommandBase* NewLC();
+	~CCmdStart();
+private:
+	CCmdStart();
+private: // From CCommandBase.
+	virtual const TDesC& Name() const;
+	virtual void DoRunL();
+	virtual void ArgumentsL(RCommandArgumentList& aArguments);
+	virtual void OptionsL(RCommandOptionList& aOptions);
+private:
+	TBool iRendezvous;
+	TBool iWait;
+	TInt iTimeout;
+	HBufC* iExe;
+	HBufC* iCommandLine;
+	TBool iMeasure;
+	};
+
+
+class CCmdCompare : public CCommandBase
+	{
+public:
+	static CCommandBase* NewLC();
+	~CCmdCompare();
+private:
+	CCmdCompare();
+private: // From CCommandBase.
+	virtual const TDesC& Name() const;
+	virtual void DoRunL();
+	virtual void ArgumentsL(RCommandArgumentList& aArguments);
+	virtual void OptionsL(RCommandOptionList& aOptions);
+private:
+	TFileName2 iFileName1;
+	TFileName2 iFileName2;
+	TBool iVerbose;
+	};
+
+
+class CCmdTime : public CCommandBase, public MParserObserver
+	{
+public:
+	static CCommandBase* NewLC();
+	~CCmdTime();
+private:
+	CCmdTime();
+	void NextIterationL();
+private: // From CCommandBase.
+	virtual const TDesC& Name() const;
+	virtual void DoRunL();
+	virtual void ArgumentsL(RCommandArgumentList& aArguments);
+	virtual void OptionsL(RCommandOptionList& aOptions);
+private: // From MParserObserver.
+	virtual void HandleParserComplete(CParser& aParser, const TError& aError);
+private:
+	HBufC* iCommandLine;
+	TUint32 iCountBefore;
+	CParser* iParser;
+	TBool iHuman;
+	TBool iFastCounter;
+	TInt iRepeatCount;
+	TInt iIteration;
+	TUint64 iTotalTime;
+	};
+
+
+class CCmdRepeat : public CCommandBase, public MParserObserver
+	{
+public:
+	static CCommandBase* NewLC();
+	~CCmdRepeat();
+private:
+	CCmdRepeat();
+	void CreateParserL();
+	void HandleParserCompleteL(const TError& aError);
+private: // From CCommandBase.
+	virtual const TDesC& Name() const;
+	virtual void DoRunL();
+	virtual void ArgumentsL(RCommandArgumentList& aArguments);
+	virtual void OptionsL(RCommandOptionList& aOptions);
+private: // From MParserObserver.
+	virtual void HandleParserComplete(CParser& aParser, const TError& aError);
+private:
+	HBufC* iCommandLine;
+	CParser* iParser;
+	TUint iCount;
+	TUint iNumRepeats;
+	TBool iKeepGoing;
+	TBool iForever;
+	TInt iWaitTime;
+	};
+
+
+class CCmdDebug : public CCommandBase, public MParserObserver
+	{
+public:
+	static CCommandBase* NewLC();
+	~CCmdDebug();
+private:
+	CCmdDebug();
+	void InteractL(const TDesC& aExpandedLine);
+private: // From CCommandBase.
+	virtual const TDesC& Name() const;
+	virtual void DoRunL();
+	virtual void ArgumentsL(RCommandArgumentList& aArguments);
+	virtual void OptionsL(RCommandOptionList& aOptions);
+private: // From MParserObserver.
+	virtual void HandleParserComplete(CParser& aParser, const TError& aError);
+	virtual void AboutToExecuteLine(const TDesC& aOrignalLine, const TDesC& aExpandedLine);
+	virtual void LineReturned(TInt aError);
+private:
+	TFileName2 iFileName;
+	HBufC* iArgs;
+	TBool iKeepGoing;
+	HBufC* iScriptData;
+	CParser* iParser;
+	};
+
+
+class CCmdReadMem : public CMemoryAccessCommandBase
+	{
+public:
+	static CCommandBase* NewLC();
+	~CCmdReadMem();
+private:
+	CCmdReadMem();
+private: // From CCommandBase.
+	virtual const TDesC& Name() const;
+	virtual void DoRunL();
+	virtual void OptionsL(RCommandOptionList& aOptions);
+	virtual void ArgumentsL(RCommandArgumentList& aArguments);
+private:
+	TUint iAddress;
+	TUint iSize;
+	TFileName2 iFileName;
+	TInt iThreadId;
+	RFile iFile;
+	};
+
+
+class CCmdE32Header : public CCommandBase
+	{
+public:
+	static CCommandBase* NewLC();
+	~CCmdE32Header();
+private:
+	CCmdE32Header();
+private: // From CCommandBase.
+	virtual const TDesC& Name() const;
+	virtual void DoRunL();
+	virtual void OptionsL(RCommandOptionList& aOptions);
+	virtual void ArgumentsL(RCommandArgumentList& aArguments);
+private:
+	TFileName2 iFileName;
+	TBool iXip;
+	TBool iNotXip;
+	CTextFormatter* iFormatter;
+	};
+
+
+class CCmdObjInfo : public CMemoryAccessCommandBase
+	{
+public:
+	static CCommandBase* NewLC();
+	~CCmdObjInfo();
+private:
+	CCmdObjInfo();
+	void PrintObjectDetailsL(TUint aObjectAddress);
+	void PrintObjectReferencersL(TUint aObjectAddress);
+	void PrintReferencedObjectDetailsL(TOwnerType aOwnerType, TUint aId);
+private: // From CCommandBase.
+	virtual const TDesC& Name() const;
+	virtual void DoRunL();
+	virtual void OptionsL(RCommandOptionList& aOptions);
+	virtual void ArgumentsL(RCommandArgumentList& aArguments);
+private:
+	TUint iObjectAddress;
+	TBool iReferencers;
+	TUint iProcessId;
+	TUint iThreadId;
+	TBool iAll;
+	};
+
+class CCmdTouch : public CCommandBase
+	{
+public:
+	static CCommandBase* NewLC();
+	~CCmdTouch();
+private:
+	CCmdTouch();
+private: // From CCommandBase.
+	virtual const TDesC& Name() const;
+	virtual void DoRunL();
+	virtual void ArgumentsL(RCommandArgumentList& aArguments);
+private:
+	TFileName2 iFileName;
+	};
+
+class CCmdDialog : public CCommandBase
+	{
+public:
+	static CCommandBase* NewLC();
+	~CCmdDialog();
+private:
+	enum TMode
+		{
+		EModeNotifier,
+		EModeConsole,
+		EModeNull
+		};
+private:
+	CCmdDialog();
+	TMode ModeL() const;
+	void ClearLineL(RIoConsoleWriteHandle& aWriteHandle);
+private: // From CCommandBase.
+	virtual const TDesC& Name() const;
+	virtual void DoRunL();
+	virtual void OptionsL(RCommandOptionList& aOptions);
+	virtual void ArgumentsL(RCommandArgumentList& aArguments);
+private:
+	HBufC* iTitle;
+	HBufC* iBody;
+	HBufC* iButton1;
+	HBufC* iButton2;
+	};
+
+#ifdef __WINS__
+
+class CCmdJit : public CCommandBase
+	{
+public:
+	static CCommandBase* NewLC();
+	~CCmdJit();
+private:
+	CCmdJit();
+private: // From CCommandBase.
+	virtual const TDesC& Name() const;
+	virtual void DoRunL();
+	virtual void ArgumentsL(RCommandArgumentList& aArguments);
+private:
+	enum
+		{
+		EStatus,
+		EOn,
+		EOff
+		} iOperation;
+	};
+
+#endif // __WINS__
+
+class CCmdConsole : public CCommandBase
+	{
+public:
+	static CCommandBase* NewLC();
+	~CCmdConsole();
+private:
+	CCmdConsole();
+private: // From CCommandBase.
+	virtual const TDesC& Name() const;
+	virtual void DoRunL();
+	virtual void OptionsL(RCommandOptionList& aOptions);
+private:
+	TBool iVerbose;
+	TBool iIsRemote;
+	TBool iIsNull;
+	};
+	
+class CCmdPcons : public CCommandBase
+	{
+public:
+	static CCommandBase* NewLC();
+	~CCmdPcons();
+private:
+	CCmdPcons();
+private: // From CCommandBase.
+	virtual const TDesC& Name() const;
+	virtual void DoRunL();
+	virtual void ArgumentsL(RCommandArgumentList& aArguments);
+	virtual void OptionsL(RCommandOptionList& aOptions);
+	
+	void CreateL(RIoPersistentConsole& aPcons);
+	void AttachL(RIoPersistentConsole& aPcons, const TDesC& aNewOrExisting, TBool aForce);
+	TInt DoAttach(RIoPersistentConsole& aPcons, RIoConsole& aNew, RIoPersistentConsole::TCloseBehaviour aOnClose);
+private:
+	enum
+		{
+		EList,
+		ENew,
+		EConnect,
+		EStart,
+		EDisconnect,
+		} iOperation;
+	HBufC* iName;
+	HBufC* iCommand;
+	HBufC* iCommandArgs;
+	TBool iVerbose;
+	};
+
+class CCmdIoInfo : public CCommandBase
+	{
+public:
+	static CCommandBase* NewLC();
+	~CCmdIoInfo();
+private:
+	CCmdIoInfo();
+private: // From CCommandBase.
+	virtual const TDesC& Name() const;
+	virtual void DoRunL();
+	virtual void ArgumentsL(RCommandArgumentList& aArguments);
+	virtual void OptionsL(RCommandOptionList& aOptions);
+private:
+	RIoHandle::TType iObjectType;
+	HBufC* iMatchString;
+	};
+
+class CCmdReattach : public CCommandBase
+	{
+public:
+	static CCommandBase* NewLC();
+	~CCmdReattach();
+private:
+	CCmdReattach();
+	void OpenEndPointLC(RIoEndPoint& aEndPoint, const TDesC& aName);
+private: // From CCommandBase.
+	virtual const TDesC& Name() const;
+	virtual void DoRunL();
+	virtual void ArgumentsL(RCommandArgumentList& aArguments);
+private:
+	HBufC* iJobSpec;
+	HBufC* iStdinEndPointName;
+	HBufC* iStdoutEndPointName;
+	HBufC* iStderrEndPointName;
+	};
+
+class CCmdDisown : public CCommandBase
+	{
+public:
+	static CCommandBase* NewLC();
+	~CCmdDisown();
+private:
+	CCmdDisown();
+private: // From CCommandBase.
+	virtual const TDesC& Name() const;
+	virtual void DoRunL();
+	virtual void ArgumentsL(RCommandArgumentList& aArguments);
+private:
+	HBufC* iJobSpec;
+	};
+
+class CCmdDebugPort : public CMemoryAccessCommandBase
+	{
+public:
+	static CCommandBase* NewLC();
+	~CCmdDebugPort();
+private:
+	CCmdDebugPort();
+private: // From CCommandBase.
+	virtual const TDesC& Name() const;
+	virtual void DoRunL();
+	virtual void ArgumentsL(RCommandArgumentList& aArguments);
+	virtual void OptionsL(RCommandOptionList& aOptions);
+private:
+	TInt iPort;
+	TBool iForce;
+	};
+
+class CCmdRom : public CCommandBase
+	{
+public:
+	static CCommandBase* NewLC();
+	~CCmdRom();
+private:
+	CCmdRom();
+	void PrintIntL(TInt32 aInt32, const TDesC& aLabel, const TDesC& aDescription);
+	void PrintIntL(TInt64 aInt64, const TDesC& aLabel, const TDesC& aDescription);
+	void PrintUintL(TUint32 aUint32, const TDesC& aLabel, const TDesC& aDescription);
+	void PrintUintL(TUint64 aUint64, const TDesC& aLabel, const TDesC& aDescription);
+	void PrintAddressL(TLinAddr aAddress, const TDesC& aLabel, const TDesC& aDescription);
+	void PrintSizeL(TInt32 aSize, const TDesC& aLabel, const TDesC& aDescription);
+	void PrintTimeL(TInt64 aTime, const TDesC& aLabel, const TDesC& aDescription);
+	void PrintVersionL(TVersion aVersion, const TDesC& aLabel, const TDesC& aDescription);
+private: // From CCommandBase.
+	virtual const TDesC& Name() const;
+	virtual void DoRunL();
+	virtual void OptionsL(RCommandOptionList& aOptions);
+private:
+	CTextBuffer* iBuffer;
+	TBool iVerbose;
+	TBool iHumanReadable;
+	};
+
+class CCmdWhich : public CCommandBase
+	{
+public:
+	static CCommandBase* NewLC();
+	~CCmdWhich();
+private:
+	CCmdWhich();
+private: // From CCommandBase.
+	virtual const TDesC& Name() const;
+	virtual void DoRunL();
+	virtual void ArgumentsL(RCommandArgumentList& aArguments);
+	
+private:
+	HBufC* iCommand;
+	};
+
+class CCmdTee : public CCommandBase
+	{
+public:
+	static CCommandBase* NewLC();
+	~CCmdTee();
+private:
+	CCmdTee();
+private: // From CCommandBase.
+	virtual const TDesC& Name() const;
+	virtual void DoRunL();
+	virtual void ArgumentsL(RCommandArgumentList& aArguments);
+	virtual void OptionsL(RCommandOptionList& aOptions);
+	
+private:
+	RArray<TFileName2> iFileNames;
+	RArray<RFile> iFiles;
+	TBool iAppend;
+	TBool iRdebug;
+	};
+
+class CCmdError : public CCommandBase
+	{
+public:
+	static CCommandBase* NewLC();
+	~CCmdError();
+private:
+	CCmdError();
+private: // From CCommandBase.
+	virtual const TDesC& Name() const;
+	virtual void DoRunL();
+	virtual void ArgumentsL(RCommandArgumentList& aArguments);
+	
+private:
+	TInt iErrorVal;
+	HBufC* iErrorText;
+	};
+
+class CCmdReboot : public CMemoryAccessCommandBase
+	{
+public:
+	static CCommandBase* NewLC();
+	~CCmdReboot();
+private:
+	CCmdReboot();
+private: // From CCommandBase.
+	virtual const TDesC& Name() const;
+	virtual void DoRunL();
+	virtual void ArgumentsL(RCommandArgumentList& aArguments);
+private:
+	TUint iReason;
+	};
+	
+class CCmdForEach : public CCmdSource
+	{
+public:
+	static CCommandBase* NewLC();
+	~CCmdForEach();
+private:
+	CCmdForEach();
+	void DoNextL(TBool aFirstTime=EFalse);
+private: // From CCommandBase.
+	virtual const TDesC& Name() const;
+	virtual void DoRunL();
+	virtual void ArgumentsL(RCommandArgumentList& aArguments);
+private: // From MParserObserver.
+	virtual void HandleParserComplete(CParser& aParser, const TError& aError);
+private:
+	TFileName2 iDirName;
+	RDir iDir;
+	TInt iLastError;
+	};
+	
+#endif // __COMMANDS_H__