--- a/kerneltest/e32utils/nistsecurerng/src/utils/openc.cpp Wed Sep 15 13:42:27 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,616 +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:
-*/
-
-
-//------------------------------------ System Header Files ------------------------------------------------
-#include <e32cons.h> // ConsoleBase
-//------------------------------------ Local Header Files -------------------------------------------------
-#include "openc.h"
-
-//-------------------------------- Constants, global variables and Macro Definitions ----------------------------------------
-_LIT(KConsoleName, "NIST Test Console");
-CConsoleBase* gConsole = NULL;
-
-
-int PrintToScreen(const char* aString);
-
-const TInt KIntStringLen = 10;
-RFs gFileSession;
-
-enum TDataType
- {
- EInteger,
- EFloat,
- EUnknownType = 0x10000
- };
-
-const TInt KMaxReadSize = 50;
-const TInt KMaxScreenBufferSize = 100;
-
-TBuf<KMaxScreenBufferSize> gScreenBuffer;
-
-class GlobalInitilizer
- {
-public:
- GlobalInitilizer()
- {
- TInt err = gFileSession.Connect();
-
- if(err != KErrNone)
- {
- User::Exit(err);
- }
-
- TRAP(err, gConsole = Console::NewL(KConsoleName, TSize(KConsFullScreen,KConsFullScreen)));
- if(err != KErrNone)
- {
- User::Exit(err);
- }
- }
- ~GlobalInitilizer()
- {
- gFileSession.Close();
- delete gConsole;
- }
- };
-
-GlobalInitilizer globalObj;
-
-//------------------------------------ Function Definitions -----------------------------------------------
-
-double log(double aSource)
- {
- double result = 0.0;
- Math::Ln(result, aSource);
- return result;
- }
-
-double exp(double aSource)
- {
- double result = 0.0;
- Math::Exp(result, aSource);
- return result;
- }
-
-double fabs(double aSource)
- {
- return (aSource >= 0.0)? aSource: -aSource;
- }
-
-
-double floor(double aSource)
- {
- if(aSource >= 0.0 || aSource == (TInt64)aSource)
- {
- return (double)(TInt64)aSource;
- }
-
- return (double)((TInt64)aSource - 1);
- }
-
-double sqrt(double aSource)
- {
- double result = 0.0;
- Math::Sqrt(result, aSource);
- return result;
- }
-
-double pow(double aSource, double aPower)
- {
- double result = 0.0;
- Math::Pow(result, aSource, aPower);
- return result;
- }
-
-// Math trigonometric functions
-double sin(double aSource)
- {
- double result = 0.0;
- Math::Sin(result, aSource);
- return result;
- }
-
-double cos(double aSource)
- {
- double result = 0.0;
- Math::Cos(result, aSource);
- return result;
- }
-
-// Stdio functions
-int printf(const char* aFormatString, ...)
- {
- TUint length = User::StringLength((TUint8*)aFormatString) + 100;
- HBufC8* buffer = HBufC8::New(length);
- if(NULL == buffer)
- {
- return KErrNoMemory;
- }
-
- TPtr8 targetPtr = buffer->Des();
- TPtrC8 formatPtr((TUint8*)aFormatString);
-
- VA_LIST list;
- VA_START(list, aFormatString);
-
- targetPtr.FormatList(formatPtr, list);
-
- PrintToScreen((const char*)targetPtr.PtrZ());
-
- delete buffer;
-
- return targetPtr.Length();
- }
-
-int puts(const char* aString)
- {
- int ret = PrintToScreen(aString);
- gConsole->Printf(_L("\n"));
-
- return ret;
- }
-
-int putchar(int aChar)
- {
- gConsole->Printf(_L("%c"), aChar);
- return aChar;
- }
-
-char* strcpy(char* aDst, const char* aSrc)
- {
- char* cp = aDst;
-
- while((*cp++ = *aSrc++) != 0)
- ; // Copy src over dst
-
- return(aDst);
- }
-
-int scanf(const char* aFormatString, ...)
- {
- TDataType type = EUnknownType;
- TBool byteRead = EFalse;
-
- if(Mem::Compare((const unsigned char*)aFormatString, 2, (const unsigned char*)"%d", 2) == 0)
- {
- type = EInteger;
- }
- else if(Mem::Compare((const unsigned char*)aFormatString, 2, (const unsigned char*)"%f", 2) == 0)
- {
- type = EFloat;
- }
- else if(Mem::Compare((const unsigned char*)aFormatString, 3, (const unsigned char*)"%1d", 3) == 0)
- {
- type = EInteger;
- byteRead = ETrue;
- }
- else
- {
- User::Panic(_L("NIST TestSuit Error"), KErrArgument);
- }
-
- if(!byteRead || (gScreenBuffer.Length() == 0))
- {
- ReadStringFromConsole(gScreenBuffer);
- }
-
- TLex parser(gScreenBuffer);
- parser.SkipSpace();
-
- VA_LIST list;
- VA_START(list, aFormatString);
-
- switch(type)
- {
- case EInteger:
- {
- TInt* ptr = VA_ARG(list, TInt*);
- if(byteRead)
- {
- TChar ch(gScreenBuffer[0]);
- gScreenBuffer.Delete(0, 1);
- *ptr = ch.GetNumericValue();
- }
- else
- {
- parser.Val(*ptr);
- gScreenBuffer.Zero();
- }
- break;
- }
- case EFloat:
- {
- float* ptr = VA_ARG(list, float*);
- parser.Val(*ptr);
- gScreenBuffer.Zero();
- break;
- }
- case EUnknownType:
- {
- User::Panic(_L("NIST TestSuit Error"), KErrArgument);
- }
- }
-
- return 1;
- }
-
-int sprintf(char *aBuffer, const char* aFormatString, ...)
- {
- TUint length = User::StringLength((TUint8*)aFormatString) + 100;
- TPtr8 aTargetPtr((TUint8*)aBuffer, length);
- TPtrC8 formatPtr((TUint8*)aFormatString);
-
- VA_LIST list;
- VA_START(list, aFormatString);
-
- aTargetPtr.FormatList(formatPtr, list);
- aTargetPtr.ZeroTerminate();
-
- return User::StringLength((TUint8*)aBuffer);;
- }
-
-int GetFileMode(const char* aModeStr, TFileMode& aFileMode, TBool& aIsAppend)
- {
- aIsAppend = EFalse;
- switch (*aModeStr)
- {
- case 'r':
- aFileMode = EFileRead;
- break;
-
- case 'w':
- aFileMode = EFileWrite;
- break;
-
- case 'a':
- aFileMode = EFileWrite;
- aIsAppend = ETrue;
- break;
-
- default:
- return KErrArgument;
- }
-
- return KErrNone;
- }
-
-FILE *fopen(const char *aFileName, const char *aMode)
- {
- TPtrC8 fileNamePtr(reinterpret_cast<const unsigned char*>(aFileName));
- TFileName fileName;
- fileName.Copy(fileNamePtr);
- RFile* file = new RFile;
- if(NULL == file)
- {
- return NULL;
- }
-
- TFileMode mode = EFileRead;
- TBool isAppend = EFalse;
- GetFileMode(aMode, mode, isAppend);
- int err = KErrArgument;
- switch(mode)
- {
- case EFileRead:
- {
- err = file->Open(gFileSession, fileName, mode);
- break;
- }
- case EFileWrite:
- {
- if(isAppend)
- {
- err = file->Open(gFileSession, fileName, mode);
- if(err == KErrNone)
- {
- TInt offset = 0;
- err = file->Seek(ESeekEnd, offset);
- break;
- }
- }
-
- err = file->Replace(gFileSession, fileName, mode);
- break;
- }
- default:
- err = KErrArgument;
- }
-
- if(KErrNone != err)
- {
- file->Close();
- delete file;
- file = NULL;
- }
- return file;
- }
-
-
-
-int fclose(FILE *aFp)
- {
- if(NULL != aFp)
- {
- aFp->Close();
- delete aFp;
- }
- return KErrNone;
- }
-
-int fprintf(FILE* aFile, const char* aFormatString, ...)
- {
- TUint length = User::StringLength((TUint8*)aFormatString) + 100;
- HBufC8* buffer = HBufC8::New(length);
- if(NULL == buffer)
- {
- return KErrNoMemory;
- }
-
- TPtr8 targetPtr = buffer->Des();
- TPtrC8 formatPtr((TUint8*)aFormatString);
-
- VA_LIST list;
- VA_START(list, aFormatString);
-
- targetPtr.FormatList(formatPtr, list);
- targetPtr.ZeroTerminate();
-
- aFile->Write(targetPtr);
-
- delete buffer;
-
- return targetPtr.Length();
- }
-
-int fscanf(FILE* aFp, const char * aFormatString, ...)
- {
- TDataType type = EUnknownType;
- TBool byteRead = EFalse;
-
- if(Mem::Compare((const unsigned char*)aFormatString, 2, (const unsigned char*)"%d", 2) == 0)
- {
- type = EInteger;
- }
- else if(Mem::Compare((const unsigned char*)aFormatString, 2, (const unsigned char*)"%f", 2) == 0)
- {
- type = EFloat;
- }
- else if(Mem::Compare((const unsigned char*)aFormatString, 3, (const unsigned char*)"%1d", 3) == 0)
- {
- type = EInteger;
- byteRead = ETrue;
- }
- else
- {
- User::Panic(_L("NIST TestSuit Error"), KErrArgument);
- }
-
- TInt initialOffset = 0;
- aFp->Seek(ESeekCurrent, initialOffset);
- TBuf8<KMaxReadSize + 1> readBuffer;
- aFp->Read(readBuffer, KMaxReadSize);
- readBuffer.ZeroTerminate();
- TLex8 parser(readBuffer);
- parser.SkipSpace();
-
- VA_LIST list;
- VA_START(list, aFormatString);
-
- switch(type)
- {
- case EInteger:
- {
- TInt* ptr = VA_ARG(list, TInt*);
- TChar ch = parser.Peek();
-
- if(!ch.IsDigit())
- {
- break;
- }
-
- if(byteRead)
- {
- ch = parser.Get();
- *ptr = ch.GetNumericValue();
- }
- else
- {
- parser.Val(*ptr);
- }
-
- break;
- }
- case EFloat:
- {
- float* ptr = VA_ARG(list, float*);
- parser.Val(*ptr);
- break;
- }
- case EUnknownType:
- {
- User::Panic(_L("NIST TestSuit Error"), KErrArgument);
- }
- }
-
- TInt len = initialOffset + parser.Offset();
- aFp->Seek(ESeekStart, len);
-
- return 1;
- }
-
-TUint32 fread(void* aPtr, TUint32 aSize, TUint32 aCount, FILE* aFile)
- {
- TUint32 size = aSize * aCount;
- TPtr8 dataPtr((TUint8*)aPtr, size);
- TInt err = aFile->Read(dataPtr);
- if(KErrNone != err)
- {
- size = (TUint32)dataPtr.Length();
- }
- return size;
- }
-
-int fseek(FILE* aFile, long aOffset, int aWhence)
- {
- int ret = KErrNone;
- int fileOffset = aOffset;
- switch(aWhence)
- {
- case SEEK_SET:
- {
- ret = aFile->Seek(ESeekStart, fileOffset);
- break;
- }
- case SEEK_CUR:
- {
- ret = aFile->Seek(ESeekCurrent, fileOffset);
- break;
- }
- case SEEK_END:
- {
- ret = aFile->Seek(ESeekEnd, fileOffset);
- break;
- }
- default:
- User::Panic(_L("NIST TestSuit Error"), KErrArgument);
- }
-
- return ret;
- }
-
-
-
-int fflush(FILE *aFile)
- {
- TInt err = aFile->Flush();
- if(err != KErrNone)
- {
- err = EOF;
- }
- return err;
- }
-
-
-// Conio functions
-void* calloc(TUint32 aElementCount, TUint32 aSize)
- {
- aSize *= aElementCount;
- return User::AllocZ(aSize);
- }
-
-void free(void *aMemory)
- {
- User::Free(aMemory);
- }
-
-TBool IsCharacterKey(TKeyCode aKey)
- {
- if(aKey > EKeyEscape && aKey < EKeyDelete)
- {
- return ETrue;
- }
-
- return EFalse;
- }
-
-_LIT(KLineBreaker, "\r\n");
-
-void ReadStringFromConsole(TDes& aString)
- {
- // This infinte loop terminates when user hits an "enter" key
- FOREVER
- {
- // Get a key(character) from the console
- TKeyCode ch = gConsole->Getch();
-
- switch(ch)
- {
- case EKeyEnter:
- {
- if(aString.Length() == 0)
- {
- break;// At least one character should be read.
- }
- gConsole->Printf(KLineBreaker);
- return;
- }
- case EKeyBackspace:
- {
- if(0 != aString.Length())
- {
- // Back-space only takes the cursor one position back
- // So to delete a character blank-space is inserted at
- // that position and later cursor is again adjusted.
- gConsole->Printf(_L("%c%c%c"), EKeyBackspace,
- EKeySpace,
- EKeyBackspace);
- // Delete the character from the target string also.
- aString.Delete(aString.Length() - 1, 1);
- }
- break;
- }
- default:
- {
- TInt maxBufferLength = aString.MaxLength();
- // IsCharacterKey will return true if ch is a displayable
- // character else it will return false.
- if(IsCharacterKey(ch) && aString.Length() != maxBufferLength)
- {
- gConsole->Printf(_L("%c"), ch);
- aString.Append(ch);
- }
- }
- }
- }
- }
-
-TInt ReadIntL(TInt& aValue)
- {
- TBuf<KIntStringLen> string;
- ReadStringFromConsole(string);
- TLex lexObj(string);
- return lexObj.Val(aValue);
- }
-
-int PrintToScreen(const char* aString)
- {
- TUint length = User::StringLength((TUint8*)aString);
- HBufC* buffer = HBufC::New(length);
- if(NULL == buffer)
- {
- return EOF;
- }
-
- TPtr targetPtr = buffer->Des();
-
- TPtrC8 stringPtr((TUint8*)aString);
-
- targetPtr.Copy(stringPtr);
- gConsole->Printf(targetPtr);
-
- delete buffer;
-
- return KErrNone;
- }
-
-void exit ( int status )
- {
- User::Exit(status);
- for(;;){} // So that GCC compiler don't complain about noreturn function returns.
- }
-
-//------------------------------------------ E O F -----------------------------------------------------
-