summaryrefslogtreecommitdiffstats
path: root/libvideoeditor/osal
diff options
context:
space:
mode:
authorhongteng <hongteng@google.com>2011-04-22 13:48:46 -0700
committerhongteng <hongteng@google.com>2011-04-22 13:48:46 -0700
commit0a389ab70db304fb840e33f33781ecc0503eae3c (patch)
tree85ef41c9a4b6a32c9647fe81c6330cb110aa94fa /libvideoeditor/osal
parent3b25fdc4a33b53cfcf67315c2d42ad699b8cefe2 (diff)
downloadframeworks_av-0a389ab70db304fb840e33f33781ecc0503eae3c.zip
frameworks_av-0a389ab70db304fb840e33f33781ecc0503eae3c.tar.gz
frameworks_av-0a389ab70db304fb840e33f33781ecc0503eae3c.tar.bz2
Fix for issue 3385135 "source code cleanup" engine part
- Removed below unused functions a. M4PTO3GPP_RegisterExternalVideoEncoder b. M4VSS3GPP_editRegisterExternalVideoDecoder c. M4VSS3GPP_editRegisterExternalVideoEncoder d. M4VSS3GPP_extractPictureRegisterExternalVideoDecoder e. M4VSS3GPP_editRegisterExternalCodec f. M4VSS3GPP_editSubscribeExternalCodecs g. M4VSS3GPP_intSubscribeExternalCodecs h. M4VSS3GPP_intClipRegisterExternalVideoDecoder i. M4xVSS_RegisterExternalVideoDecoder j. M4xVSS_RegisterExternalVideoEncoder k. M4MCS_registerExternalVideoDecoder l. M4MCS_registerExternalVideoEncoder m. M4MCS_registerExternalAudioDecoder n. M4MCS_registerExternalAudioEncoder o. M4DECODER_EXTERNAL_getInterface - Also remove small code associated with these functions and Remove below unsused src + header files a. M4CLOCK.h b. M4MDP_API.h c. M4VD_EXTERNAL_Internal.h d. M4VD_HW_API.h e. M4VE_API.h f. M4_Logo.h g. M4VD_EXTERNAL_Interface.c h. LV_Types.h i. M4OSA_FileAccess.h j. M4OSA_FileCache.h k. M4OSA_FileExtra.h l. M4OSA_FileReaderRam.h m. M4OSA_FileWriterRam.h n. M4OSA_String.h o. M4OSA_String_priv.h p. M4OSA_FileCache.c q. M4OSA_FileExtra.c r. M4OSA_FileReader_RAM.c s. M4OSA_FileWriter_RAM.c t. M4OSA_String.c u. M4OSA_String_priv.c Change-Id: I7271cbe92168e665a8e5b7afe7c7fe1c331eaa1e
Diffstat (limited to 'libvideoeditor/osal')
-rwxr-xr-xlibvideoeditor/osal/inc/LV_Types.h78
-rwxr-xr-xlibvideoeditor/osal/inc/M4OSA_FileAccess.h71
-rwxr-xr-xlibvideoeditor/osal/inc/M4OSA_FileCache.h69
-rwxr-xr-xlibvideoeditor/osal/inc/M4OSA_FileExtra.h70
-rwxr-xr-xlibvideoeditor/osal/inc/M4OSA_FileReaderRam.h75
-rwxr-xr-xlibvideoeditor/osal/inc/M4OSA_FileWriterRam.h77
-rwxr-xr-xlibvideoeditor/osal/inc/M4OSA_String.h267
-rwxr-xr-xlibvideoeditor/osal/inc/M4OSA_String_priv.h101
-rwxr-xr-xlibvideoeditor/osal/src/M4OSA_FileCache.c2978
-rwxr-xr-xlibvideoeditor/osal/src/M4OSA_FileExtra.c527
-rwxr-xr-xlibvideoeditor/osal/src/M4OSA_FileReader_RAM.c419
-rwxr-xr-xlibvideoeditor/osal/src/M4OSA_FileWriter_RAM.c448
-rwxr-xr-xlibvideoeditor/osal/src/M4OSA_String.c2417
-rwxr-xr-xlibvideoeditor/osal/src/M4OSA_String_priv.c1136
14 files changed, 0 insertions, 8733 deletions
diff --git a/libvideoeditor/osal/inc/LV_Types.h b/libvideoeditor/osal/inc/LV_Types.h
deleted file mode 100755
index 5a45182..0000000
--- a/libvideoeditor/osal/inc/LV_Types.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright (C) 2004-2011 NXP Software
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/*******************************************************************************
-* @file LV_Types.h
-* @brief Types definition for Smartphone team
-*******************************************************************************/
-
-#ifndef LV_TYPES_H
-#define LV_TYPES_H
-
-/*------------*/
-/* INCLUDES */
-/*------------*/
-#include "M4OSA_Error.h"
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-/*--------------------------------------*/
-/* CHARACTER ENCODING CONVERSION FCTS */
-/*--------------------------------------*/
-/******************************************************************************
-*
-* M4OSA_UInt32 (*LV_fromUTF8ToNative_Fct)(const M4OSA_Char* pStart,
-* M4OSA_Void** pOut);
-* @note This function converts a string from UTF8 format which is the default
-* encoding in the engines and application logics to the character encoding
-* supported by the OS or platform. The memory will be allocated within this
-* function and then, caller will have to free *targetStart thanks to free.
-* Both strings must be NULL-terminateed.
-* @param pStart (IN): String to convert.
-* @param pOut (OUT): This pointer will be filled by this function. It contains the
-* string converted to the native format.
-* @return Success: Size in bytes allocated including the NULL character. Failure: 0
-*
-******************************************************************************/
-typedef M4OSA_UInt32 (*LV_fromUTF8ToNative_Fct)(const M4OSA_Char* pStart,
- M4OSA_Void** pOut);
-
-/******************************************************************************
-*
-* M4OSA_UInt32 (*LV_fromNativeToUTF8_Fct)(const M4OSA_Char* pStart,
-* M4OSA_Void** targetStart);
-* @note This function converts a string in the character encoding supported by the
-* OS or platform to from UTF8 format which is the default encoding in the
-* engines and application logics. The memory will be allocated within this
-* function and then, caller will have to free *targetStart thanks to free.
-* Both strings must be NULL-terminateed.
-* @param pStart (IN): String to convert.
-* @param pOut (OUT): This pointer will be filled by this function. It contains the
-* string converted to UTF8 format.
-* @return Success: Size in bytes allocated including the NULL character. Failure: 0
-*
-******************************************************************************/
-typedef M4OSA_UInt32 (*LV_fromNativeToUTF8_Fct)(const M4OSA_Void** pStart,
- M4OSA_Char** pOut);
-#ifdef __cplusplus
-}
-#endif
-
-#endif /*--- LV_TYPES_H ---*/
diff --git a/libvideoeditor/osal/inc/M4OSA_FileAccess.h b/libvideoeditor/osal/inc/M4OSA_FileAccess.h
deleted file mode 100755
index 489a981..0000000
--- a/libvideoeditor/osal/inc/M4OSA_FileAccess.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright (C) 2004-2011 NXP Software
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef __M4OSA_FILEACESS_H__
-#define __M4OSA_FILEACESS_H__
-
-#include "M4OSA_Types.h"
-#include "M4OSA_Semaphore.h"
-#include "M4OSA_Debug.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- ******************************************************************************
- * struct M4OSA_FilePtrFct
- * @brief Defines the available functions for File read/write.
- ******************************************************************************
-*/
-typedef enum
-{
- M4OSA_FILEINTERFACE_RAM,
- M4OSA_FILEINTERFACE_FFS,
- M4OSA_FILEINTERFACE_OPTIM_FFS
-
-} M4OSA_FileInterface_t;
-
-
-typedef struct
-{
- M4OSA_FileWriterPointer *pFileWriter; /**< Pointer to file writer functions */
- M4OSA_FileReadPointer *pFileReader; /**< Pointer to file reader functions */
-} M4OSA_FilePtrFct;
-
-/*Semaphore for handling of R/W access*/
-extern M4OSA_Context M4OSA_FileInterface_RWsemaphore; /*defined in M4OSA_FileInterface.c*/
-
-/**
- ******************************************************************************
- * func M4_FileInterface_xxx
- * @brief Manage the interface pointers for filesystem access
- ******************************************************************************
-*/
-M4OSA_FilePtrFct* M4_FileInterface_InitPointer(void);
-M4OSA_ERR M4_FileInterface_SelectPointer(M4OSA_FilePtrFct *pFileFctPtr,
- M4OSA_FileInterface_t mode);
-M4OSA_Void M4_FileInterface_FreePointer(M4OSA_FilePtrFct *pFileFctPtr);
-M4OSA_ERR M4OSA_fileReadOpen_optim_SetInterfaceFFS(M4OSA_Context* pContext,
- M4OSA_Void* pFileDescriptor,
- M4OSA_UInt32 FileModeAccess);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus*/
-
-#endif /* __M4OSA_FILEACESS_H__*/
diff --git a/libvideoeditor/osal/inc/M4OSA_FileCache.h b/libvideoeditor/osal/inc/M4OSA_FileCache.h
deleted file mode 100755
index cb4c2ba..0000000
--- a/libvideoeditor/osal/inc/M4OSA_FileCache.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright (C) 2004-2011 NXP Software
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-/**
- ******************************************************************************
- * @file M4OSA_FileCache.h
- * @ingroup OSAL
- * @brief Osal File Reader and Writer with cache
- * @note This file implements functions to manipulate
- * filesystem access with intermediate buffers used to
- * read and to write.
- ******************************************************************************
-*/
-
-#ifndef M4OSA_FILECACHE_H
-#define M4OSA_FILECACHE_H
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-M4OSA_ERR M4OSA_fileOpen_cache(M4OSA_Context* pContext,
- M4OSA_Void* pFileDescriptor,
- M4OSA_UInt32 FileModeAccess);
-M4OSA_ERR M4OSA_fileReadData_cache( M4OSA_Context context,
- M4OSA_MemAddr8 buffer,
- M4OSA_UInt32* size );
-M4OSA_ERR M4OSA_fileWriteData_cache( M4OSA_Context context,
- M4OSA_MemAddr8 buffer,
- M4OSA_UInt32 size );
-M4OSA_ERR M4OSA_fileReadSeek_cache( M4OSA_Context context,
- M4OSA_FileSeekAccessMode seekMode,
- M4OSA_FilePosition* position );
-M4OSA_ERR M4OSA_fileWriteSeek_cache( M4OSA_Context context,
- M4OSA_FileSeekAccessMode seekMode,
- M4OSA_FilePosition* position );
-M4OSA_ERR M4OSA_fileGetOption_cache( M4OSA_Context context,
- M4OSA_OptionID optionID,
- M4OSA_DataOption *optionValue );
-M4OSA_ERR M4OSA_fileSetOption_cache( M4OSA_Context context,
- M4OSA_OptionID optionID,
- M4OSA_DataOption optionValue );
-M4OSA_ERR M4OSA_fileFlush_cache( M4OSA_Context pContext);
-M4OSA_ERR M4OSA_fileClose_cache( M4OSA_Context context );
-
-/* Used in VA */
-M4OSA_ERR M4OSA_fileExtrafTruncate_cache(M4OSA_Context context,
- M4OSA_UInt32 length);
-
-#ifdef __cplusplus
-}
-#endif
-
-
-#endif /* M4OSA_FILECACHE_H */
diff --git a/libvideoeditor/osal/inc/M4OSA_FileExtra.h b/libvideoeditor/osal/inc/M4OSA_FileExtra.h
deleted file mode 100755
index 0c9bac2..0000000
--- a/libvideoeditor/osal/inc/M4OSA_FileExtra.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright (C) 2004-2011 NXP Software
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-/************************************************************************/
-/* */
-/* @file M4OSA_FileExtra.h */
-/* @ingroup OSAL */
-/************************************************************************/
-
-
-#ifndef M4OSA_FILE_EXTRA_H
-#define M4OSA_FILE_EXTRA_H
-
-#include "M4OSA_Types.h"
-#include "M4OSA_Error.h"
-#include "M4OSA_FileCommon.h"
-/* size of the copy buffer (in bytes) for M4OSA_fileExtraCopy */
-#define BUFFER_COPY_SIZE 1024
-
-typedef enum
-{
- M4OSA_TypeInvalid = 0,
- M4OSA_TypeFile,
- M4OSA_TypeDir
-} M4OSA_EntryType;
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-M4OSA_ERR M4OSA_fileExtraDelete(const M4OSA_Char* url);
-
-M4OSA_ERR M4OSA_fileExtraCopy(M4OSA_Char* srcUrl, M4OSA_Char* dstUrl);
-
-M4OSA_ERR M4OSA_fileExtraRename(M4OSA_Char* srcUrl, M4OSA_Char* dstUrl);
-
-M4OSA_ERR M4OSA_fileExtraChangeCurrentDir(const M4OSA_Char* url);
-
-M4OSA_ERR M4OSA_fileExtraCreateDir(const M4OSA_Char* pUrl);
-
-M4OSA_ERR M4OSA_fileExtraRemoveDir(const M4OSA_Char* pUrl);
-
-M4OSA_UInt32 M4OSA_fileExtraGetFreeSpace(const M4OSA_Char* pUrl);
-
-M4OSA_UInt32 M4OSA_fileExtraGetTotalSpace(const M4OSA_Char* pUrl);
-
-M4OSA_EntryType M4OSA_fileExtraGetType(const M4OSA_Char* pUrl);
-
-M4OSA_ERR M4OSA_fileExtrafTruncate(M4OSA_Context context, M4OSA_FilePosition length);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /*M4OSA_FILE_EXTRA_H*/
-
diff --git a/libvideoeditor/osal/inc/M4OSA_FileReaderRam.h b/libvideoeditor/osal/inc/M4OSA_FileReaderRam.h
deleted file mode 100755
index 0480192..0000000
--- a/libvideoeditor/osal/inc/M4OSA_FileReaderRam.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright (C) 2004-2011 NXP Software
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-/**
- ******************************************************************************
- * @file M4OSA_FileReaderRam.h
- * @ingroup OSAL
- * @note This file implements functions to read a "file" stored in RAM.
- ******************************************************************************
-*/
-
-
-
-#ifndef M4OSA_FILEREADERRAM_H
-#define M4OSA_FILEREADERRAM_H
-
-#include "M4OSA_FileReader.h"
-
-/**
- ******************************************************************************
- * structure M4FI_FileReaderRam_Descriptor
- * @brief This structure defines the File descriptor (public)
- * @note This structure is used to store the pointer to the data in memory
- * @note and its size
- ******************************************************************************
-*/
-typedef struct
-{
- M4OSA_MemAddr8 pFileDesc; /* Pointer on file data */
- M4OSA_Int32 dataSize; /* Size of data */
-} M4OSA_FileReaderRam_Descriptor;
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-/* reader API : RAM functions */
-M4OSA_ERR M4OSA_fileReadRamOpen( M4OSA_Context* context,
- M4OSA_Void* fileDescriptor,
- M4OSA_UInt32 fileModeAccess );
-M4OSA_ERR M4OSA_fileReadRamData( M4OSA_Context context,
- M4OSA_MemAddr8 buffer,
- M4OSA_UInt32* size );
-M4OSA_ERR M4OSA_fileReadRamSeek( M4OSA_Context context,
- M4OSA_FileSeekAccessMode seekMode,
- M4OSA_FilePosition* position );
-M4OSA_ERR M4OSA_fileReadRamClose( M4OSA_Context context );
-M4OSA_ERR M4OSA_fileReadRamGetOption( M4OSA_Context context,
- M4OSA_FileReadOptionID optionID,
- M4OSA_DataOption *optionValue );
-M4OSA_ERR M4OSA_fileReadRamSetOption( M4OSA_Context context,
- M4OSA_FileReadOptionID optionID,
- M4OSA_DataOption optionValue );
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /*M4OSA_FILEREADERRAM_H*/
-
diff --git a/libvideoeditor/osal/inc/M4OSA_FileWriterRam.h b/libvideoeditor/osal/inc/M4OSA_FileWriterRam.h
deleted file mode 100755
index bc19a05..0000000
--- a/libvideoeditor/osal/inc/M4OSA_FileWriterRam.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright (C) 2004-2011 NXP Software
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-/**
- ******************************************************************************
- * @file M4OSA_FileWriterRam.h
- * @ingroup OSAL
- * @brief File writer to RAM
- * @note This file implements functions to write a "file" in RAM.
- ******************************************************************************
-*/
-
-
-#ifndef M4OSA_FILEWRITERRAM_H
-#define M4OSA_FILEWRITERRAM_H
-
-#include "M4OSA_FileWriter.h"
-
-
-/**
- ******************************************************************************
- * structure M4OSA_FileWriterRam_Descriptor
- * @brief This structure defines the File descriptor (public)
- * @note This structure is used to store the pointer to the data in memory
- * @note and its size
- ******************************************************************************
-*/
-typedef struct
-{
- M4OSA_MemAddr8 pFileDesc; /* Pointer on file data */
- M4OSA_Int32 dataSize; /* Size of data */
-} M4OSA_FileWriterRam_Descriptor;
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-/* Writer API : RAM functions */
-M4OSA_ERR M4OSA_fileWriteRamOpen(M4OSA_Context* context,
- M4OSA_Void* fileDescriptor,
- M4OSA_UInt32 fileModeAccess);
-M4OSA_ERR M4OSA_fileWriteRamData(M4OSA_Context context,
- M4OSA_MemAddr8 data,
- M4OSA_UInt32 Size);
-M4OSA_ERR M4OSA_fileWriteRamSeek(M4OSA_Context context,
- M4OSA_FileSeekAccessMode SeekMode,
- M4OSA_FilePosition* position);
-M4OSA_ERR M4OSA_fileWriteRamClose(M4OSA_Context context);
-M4OSA_ERR M4OSA_fileWriteRamFlush(M4OSA_Context context);
-M4OSA_ERR M4OSA_fileWriteRamSetOption(M4OSA_Context context,
- M4OSA_OptionID OptionID,
- M4OSA_DataOption OptionValue);
-M4OSA_ERR M4OSA_fileWriteRamGetOption(M4OSA_Context context,
- M4OSA_OptionID OptionID,
- M4OSA_DataOption* optionValue);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /*M4OSA_FILEWRITERRAM_H*/
-
diff --git a/libvideoeditor/osal/inc/M4OSA_String.h b/libvideoeditor/osal/inc/M4OSA_String.h
deleted file mode 100755
index 3fcf4ed..0000000
--- a/libvideoeditor/osal/inc/M4OSA_String.h
+++ /dev/null
@@ -1,267 +0,0 @@
-/*
- * Copyright (C) 2004-2011 NXP Software
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-/**
- ************************************************************************
- * @file M4OSA_String.h
- * @ingroup OSAL
- * @brief public definition for string library
- ************************************************************************
-*/
-
-#ifndef _M4OSA_STRING_H_
-#define _M4OSA_STRING_H_
-
-#include "M4OSA_Types.h"
-#include "M4OSA_FileCommon.h"
-#include "M4OSA_Time.h"
-#include "M4OSA_CharStar.h"
-
-
-
-typedef void* M4OSA_String;
-
-typedef enum
-{
- M4OSA_kstrAll = 0,
- M4OSA_kstrBegin,
- M4OSA_kstrEnd
-} M4OSA_strMode;
-
-/* types definition */
-typedef enum
-{
- M4OSA_kstrDec = M4OSA_kchrDec,
- M4OSA_kstrHexa = M4OSA_kchrHexa,
- M4OSA_kstrOct = M4OSA_kchrOct
-} M4OSA_strNumBase;
-
-/* Error and Warnings codes */
-#define M4ERR_STR_BAD_STRING M4OSA_ERR_CREATE(M4_ERR,M4OSA_STRING,0x000001)
-#define M4ERR_STR_CONV_FAILED M4OSA_ERR_CREATE(M4_ERR,M4OSA_STRING,0x000002)
-#define M4ERR_STR_OVERFLOW M4OSA_ERR_CREATE(M4_ERR,M4OSA_STRING,0x000003)
-#define M4ERR_STR_BAD_ARGS M4OSA_ERR_CREATE(M4_ERR,M4OSA_STRING,0x000004)
-
-#define M4WAR_STR_OVERFLOW M4OSA_ERR_CREATE(M4_WAR,M4OSA_STRING,0x000001)
-#define M4WAR_STR_NOT_FOUND M4OSA_ERR_CREATE(M4_WAR,M4OSA_STRING,0x000002)
-
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-
-M4OSAL_STRING_EXPORT_TYPE M4OSA_ERR M4OSA_strCreate( M4OSA_String* pstr);
-
-M4OSAL_STRING_EXPORT_TYPE M4OSA_ERR M4OSA_strReset( M4OSA_String str);
-
-M4OSAL_STRING_EXPORT_TYPE M4OSA_ERR M4OSA_strDestroy( M4OSA_String str);
-
-M4OSAL_STRING_EXPORT_TYPE M4OSA_ERR M4OSA_strSetCharContent( M4OSA_String str,
- M4OSA_Char* pchar);
-
-M4OSAL_STRING_EXPORT_TYPE M4OSA_ERR M4OSA_strGetCharContent( M4OSA_String str,
- M4OSA_Char** ppchar);
-
-M4OSAL_STRING_EXPORT_TYPE M4OSA_ERR M4OSA_strSetChar( M4OSA_String str,
- M4OSA_Char c);
-
-M4OSAL_STRING_EXPORT_TYPE M4OSA_ERR M4OSA_strGetChar( M4OSA_String str,
- M4OSA_Char* pc);
-
-M4OSAL_STRING_EXPORT_TYPE M4OSA_ERR M4OSA_strSetInt8( M4OSA_String str,
- M4OSA_Int8 i8,
- M4OSA_strNumBase base);
-
-M4OSAL_STRING_EXPORT_TYPE M4OSA_ERR M4OSA_strGetInt8( M4OSA_String str,
- M4OSA_Int8* pi8,
- M4OSA_strNumBase base);
-
-M4OSAL_STRING_EXPORT_TYPE M4OSA_ERR M4OSA_strSetUInt8( M4OSA_String str,
- M4OSA_UInt8 ui8,
- M4OSA_strNumBase base);
-
-M4OSAL_STRING_EXPORT_TYPE M4OSA_ERR M4OSA_strGetUInt8( M4OSA_String str,
- M4OSA_UInt8* pui8,
- M4OSA_strNumBase base);
-
-M4OSAL_STRING_EXPORT_TYPE M4OSA_ERR M4OSA_strSetInt16( M4OSA_String str,
- M4OSA_Int16 i16,
- M4OSA_strNumBase base);
-
-M4OSAL_STRING_EXPORT_TYPE M4OSA_ERR M4OSA_strGetInt16( M4OSA_String str,
- M4OSA_Int16* pi16,
- M4OSA_strNumBase base);
-
-M4OSAL_STRING_EXPORT_TYPE M4OSA_ERR M4OSA_strSetUInt16( M4OSA_String str,
- M4OSA_UInt16 ui16,
- M4OSA_strNumBase base);
-
-M4OSAL_STRING_EXPORT_TYPE M4OSA_ERR M4OSA_strGetUInt16( M4OSA_String str,
- M4OSA_UInt16* pui16,
- M4OSA_strNumBase base);
-
-M4OSAL_STRING_EXPORT_TYPE M4OSA_ERR M4OSA_strSetInt32( M4OSA_String str,
- M4OSA_Int32 i32,
- M4OSA_strNumBase base);
-
-M4OSAL_STRING_EXPORT_TYPE M4OSA_ERR M4OSA_strGetInt32( M4OSA_String str,
- M4OSA_Int32* pi32,
- M4OSA_strNumBase base);
-
-M4OSAL_STRING_EXPORT_TYPE M4OSA_ERR M4OSA_strSetUInt32( M4OSA_String str,
- M4OSA_UInt32 ui32,
- M4OSA_strNumBase base);
-
-M4OSAL_STRING_EXPORT_TYPE M4OSA_ERR M4OSA_strGetUInt32( M4OSA_String str,
- M4OSA_UInt32* pui32,
- M4OSA_strNumBase base);
-
-M4OSAL_STRING_EXPORT_TYPE M4OSA_ERR M4OSA_strSetDouble( M4OSA_String str,
- M4OSA_Double d);
-
-M4OSAL_STRING_EXPORT_TYPE M4OSA_ERR M4OSA_strGetDouble( M4OSA_String str,
- M4OSA_Double* pd);
-
-M4OSAL_STRING_EXPORT_TYPE M4OSA_ERR M4OSA_strSetInt64( M4OSA_String str,
- M4OSA_Int64 i64,
- M4OSA_strNumBase base);
-
-M4OSAL_STRING_EXPORT_TYPE M4OSA_ERR M4OSA_strGetInt64( M4OSA_String str,
- M4OSA_Int64* pi64,
- M4OSA_strNumBase base);
-
-M4OSAL_STRING_EXPORT_TYPE M4OSA_ERR M4OSA_strSetFilePosition( M4OSA_String str,
- M4OSA_FilePosition fpos,
- M4OSA_strNumBase base);
-
-M4OSAL_STRING_EXPORT_TYPE M4OSA_ERR M4OSA_strGetFilePosition( M4OSA_String str,
- M4OSA_FilePosition* pfpos,
- M4OSA_strNumBase base);
-
-M4OSAL_STRING_EXPORT_TYPE M4OSA_ERR M4OSA_strSetTime( M4OSA_String str,
- M4OSA_Time t,
- M4OSA_strNumBase base);
-
-M4OSAL_STRING_EXPORT_TYPE M4OSA_ERR M4OSA_strGetTime( M4OSA_String str,
- M4OSA_Time* pt,
- M4OSA_strNumBase base);
-
-M4OSAL_STRING_EXPORT_TYPE M4OSA_ERR M4OSA_strGetLength( M4OSA_String str,
- M4OSA_UInt32 *pui32);
-
-M4OSAL_STRING_EXPORT_TYPE M4OSA_ERR M4OSA_strTruncate( M4OSA_String str,
- M4OSA_UInt32 ui32_length);
-
-M4OSAL_STRING_EXPORT_TYPE M4OSA_ERR M4OSA_strCopy( M4OSA_String str_in,
- M4OSA_String str_out);
-
-M4OSAL_STRING_EXPORT_TYPE M4OSA_ERR M4OSA_strCopySubStr( M4OSA_String str_out,
- M4OSA_UInt32 ui32_pos,
- M4OSA_String str_in,
- M4OSA_UInt32 ui32_offset,
- M4OSA_UInt32* ui32_num);
-
-M4OSAL_STRING_EXPORT_TYPE M4OSA_ERR M4OSA_strConcat( M4OSA_String str_first,
- M4OSA_String str_second);
-
-M4OSAL_STRING_EXPORT_TYPE M4OSA_ERR M4OSA_strInsertSubStr( M4OSA_String str_out,
- M4OSA_UInt32 ui32_pos,
- M4OSA_String str_in,
- M4OSA_UInt32 ui32_offset,
- M4OSA_UInt32* pui32_num);
-
-M4OSAL_STRING_EXPORT_TYPE M4OSA_ERR M4OSA_strCompare( M4OSA_String str_in1,
- M4OSA_String str_in2,
- M4OSA_Int32* pi32_result);
-
-M4OSAL_STRING_EXPORT_TYPE M4OSA_ERR M4OSA_strCompareSubStr( M4OSA_String str_in1,
- M4OSA_UInt32 ui32_offset1,
- M4OSA_String str_in2,
- M4OSA_UInt32 ui32_offset2,
- M4OSA_UInt32* pui32_num,
- M4OSA_Int32* pi32_result);
-
-M4OSAL_STRING_EXPORT_TYPE M4OSA_ERR M4OSA_strCaseCompare( M4OSA_String str_in1,
- M4OSA_String str_in2,
- M4OSA_Int32* pi32_result);
-
-M4OSAL_STRING_EXPORT_TYPE M4OSA_ERR M4OSA_strCaseCompareSubStr( M4OSA_String str_in1,
- M4OSA_UInt32 ui32_offset1,
- M4OSA_String str_in2,
- M4OSA_UInt32 ui32_offset2,
- M4OSA_UInt32* pui32_num,
- M4OSA_Int32* pi32_result);
-
-M4OSAL_STRING_EXPORT_TYPE M4OSA_ERR M4OSA_strSpan( M4OSA_String str_in,
- M4OSA_Char* charset,
- M4OSA_UInt32* pui32_result);
-
-M4OSAL_STRING_EXPORT_TYPE M4OSA_ERR M4OSA_strSpanComplement( M4OSA_String str_in,
- M4OSA_Char* charset,
- M4OSA_UInt32* pui32_pos);
-
-M4OSAL_STRING_EXPORT_TYPE M4OSA_ERR M4OSA_strFindFirstChar( M4OSA_String str_in,
- M4OSA_Char c,
- M4OSA_UInt32* pui32_pos);
-
-M4OSAL_STRING_EXPORT_TYPE M4OSA_ERR M4OSA_strFindLastChar( M4OSA_String str_in,
- M4OSA_Char c,
- M4OSA_UInt32* pui32_pos);
-
-M4OSAL_STRING_EXPORT_TYPE M4OSA_ERR M4OSA_strFindFirstSubStr( M4OSA_String str_in1,
- M4OSA_String str_in2,
- M4OSA_UInt32* pui32_pos);
-
-M4OSAL_STRING_EXPORT_TYPE M4OSA_ERR M4OSA_strFindLastSubStr( M4OSA_String str_in1,
- M4OSA_String str_in2,
- M4OSA_UInt32* pui32_pos);
-
-M4OSAL_STRING_EXPORT_TYPE M4OSA_ERR M4OSA_strGetFirstToken( M4OSA_String str_in,
- M4OSA_String str_delim,
- M4OSA_String pstr_token);
-
-M4OSAL_STRING_EXPORT_TYPE M4OSA_ERR M4OSA_strGetLastToken( M4OSA_String str_in,
- M4OSA_String str_delim,
- M4OSA_String pstr_token);
-
-M4OSAL_STRING_EXPORT_TYPE M4OSA_ERR M4OSA_strSetUpperCase( M4OSA_String str);
-
-M4OSAL_STRING_EXPORT_TYPE M4OSA_ERR M4OSA_strSetLowerCase( M4OSA_String str);
-
-M4OSAL_STRING_EXPORT_TYPE M4OSA_ERR M4OSA_strDelSubStr( M4OSA_String str_in,
- M4OSA_UInt32 ui32_offset,
- M4OSA_UInt32* ui32_num);
-
-M4OSAL_STRING_EXPORT_TYPE M4OSA_ERR M4OSA_strReplaceSubStr( M4OSA_String str_in,
- M4OSA_String str_old,
- M4OSA_String str_new,
- M4OSA_strMode mode);
-
-M4OSAL_STRING_EXPORT_TYPE M4OSA_ERR M4OSA_strSprintf( M4OSA_String str,
- M4OSA_Char* format,
- ...);
-
-M4OSAL_STRING_EXPORT_TYPE M4OSA_ERR M4OSA_strSetMinAllocationSize( M4OSA_String str,
- M4OSA_UInt32 ui32_size);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
diff --git a/libvideoeditor/osal/inc/M4OSA_String_priv.h b/libvideoeditor/osal/inc/M4OSA_String_priv.h
deleted file mode 100755
index 3303c1d..0000000
--- a/libvideoeditor/osal/inc/M4OSA_String_priv.h
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Copyright (C) 2004-2011 NXP Software
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-/**
- ************************************************************************
- * @file M4OSA_String.h
- * @ingroup OSAL
- * @brief public definition for string library
-************************************************************************
-*/
-
-
-#ifndef _M4OSA_STRING_PRIV_H
-#define _M4OSA_STRING_PRIV_H
-
-
-#include "M4OSA_Types.h"
-#include "M4OSA_String.h"
-
-#include <stdarg.h>
-
-typedef struct
-{
- /* string identifiant */
- M4OSA_UInt32 coreID;
- /** data buffer */
- M4OSA_Char* pui8_buffer;
- /** allocated size of the data buffer */
- M4OSA_UInt32 ui32_size;
- /** size of valid data in the buffer */
- M4OSA_UInt32 ui32_length;
-} M4OSA_strStruct;
-
-
-
-M4OSA_ERR M4OSA_strPrivRealloc( M4OSA_strStruct* str,
- M4OSA_UInt32 ui32_length);
-
-M4OSA_ERR M4OSA_strPrivReallocCopy( M4OSA_strStruct* str,
- M4OSA_UInt32 ui32_length);
-
-M4OSA_ERR M4OSA_strPrivSet( M4OSA_strStruct* str,
- M4OSA_Char* pchar,
- M4OSA_UInt32 ui32_length);
-
-M4OSA_ERR M4OSA_strPrivDuplicate( M4OSA_strStruct** ostr,
- M4OSA_strStruct* istr);
-
-M4OSA_Int32 M4OSA_strPrivFindLastSubStr( M4OSA_strStruct* str1,
- M4OSA_strStruct* str2,
- M4OSA_UInt32 ui32_pos);
-
-M4OSA_ERR M4OSA_strPrivSetAndRepleceStr( M4OSA_strStruct* istr,
- M4OSA_UInt32 ui32_pos,
- M4OSA_UInt32 olength,
- M4OSA_Char* nbuff,
- M4OSA_UInt32 nlength);
-
-M4OSA_ERR M4OSA_strPrivReplaceSameSizeStr( M4OSA_strStruct* istr,
- M4OSA_strStruct* ostr,
- M4OSA_strStruct* nstr,
- M4OSA_strMode mode);
-
-M4OSA_ERR M4OSA_strPrivReplaceSmallerStr( M4OSA_strStruct* istr,
- M4OSA_strStruct* ostr,
- M4OSA_strStruct* nstr,
- M4OSA_strMode mode);
-
-M4OSA_ERR M4OSA_strPrivReplaceBiggerStr( M4OSA_strStruct* istr,
- M4OSA_strStruct* ostr,
- M4OSA_strStruct* nstr,
- M4OSA_strMode mode);
-
-M4OSA_ERR M4OSA_strPrivSPrintf( M4OSA_strStruct* str,
- M4OSA_Char *format,
- va_list marker);
-
-
-#define M4OSA_CHECK_MALLOC(buff, string)\
- if(buff == M4OSA_NULL)\
- {\
- M4OSA_DEBUG(M4ERR_ALLOC, string);\
- return M4ERR_ALLOC;\
- }\
-
-
-#endif
-
diff --git a/libvideoeditor/osal/src/M4OSA_FileCache.c b/libvideoeditor/osal/src/M4OSA_FileCache.c
deleted file mode 100755
index 718c0fb..0000000
--- a/libvideoeditor/osal/src/M4OSA_FileCache.c
+++ /dev/null
@@ -1,2978 +0,0 @@
-/*
- * Copyright (C) 2004-2011 NXP Software
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-/**
- *************************************************************************
- * @file M4OSA_FileCache.c
- *
- * @brief Osal File Reader and Writer with cache
- * @note This file implements functions to manipulate
- * filesystem access with intermediate buffers used to
- * read and to write.
- *************************************************************************
-*/
-
-/**
- *************************************************************************
- * File cache buffers parameters (size, number of buffers, etc)
- *************************************************************************
-*/
-#define M4OSA_CACHEBUFFER_SIZE (8*1024)
-#define M4OSA_CACHEBUFFER_NB 6
-#define M4OSA_CACHEBUFFER_NONE -1
-#define M4OSA_CACHEBUFFER_ALL -2
-#define M4OSA_EOF -1
-
-/** Strategy used by Osal File Cache to flush the buffers to disk.
-Depending on the service, the strategy will have more or less success */
-//#define BUFFER_SELECT_INITIAL /** Initial implementation of Osal File Reader optim */
-//#define BUFFER_SELECT_WITH_TIME /** To flush in priority the buffers which have not been used for a certain time */
-//#define BUFFER_SELECT_WITH_SPACE /** To flush in priority the buffers which have not been used a lot of times */
-#define BUFFER_SELECT_WITH_POS /** To flush in priority the buffers which have the smallest position on the file */
-
-/* to measure success of cache operations */
-//#define FILECACHE_STATS
-
-/* For performance measure */
-//#define M4OSA_FILE_CACHE_TIME_MEAS
-
-/*** To debug */
-//#define NO_STRATEGY
-//#define BUFFER_DISPLAY
-
-#ifdef M4OSA_FILE_CACHE_TIME_MEAS
-#include "M4OSA_clock.h"
-
-typedef enum
-{
- fileOpentime,
- fileClosetime,
- fileReadDatatime,
- fileWriteDatatime,
- fileSeektime,
- fileGetOptiontime,
- fileSetOptiontime,
- fileExternalFlushtime,
- enum_size /* for enum size */
-} M4OSA_filetimeType;
-
-typedef M4OSA_Time TabFiletime[enum_size+1];
-
-void M4OSA_FileCache_initTimeMeas(M4OSA_Context pContext);
-void M4OSA_FileCache_displayTimeMeas(M4OSA_Context pContext);
-
-#endif /* M4OSA_FILE_CACHE_TIME_MEAS */
-
-/* ANSI C*/
-#include <stdio.h>
-#include <string.h>
-#include <errno.h>
-#include <unistd.h>
-#include <sys/stat.h>
-/* End: ANSI C includes */
-
-#include "M4OSA_FileCommon.h"
-#include "M4OSA_FileReader.h"
-#include "M4OSA_FileWriter.h"
-
-#include "M4OSA_FileCache.h"
-
-#include "M4OSA_Memory.h"
-#include "M4OSA_Debug.h"
-#include "M4OSA_CharStar.h"
-#include "M4OSA_Mutex.h"
-
-
-#define LOCK \
- M4OSA_mutexLock(apContext->m_mutex, M4OSA_WAIT_FOREVER);
-
-#define UNLOCK \
- M4OSA_mutexUnlock(apContext->m_mutex);
-
-typedef struct
-{
- M4OSA_Void* FileDesc;
-} M4OSA_FileSystem_FFS_t_cache;
-
-typedef struct
-{
- M4OSA_Void* (*pFctPtr_Open)( M4OSA_Void* fd,
- M4OSA_UInt32 FileModeAccess,
- M4OSA_UInt16* errno_ffs );
- M4OSA_FilePosition (*pFctPtr_Read)( M4OSA_Void* fd,
- M4OSA_UInt8* data,
- M4OSA_FilePosition size,
- M4OSA_UInt16* errno_ffs );
- M4OSA_FilePosition (*pFctPtr_Write)( M4OSA_Void* fd,
- M4OSA_UInt8* data,
- M4OSA_FilePosition size,
- M4OSA_UInt16* errno_ffs );
- M4OSA_FilePosition (*pFctPtr_Seek)( M4OSA_Void* fd,
- M4OSA_FilePosition pos,
- M4OSA_FileSeekAccessMode mode,
- M4OSA_UInt16* errno_ffs );
- M4OSA_FilePosition (*pFctPtr_Tell)( M4OSA_Void* fd,
- M4OSA_UInt16* errno_ffs );
- M4OSA_Int32 (*pFctPtr_Close)( M4OSA_Void* fd,
- M4OSA_UInt16* errno_ffs );
- M4OSA_Void (*pFctPtr_AccessType)( M4OSA_UInt32 FileModeAccess_In,
- M4OSA_Void* FileModeAccess_Out );
-
-} M4OSA_FileSystem_FctPtr_cache;
-
-M4OSA_Void* M4OSA_FileSystem_FFS_Open_cache( M4OSA_Void* pFileDescriptor,
- M4OSA_UInt32 FileModeAccess,
- M4OSA_UInt16* errno_ffs );
-M4OSA_Int32 M4OSA_FileSystem_FFS_Close_cache( M4OSA_Void* pContext,
- M4OSA_UInt16* errno_ffs );
-M4OSA_FilePosition M4OSA_FileSystem_FFS_Read_cache( M4OSA_Void* pContext,
- M4OSA_UInt8* data,
- M4OSA_FilePosition size,
- M4OSA_UInt16* errno_ffs );
-M4OSA_FilePosition M4OSA_FileSystem_FFS_Write_cache( M4OSA_Void* pContext,
- M4OSA_UInt8* data,
- M4OSA_FilePosition size,
- M4OSA_UInt16* errno_ );
-M4OSA_Int32 M4OSA_FileSystem_FFS_Seek_cache( M4OSA_Void* pContext,
- M4OSA_FilePosition pos,
- M4OSA_FileSeekAccessMode mode,
- M4OSA_UInt16* errno_ffs );
-M4OSA_FilePosition M4OSA_FileSystem_FFS_Tell_cache( M4OSA_Void* pContext,
- M4OSA_UInt16* errno_ffs );
-
-M4OSA_ERR M4OSA_fileOpen_cache_internal(M4OSA_Context* pContext,
- M4OSA_Void* pFileDescriptor,
- M4OSA_UInt32 FileModeAccess,
- M4OSA_FileSystem_FctPtr_cache *FS);
-
-/*
-------------------User--------------------
- ^
- |
--------- -------- ----------
-|Filled| |Copied| |Modified|
--------- -------- ----------
- ^
- |
-------------------Disk--------------------
-
-Atomic states for a buffer:
-
-0x00 initialized or flushed (When it is initialized again, it is flushed if necessary)
-0x01 Filled from disk
-0x03 Filled and Copied to user
-
-0x80 Modified and newly created (does not exist on disk) => must be flushed
-0x83 Modified after having been read from disk => must be flushed
-
-*/
-
-typedef enum
-{
- M4OSA_kInitialized = 0,
- M4OSA_kFilled = 0x1,
- M4OSA_kCopied = 0x2,
- M4OSA_kModified = 0x80
-} M4OSA_FileCacheStateAtomic;
-
-
-/**
- ******************************************************************************
- * structure M4OSA_FileCache_Buffer
- * @brief This structure defines the File Buffers context (private)
- ******************************************************************************
-*/
-typedef struct
-{
- M4OSA_MemAddr8 data; /**< buffer data */
- M4OSA_FilePosition size; /**< size of the buffer */
- M4OSA_FilePosition filepos; /**< position in the file of the buffer's first octet */
- M4OSA_FilePosition remain; /**< data amount not already copied from buffer */
-
- M4OSA_UInt32 nbFillSinceLastAcess; /**< To know since how many time we didn't use this buffer. to detect dead buffers */
-
- M4OSA_UInt32 nbAccessed; /**< nb of times the buffer has been accessed without being reinitialized */
- M4OSA_Time timeAccessed; /**< last time at which the buffer has been accessed without being reinitialized */
-
- M4OSA_UInt8 state;
-} M4OSA_FileCache_Buffer;
-
-/**
- ******************************************************************************
- * structure M4OSA_FileCache_Context
- * @brief This structure defines the File context (private)
- * @note This structure is used for all File calls to store the context
- ******************************************************************************
-*/
-typedef struct
-{
- M4OSA_Bool IsOpened; /**< Micro state machine */
- M4OSA_FileAttribute FileAttribute; /**< Opening mode */
- M4OSA_FilePosition readFilePos; /**< Effective position of the file pointer */
- M4OSA_FilePosition absolutePos; /**< Virtual position for next reading */
- M4OSA_FilePosition absoluteWritePos; /**< Virtual position for next writing */
- M4OSA_FilePosition fileSize; /**< Size of the file */
- M4OSA_FilePosition virtualFileSize; /**< Size of the file */
-
- M4OSA_FileCache_Buffer buffer[M4OSA_CACHEBUFFER_NB]; /**< buffers */
-
- M4OSA_Void* aFileDesc; /**< File descriptor */
- M4OSA_FileSystem_FctPtr_cache *FS; /**< Filesystem interface */
-
-#ifdef FILECACHE_STATS
- M4OSA_UInt32 cacheSuccessRead;
- M4OSA_UInt32 cacheSuccessWrite;
- M4OSA_UInt32 nbReadCache;
- M4OSA_UInt32 nbWriteCache;
-
- M4OSA_UInt32 nbReadFFS;
- M4OSA_UInt32 nbWriteFFS;
-#endif /* FILECACHE_STATS */
- M4OSA_Context m_mutex;
-
- M4OSA_Time chrono;
- M4OSA_Char m_filename[256];
-
-#ifdef M4OSA_FILE_CACHE_TIME_MEAS
- TabFiletime gMyPerfFileTab;
-#endif /* M4OSA_FILE_CACHE_TIME_MEAS */
-
-} M4OSA_FileCache_Context;
-
-
-#define M4ERR_CHECK_NULL_RETURN_VALUE(retval, pointer) if ((pointer) == M4OSA_NULL) return (retval);
-
-/* used to detect dead buffers */
-#define MAX_FILLS_SINCE_LAST_ACCESS M4OSA_CACHEBUFFER_NB*2
-
-
-/* __________________________________________________________ */
-/*| |*/
-/*| Quick Sort function (private) |*/
-/*|__________________________________________________________|*/
-
-M4OSA_Void M4OSA_FileCache_internalQuicksort(M4OSA_Int32* const table,
- const M4OSA_Int32 first , const M4OSA_Int32 last)
- {
- M4OSA_Int32 startIndex;
- M4OSA_Int32 endIndex;
- M4OSA_Int32 begin;
- M4OSA_Int32 end;
- M4OSA_Int32 pivot;
- M4OSA_Int32 temp;
- M4OSA_Int32 index=0;
- M4OSA_Int32 size=0;
- M4OSA_Int32 capacity = M4OSA_CACHEBUFFER_NB * 5;
- //allocation of the fifo
- M4OSA_Int32* queue = M4OSA_NULL;
- M4OSA_Int32* cursor;
- M4OSA_Int32* indexc;
-
- queue = (M4OSA_Int32*)M4OSA_32bitAlignedMalloc(capacity*sizeof(M4OSA_Int32), 0,
- (M4OSA_Char*) "quicksort FIFO of FileCache");
-
- if(queue == M4OSA_NULL)
- return;
- cursor = queue;
- indexc = queue;
- *(cursor++) = first; //remember the array first element
- *(cursor++) = last; //remember the array end
- index = 0;
- size = 2;
- do
- {
- startIndex = *(indexc++);
- endIndex = *(indexc++);
- index+=2;
- if(startIndex < endIndex)
- {
- begin = startIndex;
- end = endIndex;
- pivot = table[endIndex];
- do
- {
- while ( (begin < endIndex) && (table[begin]<=pivot) )
- begin++;
- while ( (end > begin) && (table[end]>=pivot) )
- end--;
- if (begin < end)
- {
- temp = table[end];
- table[end] = table[begin];
- table[begin] = temp;
- }
- }while(begin < end);
-
- temp = table[endIndex];
- table[endIndex] = table[begin];
- table[begin] = temp;
- *(cursor++) = startIndex;
- *(cursor++) = begin-1;
- *(cursor++) = begin+1;
- *(cursor++) = endIndex;
- size+=4;
- if(size==capacity)
- {
- M4OSA_TRACE1_0("Overflow in quickSort. increase capacity size");
- return;
- }
- }
- }
- while(index<size);
- cursor = NULL;
- indexc = NULL;
- free(queue);
-}
-
-M4OSA_Void M4OSA_FileCache_internalQuicksort64(M4OSA_Int64* const table,
- const M4OSA_Int32 first , const M4OSA_Int32 last)
- {
- M4OSA_Int32 startIndex;
- M4OSA_Int32 endIndex;
- M4OSA_Int32 begin;
- M4OSA_Int32 end;
- M4OSA_Int64 pivot;
- M4OSA_Int64 temp;
- M4OSA_Int32 index=0;
- M4OSA_Int32 size=0;
- M4OSA_Int32 capacity = M4OSA_CACHEBUFFER_NB * 5;
- //allocation of the fifo
- M4OSA_Int32* queue = M4OSA_NULL;
- M4OSA_Int32* cursor;
- M4OSA_Int32* indexc;
-
- queue = (M4OSA_Int32*)M4OSA_32bitAlignedMalloc(capacity*sizeof(M4OSA_Int32), 0,
- (M4OSA_Char*) "quicksort FIFO of FileCache");
-
- if(queue == M4OSA_NULL)
- return;
- cursor = queue;
- indexc = queue;
- *(cursor++) = first; //remember the array first element
- *(cursor++) = last; //remember the array end
- index = 0;
- size = 2;
- do
- {
- startIndex = *(indexc++);
- endIndex = *(indexc++);
- index+=2;
- if(startIndex < endIndex)
- {
- begin = startIndex;
- end = endIndex;
- pivot = table[endIndex];
- do
- {
- while ( (begin < endIndex) && (table[begin]<=pivot) )
- begin++;
- while ( (end > begin) && (table[end]>=pivot) )
- end--;
- if (begin < end)
- {
- temp = table[end];
- table[end] = table[begin];
- table[begin] = temp;
- }
- }while(begin < end);
-
- temp = table[endIndex];
- table[endIndex] = table[begin];
- table[begin] = temp;
- *(cursor++) = startIndex;
- *(cursor++) = begin-1;
- *(cursor++) = begin+1;
- *(cursor++) = endIndex;
- size+=4;
- if(size==capacity)
- {
- M4OSA_TRACE1_0("Overflow in quickSort. increase capacity size");
- return;
- }
- }
- }
- while(index<size);
- cursor = NULL;
- indexc = NULL;
- free(queue);
-}
-
-/* Sorts an array of size size */
-M4OSA_Void M4OSA_FileCache_QS_quickSort (M4OSA_FilePosition array[],
- M4OSA_UInt32 size)
-{
- if (size==1 || size==0)
- {
- M4OSA_TRACE3_0("Sort not necessary");
- return;
- }
-
- M4OSA_FileCache_internalQuicksort(array,0,size-1);
-}
-
-M4OSA_Void M4OSA_FileCache_QS_quickSort64 (M4OSA_Time array[], M4OSA_UInt32 size)
-{
- if (size==1 || size==0)
- {
- M4OSA_TRACE3_0("Sort not necessary");
- return;
- }
-
- M4OSA_FileCache_internalQuicksort64((M4OSA_Int64 * const)array, 0, size-1);
-}
-
-/* __________________________________________________________ */
-/*| |*/
-/*| Buffer handling functions for RW access (private) |*/
-/*|__________________________________________________________|*/
-
-/**************************************************************/
-M4OSA_ERR M4OSA_FileCache_BuffersInit(M4OSA_FileCache_Context* apContext)
-/**************************************************************/
-{
- M4OSA_UInt8 i;
-
- for(i=0; i<M4OSA_CACHEBUFFER_NB; i++)
- {
- apContext->buffer[i].state = M4OSA_kInitialized;
- M4OSA_memset((M4OSA_MemAddr8)&(apContext->buffer[i]),
- sizeof(M4OSA_FileCache_Buffer) , 0);
- }
-
- for(i=0; i<M4OSA_CACHEBUFFER_NB; i++)
- {
- apContext->buffer[i].data = (M4OSA_MemAddr8) M4OSA_32bitAlignedMalloc(M4OSA_CACHEBUFFER_SIZE,
- M4OSA_FILE_READER, (M4OSA_Char*)"M4OSA_FileCache_BufferInit");
- M4ERR_CHECK_NULL_RETURN_VALUE(M4ERR_ALLOC, apContext->buffer[i].data);
- apContext->buffer[i].filepos = M4OSA_EOF;
-
- }
-
- return M4NO_ERROR;
-}
-
-/**************************************************************/
-M4OSA_Void M4OSA_FileCache_BuffersFree(M4OSA_FileCache_Context* apContext)
-/**************************************************************/
-{
- M4OSA_UInt8 i;
-
- for(i=0; i<M4OSA_CACHEBUFFER_NB; i++)
- {
- if(apContext->buffer[i].data != M4OSA_NULL)
- {
- free(apContext->buffer[i].data);
- apContext->buffer[i].data = M4OSA_NULL;
- }
- }
-}
-
-#ifdef BUFFER_DISPLAY
-M4OSA_Void M4OSA_FileCache_BufferDisplay(M4OSA_FileCache_Context* apContext)
-{
- M4OSA_UInt32 i;
-
- M4OSA_TRACE1_0("------ Buffers display ");
- for(i=0; i<M4OSA_CACHEBUFFER_NB; i++)
- {
- M4OSA_TRACE1_5("------ Buf%d : FilePos=%d state=0x%x nbAccessed=%d -- timeAccessed=%d",
- i, apContext->buffer[i].filepos,
- apContext->buffer[i].state,
- apContext->buffer[i].nbAccessed,
- apContext->buffer[i].timeAccessed);
- }
- M4OSA_TRACE1_0("---------------------- ");
-}
-#endif
-
-
-/* reads from an existing buffer (number i) at absolute position pos and fills pData. it reads maximum one bloc */
-/**************************************************************/
-M4OSA_FilePosition M4OSA_FileCache_BufferCopy(M4OSA_FileCache_Context* apContext,
- M4OSA_Int8 i, M4OSA_FilePosition pos,
- M4OSA_FilePosition size,
- M4OSA_MemAddr8 pData)
-/**************************************************************/
-{
- M4OSA_FilePosition copysize;
- M4OSA_FilePosition offset;
-
- M4OSA_TRACE3_2("BufferCopy of %d, pos=%d", i, pos);
-
- if(apContext->buffer[i].size == M4OSA_EOF) return M4OSA_EOF;
-
- /* verification pos is inside buffer i*/
- if( (pos < apContext->buffer[i].filepos)
- || (pos > (apContext->buffer[i].filepos + apContext->buffer[i].size - 1)) )
- {
- return 0; /* nothing copied */
- }
-
- offset = pos - apContext->buffer[i].filepos; /* offset to read from in the buffer */
-
- copysize = apContext->buffer[i].size - offset; /* buffer size - offset, it is the maximum we can read from a buffer */
- copysize = (size < copysize) ? size : copysize; /* adjust in case user wants to read less than the data available in the buffer (copysize)
- in that case, take the min(copysize, size)*/
-
- M4OSA_memcpy(pData, apContext->buffer[i].data + offset, copysize);
-
- apContext->buffer[i].remain -= copysize;
- apContext->buffer[i].nbFillSinceLastAcess = 0;
-
-
- /* it is a read access */
- apContext->buffer[i].nbAccessed++;
- apContext->buffer[i].timeAccessed = apContext->chrono;
- apContext->chrono++;
-
-
- apContext->buffer[i].state |= M4OSA_kCopied;
-
- return copysize;
-}
-
-/* writes on cache. at absolute position pos and writes pData to the buffer. it writes maximum one bloc */
-/**************************************************************/
-M4OSA_FilePosition M4OSA_FileCache_BufferModifyContent(M4OSA_FileCache_Context* apContext,
- M4OSA_Int8 i, M4OSA_FilePosition pos,
- M4OSA_FilePosition size,
- M4OSA_MemAddr8 pData)
-/**************************************************************/
-{
- M4OSA_FilePosition copysize;
- M4OSA_FilePosition offset, gridPos;
-
- M4OSA_TRACE3_2("BufferModify of %d, pos=%d", i, pos);
-
- /* Relocate to absolute postion if necessary */
- gridPos = (pos / M4OSA_CACHEBUFFER_SIZE) * M4OSA_CACHEBUFFER_SIZE;
-
- apContext->buffer[i].filepos = gridPos;
-
- /* in case of an existing block (not at eof) */
- if (apContext->buffer[i].size != 0)
- {
- /* test if we are already inside this buffer */
- if ( (pos < apContext->buffer[i].filepos)
- || (pos > (apContext->buffer[i].filepos + M4OSA_CACHEBUFFER_SIZE)) )
- {
- M4OSA_TRACE1_0("BufferModify ERR nothing copied, should never happen");
- return 0; /* nothing copied */
- }
- }
-
- offset = pos - apContext->buffer[i].filepos; /* offset to write to, in the buffer */
-
- /* buffer size - offset, it is the maximum we can write into a buffer */
- copysize = M4OSA_CACHEBUFFER_SIZE - offset;
- /* adjust in case user wants to write less than the data available in the buffer (copysize) in that case, take the min(copysize, size)*/
- copysize = (copysize < size) ? copysize : size;
-
- M4OSA_memcpy(apContext->buffer[i].data + offset, pData, copysize);
-
- /* update buffer size if it is a new buffer or expanded one*/
- if (apContext->buffer[i].size < copysize+offset)
- {
- apContext->buffer[i].size = copysize+offset;
- }
-
- apContext->buffer[i].remain = M4OSA_CACHEBUFFER_SIZE - apContext->buffer[i].size; /* not temporary */
-
- /* mark this buffer as modified */
- apContext->buffer[i].state |= M4OSA_kModified;
-
- apContext->buffer[i].nbFillSinceLastAcess = 0;
- apContext->buffer[i].nbAccessed++;
- apContext->buffer[i].timeAccessed = apContext->chrono;
- apContext->chrono++;
-
- return copysize;
-}
-
-
-/* writes in a buffer (number i) with the data read from disk*/
-/**************************************************************/
-M4OSA_ERR M4OSA_FileCache_BufferFill(M4OSA_FileCache_Context* apContext,
- M4OSA_Int8 i, M4OSA_FilePosition pos)
-/**************************************************************/
-{
- M4OSA_FilePosition gridPos;
- M4OSA_FilePosition diff;
- M4OSA_FilePosition size;
- M4OSA_ERR err = M4NO_ERROR;
- M4OSA_Int32 ret_val;
- M4OSA_UInt16 errReturned;
-
- M4OSA_TRACE3_2("BufferFill i = %d pos = %d", i, pos);
-
- /* Avoid cycling statement because of EOF */
- if(pos > apContext->virtualFileSize)
- return M4WAR_NO_MORE_AU;
-
- /* Relocate to absolute postion if necessary */
- gridPos = (pos / M4OSA_CACHEBUFFER_SIZE) * M4OSA_CACHEBUFFER_SIZE;
-
- /* diff is how much shall we fs_seek from current position to reach gridPos*/
- diff = gridPos - apContext->readFilePos;
-
- /* on some filesystems it is necessary to do a seek between an ffs read and ffs write even if it is same pos */
- ret_val = apContext->FS->pFctPtr_Seek(apContext->aFileDesc,
- diff, M4OSA_kFileSeekCurrent, &errReturned);
- apContext->readFilePos = gridPos;
-
- if(ret_val != 0)
- {
- err = M4OSA_ERR_CREATE(M4_ERR, M4OSA_FILE_READER, errReturned);
- M4OSA_TRACE2_1("M4OSA_FileCache_BufferFill ERR1 = 0x%x", err);
- return err;
- }
- /* end. on some */
-
-/* the buffer will be reused to be filled with another filepos so reinit counters of access */
- if (apContext->buffer[i].filepos != gridPos)
- {
- apContext->buffer[i].nbAccessed = 0;
- apContext->buffer[i].timeAccessed = 0;
- }
-
- /* stores the information relative to this buffer */
- apContext->buffer[i].filepos = gridPos;
-
- /* Read Data */
- size = apContext->FS->pFctPtr_Read(apContext->aFileDesc,
- (M4OSA_UInt8*)apContext->buffer[i].data,
- M4OSA_CACHEBUFFER_SIZE, &errReturned);
-
-#ifdef FILECACHE_STATS
- apContext->nbReadFFS++;
-#endif /* FILECACHE_STATS */
-
- if(size == -1)
- {
- apContext->buffer[i].size = M4OSA_EOF;
- apContext->buffer[i].remain = 0;
-
- err = M4OSA_ERR_CREATE(M4_ERR, M4OSA_FILE_READER, errReturned);
- M4OSA_TRACE2_1("M4OSA_FileCache_BufferFill ERR2 = 0x%x", err);
- return err;
- }
-
- apContext->buffer[i].size = size;
- apContext->buffer[i].remain = size;
- apContext->buffer[i].nbFillSinceLastAcess = 0;
-
-
- /* Retrieve current position */
- apContext->readFilePos = apContext->FS->pFctPtr_Tell(apContext->aFileDesc,
- &errReturned);
-
- if( (apContext->buffer[i].size >= 0)
- && (apContext->buffer[i].size < M4OSA_CACHEBUFFER_SIZE) )
- {
- err = M4WAR_NO_DATA_YET;
- M4OSA_TRACE2_1("M4OSA_FileCache_BufferFill ERR3 = 0x%x", err);
- return err;
- }
-
- /* mark this buffer as modified */
- apContext->buffer[i].state |= M4OSA_kFilled;
-
- /* it is a write access */
- apContext->buffer[i].nbAccessed++;
- apContext->buffer[i].timeAccessed = apContext->chrono;
- apContext->chrono++;
-
- /* Return without error */
- return M4NO_ERROR;
-}
-
-/* Reinitializes a buffer for filling it for data at end of file. fileposition is given */
-/**************************************************************/
-M4OSA_ERR M4OSA_FileCache_BufferReinitialize(M4OSA_FileCache_Context* apContext,
- M4OSA_Int8 i, M4OSA_FilePosition pos)
-/**************************************************************/
-{
- M4OSA_FilePosition gridPos;
- M4OSA_ERR err = M4NO_ERROR;
-
- M4OSA_MemAddr8 saveDataAddress;
-
- M4OSA_TRACE3_2("BufferReinitialize i = %d pos = %d", i, pos);
-
- /* Relocate to absolute postion if necessary */
- if (pos != -1)
- gridPos = (pos / M4OSA_CACHEBUFFER_SIZE) * M4OSA_CACHEBUFFER_SIZE;
- else
- gridPos = -1;
-
- /* RAZ the buffer, only "data address" stays*/
- saveDataAddress = apContext->buffer[i].data;
-
- M4OSA_memset((M4OSA_MemAddr8)&(apContext->buffer[i]),
- sizeof(M4OSA_FileCache_Buffer) , 0);
-
- /* put again the precious "data address" previously allocated */
- apContext->buffer[i].data = saveDataAddress;
-
- /* initializations already done in the memset: */
- /* mark this buffer as initialized*/
- apContext->buffer[i].state= M4OSA_kInitialized;
- apContext->buffer[i].nbAccessed = 0;
- apContext->buffer[i].timeAccessed = 0;
-
- /* Relocate to absolute postion if necessary */
- apContext->buffer[i].filepos = gridPos;
-
- /* Return without error */
- return M4NO_ERROR;
-}
-
-
-/* flushes a buffer (number i) to the disk*/
-/**************************************************************/
-M4OSA_ERR M4OSA_FileCache_BufferFlush(M4OSA_FileCache_Context* apContext,
- M4OSA_UInt8 i)
-/**************************************************************/
-{
- M4OSA_FilePosition gridPos, pos;
- M4OSA_FilePosition diff;
- M4OSA_FilePosition size;
- M4OSA_ERR err = M4NO_ERROR;
- M4OSA_Int32 ret_val;
- M4OSA_UInt16 errReturned;
-
- M4OSA_TRACE3_2("BufferFlush of buffer i=%d its pos=%d", i,
- apContext->buffer[i].filepos);
-
- pos = apContext->buffer[i].filepos;
-
- /* Relocate to absolute postion if necessary */
- gridPos = (pos / M4OSA_CACHEBUFFER_SIZE) * M4OSA_CACHEBUFFER_SIZE;
-
- /* diff is how much shall we fs_seek from current position to reach gridPos*/
- diff = gridPos - apContext->readFilePos;
-
- if (pos > apContext->fileSize)
- {
- M4OSA_TRACE1_2("M4OSA_FileCache_BufferFlush: Error! Attempt to seek at pos=%d, whilst fileSize=%d ",
- pos, apContext->fileSize);
- return M4WAR_NO_MORE_AU;
- }
-
- /* on some filesystems it is necessary to do a seek between an ffs read and ffs write even if it is same pos */
- ret_val = apContext->FS->pFctPtr_Seek(apContext->aFileDesc, diff,
- M4OSA_kFileSeekCurrent, &errReturned);
- apContext->readFilePos = gridPos;
-
- if(ret_val != 0)
- {
- err = M4OSA_ERR_CREATE(M4_ERR, M4OSA_FILE_READER, errReturned);
- M4OSA_TRACE1_1("M4OSA_FileCache_BufferFill ERR1 = 0x%x", err);
- return err;
- }
- /* end: on some filesystems*/
-
- /* update the read file pos after the seek */
- apContext->readFilePos = apContext->buffer[i].filepos;
-
- /* Write Data */
- size = apContext->FS->pFctPtr_Write(apContext->aFileDesc,
- (M4OSA_UInt8*)apContext->buffer[i].data,
- apContext->buffer[i].size, &errReturned);
-#ifdef FILECACHE_STATS
- apContext->nbWriteFFS++;
-#endif /* FILECACHE_STATS */
- /* verify if all data requested to be written, has been written */
- if(size < apContext->buffer[i].size)
- {
- apContext->buffer[i].size = M4OSA_EOF;
- apContext->buffer[i].remain = 0;
-
- err = M4OSA_ERR_CREATE(M4_ERR, M4OSA_FILE_READER, errReturned);
- M4OSA_TRACE1_1("M4OSA_FileCache_BufferFlush ERR2 = 0x%x", err);
- return err;
- }
-
- /* Retrieve current position */
- apContext->readFilePos = apContext->FS->pFctPtr_Tell(apContext->aFileDesc,
- &errReturned);
-
- apContext->fileSize = (apContext->readFilePos > apContext->fileSize) ? apContext->readFilePos : apContext->fileSize;
-
- /* mark this buffer as not modified */
- apContext->buffer[i].state &= ~(M4OSA_kModified);
-
- /* Return without error */
- return M4NO_ERROR;
-}
-
-/* flushes all modified buffers until the position of buffer i
-if index is M4OSA_CACHEBUFFER_ALL then flush all*/
-/**************************************************************/
-M4OSA_ERR M4OSA_FileCache_BuffersFlushUntil(M4OSA_FileCache_Context* apContext,
- M4OSA_Int8 index)
-/**************************************************************/
-{
- M4OSA_UInt8 i, j, howManyToFlush;
- M4OSA_FilePosition bufPos[M4OSA_CACHEBUFFER_NB];
- M4OSA_Bool flushed = M4OSA_FALSE;
- M4OSA_ERR err = M4NO_ERROR;
-
-
- i=0;
- for(j=0; j<M4OSA_CACHEBUFFER_NB; j++)
- {
- if ( ((apContext->buffer[j].state & M4OSA_kModified) == M4OSA_kModified) )
- {
- bufPos[i] = apContext->buffer[j].filepos;
- i++;
- }
- }
- howManyToFlush = i;
-
- if (howManyToFlush == 0)
- {
- M4OSA_TRACE2_0("BuffersFlush : no flush needed");
- return M4NO_ERROR;
- }
- else if (howManyToFlush == 1)
- {
- goto flushing;
- }
-
- M4OSA_FileCache_QS_quickSort(bufPos, howManyToFlush);
-
-flushing:
- if (index == M4OSA_CACHEBUFFER_ALL)
- {/* simply flush all buffers in order of positions */
- for(j=0; j<howManyToFlush; j++)
- {
- for(i=0; i<M4OSA_CACHEBUFFER_NB; i++)
- if (apContext->buffer[i].filepos == bufPos[j] )
- {
- M4OSA_TRACE2_2("M4OSA_FileCache_BuffersFlushUntil(1) : We Need to Flush buffer %d its pos=%d",
- i, apContext->buffer[i].filepos);
- err = M4OSA_FileCache_BufferFlush(apContext, i);
- if (M4NO_ERROR!= err)
- {
- return err;
- }
- break;
- }
- }
- }
- else
- { /* there is a given index to flush until it*/
- for(j=0; j<howManyToFlush; j++)
- {
- for(i=0; i<M4OSA_CACHEBUFFER_NB; i++)
- {
- if (
- apContext->buffer[i].filepos == bufPos[j]
- && apContext->buffer[i].filepos <= apContext->buffer[index].filepos
- && apContext->buffer[i].filepos >= apContext->fileSize - M4OSA_CACHEBUFFER_SIZE
- )
- {
- M4OSA_TRACE2_2("M4OSA_FileCache_BuffersFlushUntil(2) : We Need to Flush buffer %d its pos=%d",
- i, apContext->buffer[i].filepos);
- err = M4OSA_FileCache_BufferFlush(apContext, i);
- if (M4NO_ERROR!= err)
- {
- return err;
- }
- if (i==index)
- { /* the buffer with the given index has been flushed */
- flushed = M4OSA_TRUE;
- }
- break;
- }
- }
-
- }
-
- if (M4OSA_TRUE == flushed)
- {
- err = M4NO_ERROR;
- }
- else
- {
- M4OSA_TRACE1_1("M4OSA_FileCache_BuffersFlushUntil err=0x%x", err);
- err = M4ERR_BAD_CONTEXT;
- }
-
- }
-
- return err;
-
-}
-
-#ifdef BUFFER_DISPLAY
-M4OSA_Void M4OSA_FileCache_BufferDisplay(M4OSA_FileCache_Context* apContext)
-{
- M4OSA_UInt32 i;
-
- M4OSA_TRACE1_0("------ Buffers display ");
- for(i=0; i<M4OSA_CACHEBUFFER_NB; i++)
- {
- M4OSA_TRACE1_3("------ Buf%d : FilePos=%d state=0x%x ",
- i, apContext->buffer[i].filepos, apContext->buffer[i].state);
-#ifdef BUFFER_DATE
- M4OSA_TRACE1_2("nbAccessed=%d - nbModified =%d",
- apContext->buffer[i].nbAccessed, apContext->buffer[i].nbModified);
- M4OSA_TRACE1_2("timeAccessed=%d - timeModified =%d",
- apContext->buffer[i].timeAccessed,
- apContext->buffer[i].timeModified);
-#endif /* BUFFER_DATE */
- }
- M4OSA_TRACE1_0("---------------------- ");
-}
-#endif
-
-
-/* provides the buffer corresponding to a position pos
-and with pos inside the read data into this buffer
-else returns CACHE_BUFFER_NONE*/
-/**************************************************************/
-M4OSA_Int8 M4OSA_FileCache_BufferMatchToRead(M4OSA_FileCache_Context* apContext,
- M4OSA_FilePosition pos)
-/**************************************************************/
-{
- M4OSA_Int8 i;
-
- /* Select the buffer which matches with given pos */
- for(i=0; i<M4OSA_CACHEBUFFER_NB; i++)
- {
- if( (pos >= apContext->buffer[i].filepos)
- && (pos < apContext->buffer[i].filepos + apContext->buffer[i].size)
- && (apContext->buffer[i].filepos != M4OSA_EOF) )
- {
- M4OSA_TRACE3_1("BufferMatch returns i = %d", i);
- return i;
- }
- }
-
- M4OSA_TRACE3_1("BufferMatch returns N O N E !!!", i);
- return M4OSA_CACHEBUFFER_NONE;
-}
-
-
-/* provides the buffer corresponding to a position pos
-and with pos inside its maximum capacity
-else returns CACHE_BUFFER_NONE*/
-/**************************************************************/
-M4OSA_Int8 M4OSA_FileCache_BufferMatchToWrite(M4OSA_FileCache_Context* apContext,
- M4OSA_FilePosition pos)
-/**************************************************************/
-{
- M4OSA_Int8 i;
-
- /* Select the buffer which matches with given pos */
- for(i=0; i<M4OSA_CACHEBUFFER_NB; i++)
- {
- if( (pos >= apContext->buffer[i].filepos)
- && (pos < apContext->buffer[i].filepos + M4OSA_CACHEBUFFER_SIZE)
- && (apContext->buffer[i].filepos != M4OSA_EOF) )
- {
- M4OSA_TRACE3_1("BufferMatch returns i = %d", i);
- return i;
- }
- }
-
- M4OSA_TRACE3_1("BufferMatch returns N O N E !!!", i);
- return M4OSA_CACHEBUFFER_NONE;
-}
-
-/* chooses a buffer by overwriting an existing one and returns i */
-/**************************************************************/
-M4OSA_Int8 M4OSA_FileCache_BufferSelectForWrite(M4OSA_FileCache_Context* apContext)
-/**************************************************************/
-{
- M4OSA_Int8 i;
- M4OSA_UInt8 selected = 0;
- M4OSA_UInt32 j, toSort;
- M4OSA_FilePosition bufPos[M4OSA_CACHEBUFFER_NB];
- M4OSA_ERR err;
-
- // update nbFillSinceLastAcess field
- for(i=0; i<M4OSA_CACHEBUFFER_NB; i++)
- {
- apContext->buffer[i].nbFillSinceLastAcess ++;
- }
-#ifdef NO_STRATEGY
- goto end_selection;
-#endif
-
- /*********************************************/
- /* 1/ if there is still a new buffer, use it */
-
- for(i=0; i<M4OSA_CACHEBUFFER_NB; i++)
- {
- if(apContext->buffer[i].state == M4OSA_kInitialized)
- {
- selected = i;
- goto end_selection;
- }
- }
-
- /*********************************************/
- /* 2/ Choose a filled and copied buffer */
-
- for(i=0; i<M4OSA_CACHEBUFFER_NB; i++)
- {
- if( ((apContext->buffer[i].state & M4OSA_kFilled) == M4OSA_kFilled)
- && ((apContext->buffer[i].state & M4OSA_kCopied) == M4OSA_kCopied)
- && ((apContext->buffer[i].state & M4OSA_kModified) != M4OSA_kModified) /* bug fix modified */
- )
- {
- selected = i;
- goto end_selection;
- }
- }
-
- /****************************************************************/
- /* 3/ Choose a modified buffer with filepos>threshold and min */
- i=0;
-
- /* sort the buffers by filepos and choose the min and not < threshold*/
- for(j=0; j<M4OSA_CACHEBUFFER_NB; j++)
- {
- if (
- ((apContext->buffer[j].state & M4OSA_kModified) == M4OSA_kModified)
- && (apContext->buffer[j].filepos > -1) /* not EOF */
- )
- {
- bufPos[i] = apContext->buffer[j].filepos;
- i++;
- }
- }
-
- toSort = i;
- if (toSort == 0 )
- {
- selected = 0;
- goto end_selection;
- }
- else if (toSort ==1 )
- {
- goto skip_sort;
- }
- else
- {
- M4OSA_FileCache_QS_quickSort(bufPos, toSort);
- }
-
-skip_sort:
- /* take the smallest filepos */
- for(i=0; i<M4OSA_CACHEBUFFER_NB; i++)
- {
- if (apContext->buffer[i].filepos == bufPos[0])
- {
- selected = i;
- goto end_selection;
- }
- }
-
-end_selection:
- if (apContext->buffer[selected].filepos > apContext->fileSize )
- {
- /* in case it selects a modified buffer outside real file size,
- in that case, flush all buffers before this one
- unless there will be a seek outside filesize*/
- M4OSA_FileCache_BuffersFlushUntil(apContext, selected);
- }
- else if ((apContext->buffer[selected].state & M4OSA_kModified) == M4OSA_kModified )
- {
- /* in case it selects a modified buffer inside filesize, simply flush it*/
- err = M4OSA_FileCache_BufferFlush(apContext, selected);
- if (M4NO_ERROR!= err)
- {
- return M4OSA_CACHEBUFFER_NONE;
- }
- }
-
-#ifdef NO_STRATEGY
- /* selected stays 0 */
- err = M4OSA_FileCache_BuffersFlushUntil(apContext, M4OSA_CACHEBUFFER_ALL);
- if (M4NO_ERROR!= err)
- {
- return M4OSA_FILE_CACHE_BUFFER_NONE;
- }
-#endif
-
- M4OSA_TRACE3_1("---------- BufferSelect returns i = %d", selected);
- return selected;
-}
-
-
-/* chooses a buffer by overwriting an existing one and returns i */
-/**************************************************************/
-M4OSA_Int8 M4OSA_FileCache_BufferSelectWithTime(M4OSA_FileCache_Context* apContext)
-/**************************************************************/
-{
- M4OSA_Int8 i;
- M4OSA_UInt8 selected = 0;
- M4OSA_UInt32 j, toSort;
- M4OSA_Time bufTime[M4OSA_CACHEBUFFER_NB];
- M4OSA_ERR err;
-
- /*********************************************/
- /* 1/ if there is still a new buffer, use it */
-
- for(i=0; i<M4OSA_CACHEBUFFER_NB; i++)
- {
- if(apContext->buffer[i].state == M4OSA_kInitialized)
- {
- selected = i;
- goto end_selection;
- }
- }
-
- i=0;
- /* sort all buffers with order of timeAccessed */
- for(j=0; j<M4OSA_CACHEBUFFER_NB; j++)
- {
- bufTime[i] = apContext->buffer[j].timeAccessed;
- i++;
- }
-
- toSort = i;
- if (toSort == 0 )
- {
- selected = 0;
- goto end_selection;
- }
- else if (toSort ==1 )
- {
- goto skip_sort;
- }
- else
- {
- M4OSA_FileCache_QS_quickSort64(bufTime, toSort);
- }
-
-skip_sort:
- /* take the smallest timeAccessed */
- for(i=0; i<M4OSA_CACHEBUFFER_NB; i++)
- {
- if (apContext->buffer[i].timeAccessed == bufTime[0])
- {
- selected = i;
- goto end_selection;
- }
- }
-
-end_selection:
- if (apContext->buffer[selected].filepos > apContext->fileSize )
- {
- /* in case it selects a modified buffer outside real file size,
- in that case, flush all buffers before this one
- unless there will be a seek outside filesize*/
- M4OSA_FileCache_BuffersFlushUntil(apContext, selected);
- }
- else if ((apContext->buffer[selected].state & M4OSA_kModified) == M4OSA_kModified )
- {
- /* in case it selects a modified buffer inside filesize, simply flush it*/
- err = M4OSA_FileCache_BufferFlush(apContext, selected);
- if (M4NO_ERROR!= err)
- {
- return M4OSA_CACHEBUFFER_NONE;
- }
- }
- M4OSA_TRACE3_1("---------- BufferSelect returns i = %d", selected);
- return selected;
-}
-
-/* chooses a buffer by overwriting an existing one and returns i */
-/**************************************************************/
-M4OSA_Int8 M4OSA_FileCache_BufferSelectWithPos(M4OSA_FileCache_Context* apContext)
-/**************************************************************/
-{
- M4OSA_Int8 i;
- M4OSA_UInt8 selected = 0, j;
- M4OSA_ERR err;
- M4OSA_FilePosition minPos;
-
- /*********************************************/
- /* 1/ if there is still a new buffer, use it */
-
- for(i=0; i<M4OSA_CACHEBUFFER_NB; i++)
- {
- if(apContext->buffer[i].state == M4OSA_kInitialized)
- {
- selected = i;
- goto end_selection;
- }
- }
-
- minPos = apContext->buffer[0].filepos;
- selected = 0;
- for(j=1; j<M4OSA_CACHEBUFFER_NB; j++)
- {
- if (apContext->buffer[j].filepos < minPos)
- {
- minPos = apContext->buffer[j].filepos;
- selected = j;
- }
- }
-
-end_selection:
- if (apContext->buffer[selected].filepos > apContext->fileSize )
- {
- /* in case it selects a modified buffer outside real file size,
- in that case, flush all buffers before this one
- unless there will be a seek outside filesize*/
- M4OSA_TRACE3_2("BufferSelectWithPos selected buffer is ouside file b.filepos=%d > fileSize=%d",
- apContext->buffer[selected].filepos,
- apContext->fileSize );
- M4OSA_FileCache_BuffersFlushUntil(apContext, selected);
- }
- else if ((apContext->buffer[selected].state & M4OSA_kModified) == M4OSA_kModified )
- {
- /* in case it selects a modified buffer inside filesize, simply flush it*/
- err = M4OSA_FileCache_BufferFlush(apContext, selected);
- if (M4NO_ERROR!= err)
- {
- return M4OSA_CACHEBUFFER_NONE;
- }
- }
- M4OSA_TRACE3_1("---------- BufferSelectWithPos returns i = %d", selected);
- return selected;
-}
-
-
-/* chooses a buffer by overwriting an existing one and returns i */
-/**************************************************************/
-M4OSA_Int8 M4OSA_FileCache_BufferSelectWithSpace(M4OSA_FileCache_Context* apContext)
-/**************************************************************/
-{
- M4OSA_Int8 i;
- M4OSA_UInt8 selected = 0;
- M4OSA_UInt32 j, toSort;
- M4OSA_FilePosition bufStat[M4OSA_CACHEBUFFER_NB];
- M4OSA_ERR err;
-
- /*********************************************/
- /* 1/ if there is still a new buffer, use it */
-
- for(i=0; i<M4OSA_CACHEBUFFER_NB; i++)
- {
- if(apContext->buffer[i].state == M4OSA_kInitialized)
- {
- selected = i;
- goto end_selection;
- }
- }
-
- i=0;
- /* sort all buffers with order of nbAccessed */
- for(j=0; j<M4OSA_CACHEBUFFER_NB; j++)
- {
- bufStat[i] = apContext->buffer[j].nbAccessed + apContext->buffer[j].timeAccessed*2; /* try hybrid */
- i++;
- }
-
- toSort = i;
- if (toSort == 0 )
- {
- selected = 0;
- goto end_selection;
- }
- else if (toSort ==1 )
- {
- goto skip_sort;
- }
- else
- {
- M4OSA_FileCache_QS_quickSort(bufStat, toSort);
- }
-
-skip_sort:
- /* take the smallest nbAccessed */
- for(i=0; i<M4OSA_CACHEBUFFER_NB; i++)
- {
- if ((M4OSA_Int64) apContext->buffer[i].nbAccessed + apContext->buffer[i].timeAccessed*2 == bufStat[0]) /* hybrid */
- {
- selected = i;
- goto end_selection;
- }
- }
-
-end_selection:
- if (apContext->buffer[selected].filepos > apContext->fileSize )
- {
- /* in case it selects a modified buffer outside real file size,
- in that case, flush all buffers before this one
- unless there will be a seek outside filesize*/
- M4OSA_FileCache_BuffersFlushUntil(apContext, selected);
- }
- else if ((apContext->buffer[selected].state & M4OSA_kModified) == M4OSA_kModified )
- {
- /* in case it selects a modified buffer inside filesize, simply flush it*/
- err = M4OSA_FileCache_BufferFlush(apContext, selected);
- if (M4NO_ERROR!= err)
- {
- return M4OSA_CACHEBUFFER_NONE;
- }
- }
- M4OSA_TRACE3_1("---------- BufferSelect returns i = %d", selected);
- return selected;
-}
-
-
-/**************************************************************/
-M4OSA_Int8 M4OSA_FileCache_BufferSelectForRead(M4OSA_FileCache_Context* apContext)
-/**************************************************************/
-{
- M4OSA_Int8 i,j, selected;
- M4OSA_FilePosition min_amount,max_amount;
- M4OSA_Int8 min_i,max_count;
- M4OSA_ERR err;
-
- /* update nbFillSinceLastAcess field */
- for(i=0; i<M4OSA_CACHEBUFFER_NB; i++)
- {
- apContext->buffer[i].nbFillSinceLastAcess ++;
- }
-
- /**************************************************/
- /* Plan A/ if there is still a new buffer, use it */
-
- for(i=0; i<M4OSA_CACHEBUFFER_NB; i++)
- {
- if(apContext->buffer[i].state == M4OSA_kInitialized)
- {
- selected = i;
- goto end_selection;
- }
- }
-
- max_count = M4OSA_CACHEBUFFER_NB;
- max_amount = MAX_FILLS_SINCE_LAST_ACCESS;
-
- /* Plan B : Scan for dead buffer */
- for(i=0; i<M4OSA_CACHEBUFFER_NB; i++)
- {
- if(apContext->buffer[i].nbFillSinceLastAcess >= (M4OSA_UInt32) max_amount)
- {
- max_amount = apContext->buffer[i].nbFillSinceLastAcess;
- max_count = i;
- }
- }
- if(max_count<M4OSA_CACHEBUFFER_NB)
- {
- M4OSA_TRACE3_2("DEAD BUFFER: %d, %d",max_count,apContext->buffer[max_count].nbFillSinceLastAcess);
- selected = max_count;
- goto end_selection;
- }
-
- min_i = 0;
- min_amount = M4OSA_CACHEBUFFER_NB;
-
- /* Select the buffer which is the most "empty" */
- for(i=0; i<M4OSA_CACHEBUFFER_NB; i++)
- {
- j = i % M4OSA_CACHEBUFFER_NB;
-
- if(apContext->buffer[j].remain < min_amount)
- {
- min_amount = apContext->buffer[j].remain;
- min_i = j;
- }
- }
- selected = min_i;
-
-end_selection:
- if (apContext->buffer[selected].filepos > apContext->fileSize )
- {
- /* in case it selects a modified buffer outside real file size,
- in that case, flush all buffers before this one
- unless there will be a seek outside filesize*/
- M4OSA_FileCache_BuffersFlushUntil(apContext, selected);
- }
- else if ((apContext->buffer[selected].state & M4OSA_kModified) == M4OSA_kModified )
- {
- /* in case it selects a modified buffer inside filesize, simply flush it*/
- err = M4OSA_FileCache_BufferFlush(apContext, selected);
- if (M4NO_ERROR!= err)
- {
- return M4OSA_CACHEBUFFER_NONE;
- }
- }
-
- return selected;
-}
-
-
-/**************************************************************/
-M4OSA_ERR M4OSA_FileCache_CalculateSize(M4OSA_FileCache_Context* apContext)
-/**************************************************************/
-{
- M4OSA_ERR err = M4NO_ERROR;
- M4OSA_Int32 ret_val;
- M4OSA_UInt16 errReturned;
-
- /* go to the end of file*/
- ret_val = apContext->FS->pFctPtr_Seek(apContext->aFileDesc, 0,
- M4OSA_kFileSeekEnd,
- &errReturned);
-
- if (ret_val != 0)
- {
- apContext->readFilePos = M4OSA_EOF;
- err = M4OSA_ERR_CREATE(M4_ERR, M4OSA_FILE_READER, errReturned);
- M4OSA_TRACE2_1("M4OSA_FileCache_CalculateSize ERR = 0x%x", err);
- }
- else
- {
- /* Retrieve size of the file */
- apContext->fileSize = apContext->FS->pFctPtr_Tell(apContext->aFileDesc,
- &errReturned);
- apContext->readFilePos = apContext->fileSize;
- }
-
- return err;
-}
-
-/* _____________________________________________________________ */
-/*| | */
-/*| OSAL filesystem functions dependent on Platform FileSystem | */
-/*|_____________________________________________________________| */
-
-/**
- ************************************************************************
- * @brief Opens a file
- * @note
- * @param pFileDescriptor : IN url of the file
- * FileModeAccess : IN access mode for opening the file
- * errno_ffs : OUT internal error returned by the filesystem
- * @return pC : internal context
- ************************************************************************
-*/
-M4OSA_Void* M4OSA_FileSystem_FFS_Open_cache( M4OSA_Void* pFileDescriptor,
- M4OSA_UInt32 FileModeAccess,
- M4OSA_UInt16* errno_ffs )
-{
-
- M4OSA_FileSystem_FFS_t_cache *pC = M4OSA_NULL;
- FILE* fp;
-
- M4OSA_Char mode[4] = "";
- M4OSA_Char* pReadString = (M4OSA_Char*)"r";
- M4OSA_Char* pWriteString = (M4OSA_Char*)"w";
- M4OSA_Char* pAppendString = (M4OSA_Char*)"a";
- M4OSA_Char* pBinaryString = (M4OSA_Char*)"b";
- M4OSA_Char* pPlusString = (M4OSA_Char*)"+";
-
- fp = M4OSA_NULL;
- *errno_ffs = 0;
-
- M4OSA_TRACE3_0("M4OSA_FileSystem_FFS_Open_cache : Open **** \n");
-
- /************************/
- /* Verify access mode */
- /************************/
-
- /*
- All possible file accesses:
-
- r : Read only, file must exist
-
- w : Write only. If the file exists, it is overwritten. If it does not exist, it is created.
-
- a : write at end of file (append). If the file exists, it is extended. If the file does not exist, it is created.
-
- r+ : update (i.e. read and write). The file must exist. It is not possible to do a read after a write (or a write after a read)
- unless we reposition the file pointer.
-
- w+ : creation, to update. If the file exists, it is overwritten. If the files does not exist, it is created.
- a+ : extension and update. If the file does not exist, it is created. If the file exists, the file pointer is put at end of file.
-
- All possible cases for fileModeAccess parameter:
-
- Write(2) w
- WriteRead(3) r+ // r+b Used by MM
- WriteReadCreate(11) w+ // w+b Used by MM
- WriteReadAppend(7) a+
- WriteCreate(10) w
- WriteAppend(12) a
- Read r // rb Used by MM
- Error
- */
-
-
- if ((FileModeAccess & M4OSA_kFileWrite) && (FileModeAccess & M4OSA_kFileRead) && (FileModeAccess & M4OSA_kFileCreate)) /* Used by MM */
- {
- /** "w+" */
- M4OSA_chrNCat(mode, pWriteString, 1);
- M4OSA_chrNCat(mode, pPlusString, 1);
- }
- else if ((FileModeAccess & M4OSA_kFileWrite) && (FileModeAccess & M4OSA_kFileRead) && (FileModeAccess & M4OSA_kFileAppend))
- {
- /** "a+" */
- M4OSA_chrNCat(mode, pAppendString, 1);
- M4OSA_chrNCat(mode, pPlusString, 1);
- }
- else if ((FileModeAccess & M4OSA_kFileWrite) && (FileModeAccess & M4OSA_kFileRead)) /* Used by MM */
- {
- /** "r+" */
- M4OSA_chrNCat(mode, pReadString, 1);
- M4OSA_chrNCat(mode, pPlusString, 1);
- }
- else if ((FileModeAccess & M4OSA_kFileWrite) && (FileModeAccess & M4OSA_kFileCreate))
- {
- /** "w" */
- M4OSA_chrNCat(mode, pWriteString, 1);
- }
- else if ((FileModeAccess & M4OSA_kFileWrite) && (FileModeAccess & M4OSA_kFileAppend))
- {
- /** "a" */
- M4OSA_chrNCat(mode, pAppendString, 1);
- }
- else if (FileModeAccess & M4OSA_kFileRead)
- {
- /** "r" */
- M4OSA_chrNCat(mode, pReadString, 1);
- }
- else if (FileModeAccess & M4OSA_kFileWrite)
- {
- /** "w" */
- M4OSA_chrNCat(mode, pWriteString, 1);
- }
- else
- {
- M4OSA_TRACE1_1("M4OSA_FileSystem_FFS_Open_cache : invalid FileModeAccess = %x", FileModeAccess);
- *errno_ffs = (M4OSA_UInt16)M4ERR_FILE_BAD_MODE_ACCESS;
- }
-
- /* add the b */
- M4OSA_chrNCat(mode, pBinaryString, 1);
-
- fp = fopen((const char *) pFileDescriptor, (const char *)mode); /* Open in rb or in r+b*/
- if( fp != NULL )
- {
- pC = (M4OSA_FileSystem_FFS_t_cache *) M4OSA_32bitAlignedMalloc(sizeof * pC, M4OSA_FILE_READER, (M4OSA_Char*)"M4OSA_FileSystem_FFS_Open_cache");
-
- if (pC == M4OSA_NULL) return M4OSA_NULL; /*error occured => return NULL pointer*/
-
- pC->FileDesc = fp;
- }
- else
- {
- switch(errno)
- {
- case ENOENT:
- M4OSA_DEBUG(M4ERR_FILE_NOT_FOUND, "M4OSA_fileReadOpen: No such file or directory");
- *errno_ffs=(M4OSA_UInt16)M4ERR_FILE_NOT_FOUND;
- break;
-
- case EACCES:
- M4OSA_DEBUG(M4ERR_FILE_LOCKED, "M4OSA_fileReadOpen: Permission denied");
- *errno_ffs=(M4OSA_UInt16)M4ERR_FILE_LOCKED;
- break;
-
- case EINVAL:
- M4OSA_DEBUG(M4ERR_FILE_BAD_MODE_ACCESS, "M4OSA_fileReadOpen: Invalid Argument");
- *errno_ffs=(M4OSA_UInt16)M4ERR_FILE_BAD_MODE_ACCESS;
- break;
-
- case EMFILE:
- case ENOSPC:
- case ENOMEM:
- M4OSA_DEBUG(M4ERR_ALLOC, "M4OSA_fileReadOpen: Too many open files");
- *errno_ffs=(M4OSA_UInt16)M4ERR_ALLOC;
- break;
-
- default:
- M4OSA_DEBUG(M4ERR_NOT_IMPLEMENTED, "M4OSA_fileReadOpen");
- *errno_ffs=(M4OSA_UInt16)M4ERR_NOT_IMPLEMENTED;
-
- } /* end switch */
- } /* end else */
-
- return (M4OSA_Void*)pC;
-}
-
-/**
- ************************************************************************
- * @brief Reads data from file
- * @note
- * @param pContext : IN internal context
- * data : IN buffer for reading data
- * size : IN amount of bytes to read
- * errno_ffs : OUT internal error returned by the filesystem
- * @return ret : effective amount of bytes read / -1 if an error occurs
- ************************************************************************
-*/
-M4OSA_FilePosition M4OSA_FileSystem_FFS_Read_cache( M4OSA_Void* pContext,
- M4OSA_UInt8* data,
- M4OSA_FilePosition size,
- M4OSA_UInt16* errno_ffs )
-{
- M4OSA_FileSystem_FFS_t_cache *pC = (M4OSA_FileSystem_FFS_t_cache *)pContext;
- M4OSA_Int32 res;
-
- M4OSA_TRACE2_1("M4OSA_FileSystem_FFS_Read size = %ld", size);
-
- res = -1;
-
- res = fread(data,sizeof(M4OSA_Char), size, pC->FileDesc);
- if( -1 < res )
- {
- *errno_ffs = M4NO_ERROR;
- }
- else
- {
- *errno_ffs = errno;
- }
-
- return (M4OSA_FilePosition)res;
-}
-
-
-
-/**
- ************************************************************************
- * @brief Writes data to file
- * @note
- * @param pContext : IN internal context
- * data : IN buffer with data to write
- * size : IN amount of bytes to read
- * errno_ffs : OUT internal error returned by the filesystem
- * @return ret : effective amount of bytes read / an error code if an error occurs
- ************************************************************************
-*/
-M4OSA_FilePosition M4OSA_FileSystem_FFS_Write_cache( M4OSA_Void* pContext,
- M4OSA_UInt8* data,
- M4OSA_FilePosition size,
- M4OSA_UInt16* errno_ffs )
-{
- M4OSA_FileSystem_FFS_t_cache *pC = (M4OSA_FileSystem_FFS_t_cache *)pContext;
- M4OSA_Int32 res;
-
- M4OSA_TRACE2_1("M4OSA_FileSystem_FFS_Write size = %ld", size);
-
- res = 0;
-
- res = fwrite(data,sizeof(M4OSA_Char), size, pC->FileDesc);
- if( -1 < res )
- {
- *errno_ffs = M4NO_ERROR;
- }
- else
- {
- *errno_ffs = errno;
- M4OSA_TRACE1_1("M4OSA_FileSystem_FFS_Write error", *errno_ffs);
- }
-
- fflush(pC->FileDesc);
-
- return (M4OSA_FilePosition)res;
-}
-
-/**
- ************************************************************************
- * @brief Seeks at given position in a file
- * @note
- * @param pContext : IN internal context
- * pos : IN amount of bytes for the move
- * mode : IN kind of seek to perform
- * errno_ffs : OUT internal error returned by the filesystem
- * @return ret : 0 on success / any other value if an error occurs
- ************************************************************************
-*/
-M4OSA_Int32 M4OSA_FileSystem_FFS_Seek_cache( M4OSA_Void* pContext,
- M4OSA_FilePosition pos,
- M4OSA_FileSeekAccessMode mode,
- M4OSA_UInt16* errno_ffs )
-{
- M4OSA_FileSystem_FFS_t_cache *pC = (M4OSA_FileSystem_FFS_t_cache *)pContext;
-
- M4OSA_TRACE2_2("M4OSA_FileSystem_FFS_Seek pos = %ld mode = %d", pos, mode);
-
- switch(mode)
- {
- case M4OSA_kFileSeekBeginning :
- *errno_ffs = fseek(pC->FileDesc, pos, SEEK_SET);
- break;
-
- case M4OSA_kFileSeekCurrent :
- *errno_ffs= fseek(pC->FileDesc, pos, SEEK_CUR);
- break;
-
- case M4OSA_kFileSeekEnd :
- *errno_ffs = fseek(pC->FileDesc, pos, SEEK_END);
- break;
- }
-
- return *errno_ffs;
-
-}
-
-/**
- ************************************************************************
- * @brief Tells the position of the file pointer
- * @note
- * @param pContext : IN internal context
- * errno_ffs : OUT internal error returned by the filesystem
- * @return ret : position of the file pointer/ -1 if an error occurs
- ************************************************************************
-*/
-M4OSA_FilePosition M4OSA_FileSystem_FFS_Tell_cache( M4OSA_Void* pContext,
- M4OSA_UInt16* errno_ffs )
-{
- M4OSA_FileSystem_FFS_t_cache *pC = (M4OSA_FileSystem_FFS_t_cache *)pContext;
- M4OSA_FilePosition pos;
-
- pos = ftell(pC->FileDesc);
-
- *errno_ffs = 0;
-
- return pos;
-}
-
-/**
- ************************************************************************
- * @brief Closes the file
- * @note
- * @param pContext : IN internal context
- * errno_ffs : OUT internal error returned by the filesystem
- * @return ret : 0 on success / any other value if an error occurs
- ************************************************************************
-*/
-M4OSA_Int32 M4OSA_FileSystem_FFS_Close_cache( M4OSA_Void* pContext,
- M4OSA_UInt16* errno_ffs )
-{
- M4OSA_FileSystem_FFS_t_cache *pC = (M4OSA_FileSystem_FFS_t_cache *)pContext;
-
- *errno_ffs = fclose(pC->FileDesc);
-
- return *errno_ffs;
-}
-
-/* __________________________________________________________ */
-/*| |*/
-/*| OSAL fileCache |*/
-/*|__________________________________________________________|*/
-
-/**************************************************************/
-M4OSA_ERR M4OSA_fileOpen_cache(M4OSA_Context* pContext,
- M4OSA_Void* pFileDescriptor,
- M4OSA_UInt32 FileModeAccess)
-/**************************************************************/
-{
- M4OSA_FileSystem_FctPtr_cache *FS;
-
- /* Allocate memory for the File System interface */
- FS = (M4OSA_FileSystem_FctPtr_cache *)M4OSA_32bitAlignedMalloc(sizeof * FS,
- M4OSA_FILE_READER,(M4OSA_Char*)"M4OSA_FileSystem_FctPtr_cache");
-
- if(M4OSA_NULL == FS)
- return M4ERR_ALLOC;
-
- FS->pFctPtr_Open = M4OSA_FileSystem_FFS_Open_cache;
- FS->pFctPtr_Read = M4OSA_FileSystem_FFS_Read_cache;
- FS->pFctPtr_Write = M4OSA_FileSystem_FFS_Write_cache;
- FS->pFctPtr_Seek = M4OSA_FileSystem_FFS_Seek_cache;
- FS->pFctPtr_Tell = M4OSA_FileSystem_FFS_Tell_cache;
- FS->pFctPtr_Close = M4OSA_FileSystem_FFS_Close_cache;
-
- return M4OSA_fileOpen_cache_internal(pContext, pFileDescriptor,
- FileModeAccess, FS);
-}
-
-/**
-******************************************************************************
-* @brief This method opens the provided fileDescriptor and returns its context.
-* @param pContext: (OUT) File Cache context.
-* @param pFileDescriptor : (IN) File Descriptor of the input file.
-* @param FileModeAccess : (IN) File mode access.
-* @return M4NO_ERROR: there is no error
-* @return M4ERR_PARAMETER pContext or fileDescriptor is NULL
-* @return M4ERR_ALLOC there is no more memory available
-* @return M4ERR_FILE_BAD_MODE_ACCESS the file mode access is not correct
-* @return M4ERR_FILE_NOT_FOUND The file can not be opened.
-******************************************************************************
-*/
-M4OSA_ERR M4OSA_fileOpen_cache_internal(M4OSA_Context* pContext,
- M4OSA_Void* pFileDescriptor,
- M4OSA_UInt32 FileModeAccess,
- M4OSA_FileSystem_FctPtr_cache *FS)
-{
- M4OSA_FileCache_Context* apContext = M4OSA_NULL;
-
- M4OSA_ERR err = M4NO_ERROR;
- M4OSA_Void* aFileDesc = M4OSA_NULL;
- M4OSA_Bool buffers_allocated = M4OSA_FALSE;
- M4OSA_UInt16 errReturned = 0;
- M4OSA_Int32 len,name_len;
- M4OSA_Char* pCharFileDesc = (M4OSA_Char*)pFileDescriptor;
-
-#ifdef M4OSA_FILE_CACHE_TIME_MEAS
- M4OSA_Time time1 = 0;
- M4OSA_Time time2 = 0;
-#endif /* M4OSA_FILE_CACHE_TIME_MEAS */
-
- M4OSA_TRACE2_2("M4OSA_fileOpen_cache fd = %s mode = %d", pFileDescriptor,
- FileModeAccess);
-
- /* Check input parameters */
- M4ERR_CHECK_NULL_RETURN_VALUE(M4ERR_PARAMETER, pContext);
- M4ERR_CHECK_NULL_RETURN_VALUE(M4ERR_PARAMETER, pFileDescriptor);
- M4ERR_CHECK_NULL_RETURN_VALUE(M4ERR_PARAMETER, FS);
-
- *pContext = M4OSA_NULL;
-
- /* Allocate memory for the File reader context. */
- apContext = (M4OSA_FileCache_Context *)M4OSA_32bitAlignedMalloc(sizeof(M4OSA_FileCache_Context),
- M4OSA_FILE_READER, (M4OSA_Char*)"M4OSA_FileCache_Context");
-
- M4ERR_CHECK_NULL_RETURN_VALUE(M4ERR_ALLOC, apContext);
-
-
-#ifdef M4OSA_FILE_CACHE_TIME_MEAS
- M4OSA_FileCache_initTimeMeas(apContext);
- M4OSA_clockGetTime(&time1,1000);
-#endif /* M4OSA_FILE_CACHE_TIME_MEAS */
-
- /* Set filesystem interface */
- apContext->FS = FS;
-
- if (M4OSA_kFileWrite == FileModeAccess)
- {
- FileModeAccess |= M4OSA_kFileWrite | M4OSA_kFileCreate; /* for VA in case of open with only Write flag, we add the Create */
- }
-
- /* For VA and VES, we need to add access in read, to write the moov for example */
- /* Add the flag Read in all cases, because Osal File Cache uses read at the same time */
- FileModeAccess |= M4OSA_kFileRead;
-
- aFileDesc = apContext->FS->pFctPtr_Open(pFileDescriptor, FileModeAccess,
- &errReturned);
-
- if (aFileDesc != M4OSA_NULL)
- {
- apContext->IsOpened = M4OSA_TRUE;
- }
- else
- {
- /* converts the error to PSW format*/
- err = M4OSA_ERR_CREATE(M4_ERR, M4OSA_FILE_READER, errReturned);
- M4OSA_TRACE1_2("M4OSA_fileOpen_cache error 0x%x for fd = %s", err,
- pFileDescriptor);
- apContext->IsOpened = M4OSA_FALSE;
-
- /*free the context and associated FS pointers*/
- if (M4OSA_NULL != apContext) /*should never be null*/
- {
- if (M4OSA_NULL != apContext->FS) /*should never be null*/
- {
- free(apContext->FS);
- }
-
- free(apContext);
- apContext = M4OSA_NULL;
- }
-
- if (M4NO_ERROR != err) goto cleanup;
- }
-
- /* Allocate buffers */
- err = M4OSA_FileCache_BuffersInit(apContext);
- buffers_allocated = M4OSA_TRUE;
-
- if (M4NO_ERROR != err) goto cleanup;
-
- /* Initialize parameters */
- apContext->fileSize = 0;
- apContext->virtualFileSize = 0;
- apContext->absolutePos = 0;
- apContext->absoluteWritePos = 0;
-
-
- apContext->readFilePos = 0;
-
- /* Retrieve the File Descriptor*/
- apContext->aFileDesc = aFileDesc;
-
- /* Retrieve the File mode Access */
- apContext->FileAttribute.modeAccess = (M4OSA_FileModeAccess)FileModeAccess;
-
- apContext->chrono = 0;
-
-#ifdef FILECACHE_STATS
- apContext->nbReadCache = 0;
- apContext->nbWriteCache = 0;
-
- apContext->nbReadFFS = 0;
- apContext->nbWriteFFS = 0;
-#endif
-
- /*Retrieve the File reader context */
- *pContext= (M4OSA_Context)apContext;
-
- /* Compute file size */
- err = M4OSA_FileCache_CalculateSize(apContext);
-
- if (M4NO_ERROR != err) goto cleanup;
-
- apContext->virtualFileSize = apContext->fileSize;
-
-#ifdef M4OSA_FILE_CACHE_TIME_MEAS
- M4OSA_clockGetTime(&time2,1000);
- if (time2>time1)
- apContext->gMyPerfFileTab[fileOpentime] += time2-time1;
-#endif /* M4OSA_FILE_CACHE_TIME_MEAS */
-
- M4OSA_mutexOpen(&(apContext->m_mutex));
-
- /* filename extraction, just for traces */
- M4OSA_memset(apContext->m_filename, 256, 0);
- len=( M4OSA_chrLength(pCharFileDesc) )+1;
- for( --len ; (len >= 0 && pCharFileDesc[len] != '\\' && pCharFileDesc[len] != '/') ; len-- );
- name_len=M4OSA_chrLength( &pCharFileDesc[len+1] );
- err=M4OSA_chrNCopy(apContext->m_filename, &pCharFileDesc[len+1], name_len);
-
- M4OSA_TRACE2_2("M4OSA_fileOpen_cache of %s has pC = 0x%x", apContext->m_filename, apContext);
-
- return M4NO_ERROR;
-
-cleanup:
-
- /* free context */
- if (M4OSA_NULL != apContext)
- {
- if(buffers_allocated == M4OSA_TRUE)
- {
- M4OSA_FileCache_BuffersFree(apContext);
- }
-
- if (M4OSA_NULL != apContext)
- {
- free(apContext);
- apContext = M4OSA_NULL;
- }
- *pContext = M4OSA_NULL;
- }
-
- return err;
-}
-
-/**
-******************************************************************************
-* @brief This method reads the 'size' bytes in the core file reader (selected by its 'context')
-* and writes the data to the 'data' pointer. If 'size' byte can not be read in the core file reader,
-* 'size' parameter is updated to match the correct number of read bytes.
-* @param pContext: (IN) File reader context.
-* @param pData : (OUT) Data pointer of the read data.
-* @param pSize : (INOUT) Size of the data to read (in byte).
-* @return M4NO_ERROR: there is no error
-* @return M4ERR_PARAMETER pSize, fileDescriptor or pData is NULL
-* @return M4ERR_ALLOC there is no more memory available
-* @return M4ERR_BAD_CONTEXT provided context is not a valid one.
-******************************************************************************
-*/
-M4OSA_ERR M4OSA_fileReadData_cache(M4OSA_Context pContext,M4OSA_MemAddr8 pData,
- M4OSA_UInt32* pSize)
-{
- M4OSA_FileCache_Context* apContext = (M4OSA_FileCache_Context*) pContext;
-
- M4OSA_ERR err;
- M4OSA_FilePosition aSize;
- M4OSA_FilePosition copiedSize;
- M4OSA_Int8 selected_buffer, current_buffer;
- M4OSA_Int32 castedSize;
-
-#ifdef M4OSA_FILE_CACHE_TIME_MEAS
- M4OSA_Time time1 = 0;
- M4OSA_Time time2 = 0;
-
- M4OSA_clockGetTime(&time1,1000);
-#endif /* M4OSA_FILE_CACHE_TIME_MEAS */
-
- M4OSA_TRACE2_3("M4OSA_fileReadData_cache of %s size=%d at pos=%d ",
- apContext->m_filename, *pSize, apContext->absolutePos);
-
- /* Check input parameters */
- M4ERR_CHECK_NULL_RETURN_VALUE(M4ERR_BAD_CONTEXT, apContext);
- M4ERR_CHECK_NULL_RETURN_VALUE(M4ERR_PARAMETER, pData);
- M4ERR_CHECK_NULL_RETURN_VALUE(M4ERR_PARAMETER, pSize);
-
- if (apContext->IsOpened != M4OSA_TRUE)
- {
- return M4ERR_BAD_CONTEXT;
- }
-
-LOCK
-
-/* 20080125 Start : if *pSize is too high, adjust it to the size left in the file. MI-958*/
- castedSize = * pSize;
- if (castedSize < 0)
- {
- copiedSize = 0;
- err = M4WAR_NO_MORE_AU;
-#ifdef M4OSA_FILECACHE_MM
- err = M4WAR_NO_DATA_YET; /* no_data_yet for MM */
-#endif
- goto cleanup;
- }
-/* 20080125 End : if *pSize is too high, adjust it to the size left in the file. MI-958*/
-
- /* Prevent reading beyond EOF */
- if((*pSize > 0) && (apContext->absolutePos >= apContext->virtualFileSize)) /* virtual FSize*/
- {
- copiedSize = 0;
- err = M4WAR_NO_MORE_AU; /* for VA and VPS */
-#ifdef M4OSA_FILECACHE_MM
- err = M4WAR_NO_DATA_YET; /* no_data_yet for MM */
-#endif
- goto cleanup;
- }
-
-/* 20080125 Start : if *pSize is too high, adjust it to the size left in the file. MI-958*/
- if (*pSize > (M4OSA_UInt32)(apContext->virtualFileSize - apContext->absolutePos))
- {
- M4OSA_TRACE1_0("M4OSA_fileReadData_cache : Attempted to read beyond file size, adjusted size");
- *pSize = apContext->virtualFileSize - apContext->absolutePos;
- }
-/* 20080125 End : if *pSize is too high, adjust it to the size left in the file. MI-958*/
-
- /* Check if data can be read from a buffer */
- /* If not, fill one according to quantized positions */
- copiedSize = 0;
- err = M4NO_ERROR;
-
- selected_buffer = M4OSA_FileCache_BufferMatchToRead(apContext,
- apContext->absolutePos);
-
- if(selected_buffer == M4OSA_CACHEBUFFER_NONE)
- {
-
-#if defined(BUFFER_SELECT_INITIAL)
- selected_buffer = M4OSA_FileCache_BufferSelectForRead(apContext);
-#elif defined(BUFFER_SELECT_WITH_TIME)
- selected_buffer = M4OSA_FileCache_BufferSelectWithTime(apContext);
-#elif defined(BUFFER_SELECT_WITH_SPACE)
- selected_buffer = M4OSA_FileCache_BufferSelectWithSpace(apContext);
-#elif defined(BUFFER_SELECT_WITH_POS)
- selected_buffer = M4OSA_FileCache_BufferSelectWithPos(apContext);
-#endif
-
- if (M4OSA_CACHEBUFFER_NONE == selected_buffer)
- {
- err = M4ERR_BAD_CONTEXT; /* temporary error code */
- goto cleanup;
- }
-
- err = M4OSA_FileCache_BufferFill(apContext, selected_buffer,
- apContext->absolutePos);
- }
-#ifdef FILECACHE_STATS
- else
- {
- /* bufferMatch has success in read */
- apContext->nbReadCache++;
- }
-#endif /* FILECACHE_STATS */
-
- if(err != M4NO_ERROR)
- {
- if((err == M4WAR_NO_DATA_YET) && (*pSize <= (M4OSA_UInt32)apContext->buffer[selected_buffer].size))
- err = M4NO_ERROR;
- else goto cleanup;
- }
-
- M4OSA_TRACE3_3("readData size = %d buffer = %d pos = %d",
- *pSize, selected_buffer, apContext->absolutePos);
-
- /* Copy buffer into pData */
- while(((M4OSA_UInt32)copiedSize < *pSize) && (err == M4NO_ERROR))
- {
- aSize = M4OSA_FileCache_BufferCopy(apContext, selected_buffer,
- apContext->absolutePos+copiedSize,
- *pSize-copiedSize, pData+copiedSize);
- copiedSize += aSize;
-
- if(aSize == 0)
- {
- err = M4WAR_NO_DATA_YET;
- }
- else
- {
- if((M4OSA_UInt32)copiedSize < *pSize)
- {
- current_buffer = selected_buffer;
- selected_buffer = M4OSA_FileCache_BufferMatchToRead(apContext,
- apContext->absolutePos+copiedSize);
-
- if(selected_buffer == M4OSA_CACHEBUFFER_NONE)
- {
-#if defined(BUFFER_SELECT_INITIAL)
- selected_buffer = M4OSA_FileCache_BufferSelectForRead(apContext);
-#elif defined(BUFFER_SELECT_WITH_TIME)
- selected_buffer = M4OSA_FileCache_BufferSelectWithTime(apContext);
-#elif defined(BUFFER_SELECT_WITH_SPACE)
- selected_buffer = M4OSA_FileCache_BufferSelectWithSpace(apContext);
-#elif defined(BUFFER_SELECT_WITH_POS)
- selected_buffer = M4OSA_FileCache_BufferSelectWithPos(apContext);
-#endif
-
- if (M4OSA_CACHEBUFFER_NONE == selected_buffer)
- {
- err = M4ERR_BAD_CONTEXT; /* temporary error code */
- goto cleanup;
- }
-
- err = M4OSA_FileCache_BufferFill(apContext, selected_buffer,
- apContext->absolutePos+copiedSize);
-
- if(err != M4NO_ERROR)
- {
- if((err == M4WAR_NO_DATA_YET) && ((*pSize-copiedSize) <= (M4OSA_UInt32)apContext->buffer[selected_buffer].size))
- err = M4NO_ERROR;
- else goto cleanup;
- }
- }
-#ifdef FILECACHE_STATS
- else
- {
- /* bufferMatch has success in read */
- apContext->nbReadCache++;
- }
-#endif /* FILECACHE_STATS */
-
- }
- }
- }
-
-cleanup :
-
- /* Update the new position of the pointer */
- apContext->absolutePos = apContext->absolutePos + copiedSize;
-
-#ifdef M4OSA_FILECACHE_MM
- apContext->absoluteWritePos = apContext->absolutePos;
-#endif /* M4OSA_FILECACHE_MM */
-
- if(err != M4NO_ERROR)
- {
- M4OSA_TRACE1_3("M4OSA_fileReadData_cache size = %d copied = %d err = 0x%x",
- *pSize, copiedSize, err);
- }
-
- /* Effective copied size must be returned */
- *pSize = copiedSize;
-
-#ifdef M4OSA_FILE_CACHE_TIME_MEAS
- M4OSA_clockGetTime(&time2,1000);
- if (time2>time1)
- apContext->gMyPerfFileTab[fileReadDatatime] += time2-time1;
-#endif /* M4OSA_FILE_CACHE_TIME_MEAS */
-
-UNLOCK
-
- /* Read is done */
- return err;
-}
-
-
-/**
- ************************************************************************
- * @brief This function writes the 'size' bytes stored at 'data' memory
- * in the file selected by its context.
- * @note The caller is responsible for allocating/de-allocating the
- * memory for 'data' parameter.
- * @note Moreover the data pointer must be allocated to store at least
- * 'size' bytes.
- * @param pContext: (IN/OUT) Context of the core file reader
- * @param pData: (IN) Data pointer of the write data
- * @param size: (IN) Size of the data to write (in bytes)
- * @return M4NO_ERROR: there is no error
- * @return M4ERR_PARAMETER: at least one parameter is NULL
- * @return M4ERR_BAD_CONTEXT: provided context is not a valid one
- * @return M4ERR_ALLOC: there is no more memory available
- ************************************************************************/
-
-M4OSA_ERR M4OSA_fileWriteData_cache(M4OSA_Context pContext,M4OSA_MemAddr8 pData,
- M4OSA_UInt32 size)
-{
- M4OSA_FileCache_Context* apContext = (M4OSA_FileCache_Context*) pContext;
-
- M4OSA_ERR err;
- M4OSA_FilePosition aSize;
- M4OSA_FilePosition copiedSize;
- M4OSA_Int8 selected_buffer, current_buffer;
-
-#ifdef M4OSA_FILE_CACHE_TIME_MEAS
- M4OSA_Time time1 = 0;
- M4OSA_Time time2 = 0;
-
- M4OSA_clockGetTime(&time1,1000);
-#endif /* M4OSA_FILE_CACHE_TIME_MEAS */
-
- M4OSA_TRACE2_3("M4OSA_fileWriteData_cache of %s size=%d at pos=%d ",
- apContext->m_filename, size, apContext->absoluteWritePos);
-
- /* Check input parameters */
- M4ERR_CHECK_NULL_RETURN_VALUE(M4ERR_BAD_CONTEXT, apContext);
- M4ERR_CHECK_NULL_RETURN_VALUE(M4ERR_PARAMETER, pData);
-
-
- if (apContext->IsOpened != M4OSA_TRUE)
- {
- return M4ERR_BAD_CONTEXT;
- }
-
- /*protection*/
- if (apContext->absoluteWritePos > apContext->virtualFileSize)
- {
- M4OSA_TRACE1_0("M4OSA_fileWriteData_cache ERROR : attempting to write beyond EOF");
- return M4WAR_NO_DATA_YET;
- }
-
-LOCK
-
- /* Check if data has been read into a buffer */
- /* If not, we should read that buffer first and then fill it */
- copiedSize = 0;
- err = M4NO_ERROR;
-
- selected_buffer = M4OSA_FileCache_BufferMatchToWrite(apContext,
- apContext->absoluteWritePos);
-
- if(selected_buffer == M4OSA_CACHEBUFFER_NONE)
- {
-#if defined(BUFFER_SELECT_INITIAL)
- selected_buffer = M4OSA_FileCache_BufferSelectForWrite(apContext);
-#elif defined(BUFFER_SELECT_WITH_TIME)
- selected_buffer = M4OSA_FileCache_BufferSelectWithTime(apContext);
-#elif defined(BUFFER_SELECT_WITH_SPACE)
- selected_buffer = M4OSA_FileCache_BufferSelectWithSpace(apContext);
-#elif defined(BUFFER_SELECT_WITH_POS)
- selected_buffer = M4OSA_FileCache_BufferSelectWithPos(apContext);
-#endif
-
- if (M4OSA_CACHEBUFFER_NONE == selected_buffer)
- {
- M4OSA_TRACE1_1("M4OSA_fileWriteData_cache ERR1 err=0x%x", err);
- err = M4ERR_BAD_CONTEXT; /* temporary error code */
- goto cleanup;
- }
-
- if (apContext->absoluteWritePos - M4OSA_CACHEBUFFER_SIZE < apContext->fileSize) /* absolutePos not readfilepo strictly < */
- {
- err = M4OSA_FileCache_BufferFill(apContext, selected_buffer,
- apContext->absoluteWritePos);
- }
- else
- {
- err = M4OSA_FileCache_BufferReinitialize(apContext, selected_buffer,
- apContext->absoluteWritePos);
- }
-
- }
-#ifdef FILECACHE_STATS
- else
- {
- /* bufferMatch has success in write */
- apContext->nbWriteCache++;
- }
-#endif /* FILECACHE_STATS */
-
- if(err != M4NO_ERROR)
- {
- if(err == M4WAR_NO_DATA_YET) /* means the buffer is small, it is at EOF, bufferFill didn't fully fill it*/
- err = M4NO_ERROR;
- else goto cleanup;
- }
-
- M4OSA_TRACE3_3("writeData size = %d buffer = %d pos = %d", size,
- selected_buffer, apContext->absoluteWritePos);
-
- /* Copy buffer into pData */
- while(((M4OSA_UInt32)copiedSize < size) && (err == M4NO_ERROR))
- {
- aSize = M4OSA_FileCache_BufferModifyContent(apContext, selected_buffer,
- apContext->absoluteWritePos+copiedSize,
- size-copiedSize, pData+copiedSize);
- copiedSize += aSize;
-
- /* update virtualFileSize in case we write at the end */
- if (apContext->absoluteWritePos+copiedSize>apContext->virtualFileSize)
- {
- apContext->virtualFileSize = apContext->absoluteWritePos+copiedSize;
- M4OSA_TRACE3_1("virtualFileSize incremented to %d", apContext->virtualFileSize);
- }
-
- if((M4OSA_UInt32)copiedSize < size)
- {
- current_buffer = selected_buffer;
- selected_buffer = M4OSA_FileCache_BufferMatchToWrite(apContext,
- apContext->absoluteWritePos+copiedSize);
-
- if(selected_buffer == M4OSA_CACHEBUFFER_NONE)
- {
-#if defined(BUFFER_SELECT_INITIAL)
- selected_buffer = M4OSA_FileCache_BufferSelectForWrite(apContext);
-#elif defined(BUFFER_SELECT_WITH_TIME)
- selected_buffer = M4OSA_FileCache_BufferSelectWithTime(apContext);
-#elif defined(BUFFER_SELECT_WITH_SPACE)
- selected_buffer = M4OSA_FileCache_BufferSelectWithSpace(apContext);
-#elif defined(BUFFER_SELECT_WITH_POS)
- selected_buffer = M4OSA_FileCache_BufferSelectWithPos(apContext);
-#endif
-
- if (M4OSA_CACHEBUFFER_NONE == selected_buffer)
- {
- M4OSA_TRACE1_1("M4OSA_fileWriteData_cache ERR2 err=0x%x", err);
- err = M4ERR_BAD_CONTEXT; /* temporary error code */
- goto cleanup;
- }
-
- if (apContext->absoluteWritePos+copiedSize < apContext->fileSize) /* absolutePos not readfilepo strictly < */
- {
- err = M4OSA_FileCache_BufferFill(apContext, selected_buffer,
- apContext->absoluteWritePos+copiedSize);
- }
- else
- {
- err = M4OSA_FileCache_BufferReinitialize(apContext,
- selected_buffer,
- apContext->absoluteWritePos+copiedSize);
- }
-
-
- if(err != M4NO_ERROR)
- {
- if((err == M4WAR_NO_DATA_YET))
- err = M4NO_ERROR;
- else goto cleanup;
- }
- }
-#ifdef FILECACHE_STATS
- else /* (selected_buffer == M4OSA_CACHEBUFFER_NONE) */
- {
- /* bufferMatch has success in write */
- apContext->nbWriteCache++;
- }
-#endif /* FILECACHE_STATS */
-
- }
-
- }
-
-cleanup :
-
- /* Update the new position of the pointer */
- apContext->absoluteWritePos = apContext->absoluteWritePos + copiedSize;
-#ifdef M4OSA_FILECACHE_MM
- apContext->absolutePos = apContext->absoluteWritePos;
-#endif /* M4OSA_FILECACHE_MM */
-
- if(err != M4NO_ERROR)
- {
- M4OSA_TRACE3_3("M4OSA_fileWriteData_cache size = %d copied = %d err = 0x%x",
- size, copiedSize, err);
- }
-
- /* Effective copied size must be returned */
- size = copiedSize;
-
-#ifdef M4OSA_FILE_CACHE_TIME_MEAS
- M4OSA_clockGetTime(&time2,1000);
- if (time2>time1)
- apContext->gMyPerfFileTab[fileWriteDatatime] += time2-time1;
-#endif /* M4OSA_FILE_CACHE_TIME_MEAS */
-
-UNLOCK
-
- /* Read is done */
- return err;
-}
-
-
-/**
-******************************************************************************
-* @brief This method seeks at the provided position in the core file reader (selected by its 'context').
-* The position is related to the seekMode parameter it can be either :
-* From the beginning (position MUST be positive) : end position = position
-* From the end (position MUST be negative) : end position = file size + position
-* From the current position (signed offset) : end position = current position + position.
-* @param pContext: (IN) File reader context.
-* @param SeekMode : (IN) Seek access mode.
-* @param pPosition : (IN) Position in the file.
-* @return M4NO_ERROR: there is no error
-* @return M4ERR_PARAMETER Seekmode or fileDescriptor is NULL
-* @return M4ERR_ALLOC there is no more memory available
-* @return M4ERR_BAD_CONTEXT provided context is not a valid one.
-* @return M4ERR_FILE_INVALID_POSITION the position cannot be reached.
-******************************************************************************
-*/
-M4OSA_ERR M4OSA_fileReadSeek_cache( M4OSA_Context pContext,
- M4OSA_FileSeekAccessMode SeekMode,
- M4OSA_FilePosition* pPosition)
-{
- M4OSA_FileCache_Context* apContext = (M4OSA_FileCache_Context*) pContext;
- M4OSA_ERR err = M4NO_ERROR;
- M4OSA_FilePosition finalPos;
-
-#ifdef M4OSA_FILE_CACHE_TIME_MEAS
- M4OSA_Time time1 = 0;
- M4OSA_Time time2 = 0;
-
- M4OSA_clockGetTime(&time1,1000);
-#endif /* M4OSA_FILE_CACHE_TIME_MEAS */
-
- M4OSA_TRACE3_2("M4OSA_fileReadSeek_cache mode = %d pos = %d", SeekMode, *pPosition);
-
- /* Check input parameters */
- M4ERR_CHECK_NULL_RETURN_VALUE(M4ERR_BAD_CONTEXT, apContext);
- M4ERR_CHECK_NULL_RETURN_VALUE(M4ERR_PARAMETER, pPosition);
- M4ERR_CHECK_NULL_RETURN_VALUE(M4ERR_PARAMETER, SeekMode);
-
- if (apContext->IsOpened != M4OSA_TRUE)
- {
- return M4ERR_BAD_CONTEXT; /*< The context can not be correct */
- }
-
-LOCK
-
- /* Go to the desired position */
- switch(SeekMode)
- {
- case M4OSA_kFileSeekBeginning :
- finalPos = *pPosition;
- break;
-
- case M4OSA_kFileSeekEnd :
- finalPos = apContext->virtualFileSize + *pPosition;
- break;
-
- case M4OSA_kFileSeekCurrent :
- finalPos = apContext->absolutePos + *pPosition;
- break;
-
- default :
- UNLOCK
- return M4ERR_PARAMETER; /**< Bad SeekAcess mode */
- break;
- }
-
- M4OSA_TRACE2_1("M4OSA_fileReadSeek_cache to absolutePos = %d ", finalPos);
-
-/* 20080125 Start : Protect against seek outside file. MI-958*/
- if (finalPos <= apContext->virtualFileSize && finalPos>=0)
- {
- apContext->absolutePos = finalPos;
- *pPosition = finalPos;
- }
- else
- {
- M4OSA_TRACE1_2("M4OSA_fileReadSeek_cache: attempted to seek at %d whilst filesize=%d",
- finalPos, apContext->virtualFileSize);
- *pPosition = apContext->absolutePos; /* keep the previous position */
- //err = M4ERR_FILE_INVALID_POSITION;
- err = M4NO_ERROR; /* for VA */
- }
-/* 20080125 End : Protect against seek outside file. MI-958*/
-
-#ifdef M4OSA_FILECACHE_MM
- apContext->absoluteWritePos = apContext->absolutePos;
-#endif /* M4OSA_FILECACHE_MM */
-
-#ifdef M4OSA_FILE_CACHE_TIME_MEAS
- M4OSA_clockGetTime(&time2,1000);
- if (time2>time1)
- apContext->gMyPerfFileTab[fileSeektime] += time2-time1;
-#endif /* M4OSA_FILE_CACHE_TIME_MEAS */
-
-UNLOCK
-
- /* Return without error */
- return err;
-}
-
-
-/**
-******************************************************************************
-* @brief This method seeks at the provided position in the core file reader (selected by its 'context').
-* The position is related to the seekMode parameter it can be either :
-* From the beginning (position MUST be positive) : end position = position
-* From the end (position MUST be negative) : end position = file size + position
-* From the current position (signed offset) : end position = current position + position.
-* @param pContext: (IN) File reader context.
-* @param SeekMode : (IN) Seek access mode.
-* @param pPosition : (IN) Position in the file.
-* @return M4NO_ERROR: there is no error
-* @return M4ERR_PARAMETER Seekmode or fileDescriptor is NULL
-* @return M4ERR_ALLOC there is no more memory available
-* @return M4ERR_BAD_CONTEXT provided context is not a valid one.
-* @return M4ERR_FILE_INVALID_POSITION the position cannot be reached.
-******************************************************************************
-*/
-M4OSA_ERR M4OSA_fileWriteSeek_cache( M4OSA_Context pContext,
- M4OSA_FileSeekAccessMode SeekMode,
- M4OSA_FilePosition* pPosition)
-{
- M4OSA_FileCache_Context* apContext = (M4OSA_FileCache_Context*) pContext;
- M4OSA_ERR err = M4NO_ERROR;
- M4OSA_FilePosition finalPos;
-
-#ifdef M4OSA_FILE_CACHE_TIME_MEAS
- M4OSA_Time time1 = 0;
- M4OSA_Time time2 = 0;
-
- M4OSA_clockGetTime(&time1,1000);
-#endif /* M4OSA_FILE_CACHE_TIME_MEAS */
-
- M4OSA_TRACE3_2("M4OSA_fileWriteSeek_cache mode = %d pos = %d", SeekMode, *pPosition);
-
- /* Check input parameters */
- M4ERR_CHECK_NULL_RETURN_VALUE(M4ERR_BAD_CONTEXT, apContext);
- M4ERR_CHECK_NULL_RETURN_VALUE(M4ERR_PARAMETER, pPosition);
- M4ERR_CHECK_NULL_RETURN_VALUE(M4ERR_PARAMETER, SeekMode);
-
- if (apContext->IsOpened != M4OSA_TRUE)
- {
- return M4ERR_BAD_CONTEXT; /*< The context can not be correct */
- }
-
-LOCK
-
- /* Go to the desired position */
- switch(SeekMode)
- {
- case M4OSA_kFileSeekBeginning :
- finalPos = *pPosition;
- break;
-
- case M4OSA_kFileSeekEnd :
- finalPos = apContext->virtualFileSize + *pPosition;
- break;
-
- case M4OSA_kFileSeekCurrent :
- finalPos = apContext->absoluteWritePos + *pPosition;
- break;
-
- default :
- UNLOCK
- return M4ERR_PARAMETER; /**< Bad SeekAcess mode */
- break;
- }
-
- M4OSA_TRACE2_1("M4OSA_fileWriteSeek_cache to absoluteWritePos = %d ", finalPos);
-
-/* 20080125 Start : Protect against seek outside file. MI-958*/
- if (finalPos <= apContext->virtualFileSize && finalPos>=0)
- {
- apContext->absoluteWritePos = finalPos;
- *pPosition = finalPos;
- }
- else
- {
- M4OSA_TRACE1_2("M4OSA_fileWriteSeek_cache: attempted to seek at %d whilst filesize=%d ",
- finalPos, apContext->virtualFileSize);
- *pPosition = apContext->absoluteWritePos; /* keep the previous position */
- //err = M4ERR_FILE_INVALID_POSITION;
- err = M4NO_ERROR; /* for VA */
- }
-/* 20080125 End : Protect against seek outside file. MI-958*/
-
-#ifdef M4OSA_FILECACHE_MM
- apContext->absolutePos = apContext->absoluteWritePos;
-#endif /* M4OSA_FILECACHE_MM */
-
-#ifdef M4OSA_FILE_CACHE_TIME_MEAS
- M4OSA_clockGetTime(&time2,1000);
- if (time2>time1)
- apContext->gMyPerfFileTab[fileSeektime] += time2-time1;
-#endif /* M4OSA_FILE_CACHE_TIME_MEAS */
-
-UNLOCK
-
- /* Return without error */
- return err;
-}
-
-M4OSA_ERR M4OSA_fileFlush_cache( M4OSA_Context pContext)
-{
- /* Do nothing, M4OSA_fileCache module manages its caches by itself */
-
- return M4NO_ERROR;
-}
-/**
-******************************************************************************
-* @brief This method asks the core file reader to close the file (associated to the context).
-* @param pContext: (IN) File reader context.
-* @return M4NO_ERROR: there is no error
-* @return M4ERR_BAD_CONTEXT provided context is not a valid one.
-******************************************************************************
-*/
-M4OSA_ERR M4OSA_fileClose_cache(M4OSA_Context pContext)
-{
- M4OSA_FileCache_Context* apContext = (M4OSA_FileCache_Context*) pContext;
-
- M4OSA_ERR err = M4NO_ERROR;
- M4OSA_Int32 aRet_Val = 0;
- M4OSA_UInt16 errReturned = 0;
-
-
-#ifdef M4OSA_FILE_CACHE_TIME_MEAS
- M4OSA_Time time1 = 0;
- M4OSA_Time time2 = 0;
-
- M4OSA_clockGetTime(&time1,1000);
-#endif /* M4OSA_FILE_CACHE_TIME_MEAS */
-
- M4OSA_TRACE2_1("M4OSA_fileClose_cache pC = 0x%x", pContext);
-
- /* Check input parameters */
- M4ERR_CHECK_NULL_RETURN_VALUE(M4ERR_BAD_CONTEXT, apContext);
-
- if (apContext->IsOpened != M4OSA_TRUE)
- {
- return M4ERR_BAD_CONTEXT; /**< The context can not be correct */
- }
-
-LOCK
-
-#ifdef BUFFER_DISPLAY
- M4OSA_FileCache_BufferDisplay(apContext);
-#endif
-
- M4OSA_FileCache_BuffersFlushUntil(apContext, M4OSA_CACHEBUFFER_ALL);
-
- /* buffer */
- M4OSA_FileCache_BuffersFree(apContext);
-
- /* Close the file */
- aRet_Val = apContext->FS->pFctPtr_Close(apContext->aFileDesc, &errReturned);
-
- if (aRet_Val != 0)
- {
- /* converts the error to PSW format*/
- err = M4OSA_ERR_CREATE(M4_ERR, M4OSA_FILE_READER, errReturned);
- M4OSA_TRACE1_1("M4OSA_fileClose_cache ERR1 = 0x%x", err);
- }
- apContext->IsOpened = M4OSA_FALSE;
-
- /* Free the context */
- free(apContext->FS);
- free(apContext->aFileDesc);
-
-#ifdef FILECACHE_STATS
-{
- M4OSA_Int32 successRateRead, successRateWrite;
-
- successRateRead= (apContext->nbReadFFS + apContext->nbReadCache ==0)? (-1) : (apContext->nbReadCache)*100 / (apContext->nbReadCache + apContext->nbReadFFS);
-
- successRateWrite = (apContext->nbWriteFFS + apContext->nbWriteCache == 0)? (-1) : (apContext->nbWriteCache)*100 / (apContext->nbWriteCache + apContext->nbWriteFFS);
-
-#if defined(BUFFER_SELECT_INITIAL)
- M4OSA_TRACE1_0("BUFFER_SELECT_INITIAL");
-#elif defined(BUFFER_SELECT_WITH_TIME)
- M4OSA_TRACE1_0("BUFFER_SELECT_WITH_TIME");
-#elif defined(BUFFER_SELECT_WITH_SPACE)
- M4OSA_TRACE1_0("BUFFER_SELECT_WITH_SPACE");
-#elif defined(BUFFER_SELECT_WITH_POS)
- M4OSA_TRACE1_0("BUFFER_SELECT_WITH_POS");
-#endif
-
- M4OSA_TRACE1_1("Osal File Cache Stats for %s", apContext->m_filename);
- M4OSA_TRACE1_2("FILECACHE_STATS: nbReadCache=%d / nbReadFFS=%d",
- apContext->nbReadCache, apContext->nbReadFFS);
- M4OSA_TRACE1_2("FILECACHE_STATS: nbWriteCache=%d / nbWriteFFS=%d",
- apContext->nbWriteCache, apContext->nbWriteFFS);
- M4OSA_TRACE1_2("FILECACHE_STATS: Success in reading : %d percent - Success in writing %d percent",
- successRateRead, successRateWrite);
- M4OSA_TRACE1_0("---------------------------------------------------------");
-}
-#endif /* FILECACHE_STATS */
-
- UNLOCK
-
- if (apContext->m_mutex != M4OSA_NULL)
- {
- M4OSA_mutexClose(apContext->m_mutex);
- apContext->m_mutex = M4OSA_NULL;
- }
-
-#ifdef M4OSA_FILE_CACHE_TIME_MEAS
- M4OSA_clockGetTime(&time2,1000);
- if (time2>time1)
- apContext->gMyPerfFileTab[fileClosetime] += time2-time1;
-
- M4OSA_FileCache_displayTimeMeas(apContext);
-#endif /* M4OSA_FILE_CACHE_TIME_MEAS */
-
- M4OSA_memset((M4OSA_MemAddr8)apContext, sizeof(M4OSA_FileCache_Context), 0);
-
- free(apContext);
-
- M4OSA_TRACE2_1("M4OSA_fileClose_cache leaving with err = 0x%x", err);
-
- /* Return without error */
- return err;
-}
-
-/**
-******************************************************************************
-* @brief This method asks the core file reader to set the value associated with the optionID.
-* The caller is responsible for allocating/de-allocating the memory of the value field.
-* @note The options handled by the component depend on the implementation of the component.
-* @param pContext: (IN) Execution context.
-* @param OptionId : (IN) Id of the option to set.
-* @param OptionValue : (IN) Value of the option.
-* @return M4NO_ERROR: there is no error
-* @return M4ERR_BAD_CONTEXT pContext is NULL
-* @return M4ERR_BAD_OPTION_ID the option id is not valid.
-* @return M4ERR_NOT_IMPLEMENTED The option is not implemented yet.
-******************************************************************************
-*/
-M4OSA_ERR M4OSA_fileSetOption_cache(M4OSA_Context pContext,
- M4OSA_OptionID OptionID,
- M4OSA_DataOption OptionValue)
-{
- M4OSA_FileCache_Context* apContext = (M4OSA_FileCache_Context*) pContext;
-
-#ifdef M4OSA_FILE_CACHE_TIME_MEAS
- M4OSA_Time time1 = 0;
- M4OSA_Time time2 = 0;
-
- M4OSA_clockGetTime(&time1,1000);
-#endif /* M4OSA_FILE_CACHE_TIME_MEAS */
-
- /* Check input parameters */
- M4ERR_CHECK_NULL_RETURN_VALUE(M4ERR_BAD_CONTEXT, apContext);
-
- if (apContext->IsOpened != M4OSA_TRUE)
- {
- return M4ERR_BAD_CONTEXT; /**< The context can not be correct */
- }
-
- /* Set the desired option if it is avalaible */
- switch(OptionID)
- {
- case M4OSA_kFileReadGetFileSize : /**< Get size of the file, limited to 32 bit size */
- case M4OSA_kFileReadGetFileAttribute : /**< Get the file attribute*/
- case M4OSA_kFileReadGetURL : /**< Get the directory + name of the file */
- case M4OSA_kFileReadIsEOF : /**< See if we are at the end of the file */
- case M4OSA_kFileReadGetFilePosition : /**< Get file position */
- return M4ERR_READ_ONLY;
- break;
-
- case M4OSA_kFileWriteDescMode:
- return M4NO_ERROR; /* for MM */
-
- default : /**< Bad option ID */
- return M4ERR_BAD_OPTION_ID;
- break;
- }
-
-#ifdef M4OSA_FILE_CACHE_TIME_MEAS
- M4OSA_clockGetTime(&time2,1000);
- if (time2>time1)
- apContext->gMyPerfFileTab[fileSetOptiontime] += time2-time1;
-#endif /* M4OSA_FILE_CACHE_TIME_MEAS */
-
- /* Return without error */
- return M4NO_ERROR;
-}
-
-/**
-******************************************************************************
-* @brief This method asks the core file reader to return the value associated with the optionID.
-* The caller is responsible for allocating/de-allocating the memory of the value field.
-* @note The options handled by the component depend on the implementation of the component.
-* @param pContext: (IN) Execution context.
-* @param OptionId : (IN) Id of the option to set.
-* @param pOptionValue : (OUT) Value of the option.
-* @return M4NO_ERROR: there is no error
-* @return M4ERR_BAD_CONTEXT pContext is NULL
-* @return M4ERR_BAD_OPTION_ID the option id is not valid.
-* @return M4ERR_NOT_IMPLEMENTED The option is not implemented yet.
-******************************************************************************
-*/
-M4OSA_ERR M4OSA_fileGetOption_cache(M4OSA_Context pContext,
- M4OSA_OptionID OptionID,
- M4OSA_DataOption* pOptionValue)
-{
- M4OSA_FileCache_Context* apContext = (M4OSA_FileCache_Context*) pContext;
- M4OSA_ERR err = M4NO_ERROR;
- M4OSA_Bool isEof;
-
-#ifdef M4OSA_FILE_CACHE_TIME_MEAS
- M4OSA_Time time1 = 0;
- M4OSA_Time time2 = 0;
-
- M4OSA_clockGetTime(&time1,1000);
-#endif /* M4OSA_FILE_CACHE_TIME_MEAS */
-
-
- /* Check input parameters */
- M4ERR_CHECK_NULL_RETURN_VALUE(M4ERR_BAD_CONTEXT, apContext);
-
- if (apContext->IsOpened != M4OSA_TRUE)
- {
- return M4ERR_BAD_CONTEXT; /**< The context can not be correct */
- }
-
-LOCK
-
- /* Get the desired option if it is avalaible */
- switch(OptionID)
- {
- /* Get File Size */
- case M4OSA_kFileReadGetFileSize:/**< Get size of the file, limited to 32 bit size */
- M4OSA_TRACE2_1("M4OSA_fileGetOption_cache ReadGetFileSize return filesize = %d ",
- apContext->virtualFileSize);
- (*(M4OSA_UInt32 *)pOptionValue) = apContext->virtualFileSize; /* return virtual */
- break;
-
-
- case M4OSA_kFileWriteGetFileSize:/**< Get size of the file, limited to 32 bit size */
- M4OSA_TRACE2_1("M4OSA_fileGetOption_cache WriteGetFileSize return filesize = %d ",
- apContext->virtualFileSize);
- (*(M4OSA_UInt32 *)pOptionValue) = apContext->virtualFileSize; /* return virtual */
- break;
-
- /* Check End of file Occurs */
- case M4OSA_kFileReadIsEOF : /**< See if we are at the end of the file */
- isEof = (apContext->absolutePos >= apContext->virtualFileSize) ? M4OSA_TRUE : M4OSA_FALSE; /* virtual */
- (*(M4OSA_Bool *)pOptionValue) = isEof;
- M4OSA_TRACE2_1("M4OSA_fileGetOption_cache ReadIsEOF return isEof=%d ",
- isEof);
- break;
-
- /* Get File Position */
- case M4OSA_kFileReadGetFilePosition : /**< Get file position */
- M4OSA_TRACE2_1("M4OSA_fileGetOption_cache ReadGetFilePosition return rpos=%d ",
- apContext->absolutePos);
- *(M4OSA_FilePosition *)pOptionValue = apContext->absolutePos;
- break;
-
- /* Get File Position */
- case M4OSA_kFileWriteGetFilePosition : /**< Get file position */
- M4OSA_TRACE2_1("M4OSA_fileGetOption_cache WriteGetFilePosition return wpos=%d ",
- apContext->absoluteWritePos);
- *(M4OSA_FilePosition *)pOptionValue = apContext->absoluteWritePos;
- break;
-
- /* Get Attribute */
- case M4OSA_kFileReadGetFileAttribute : /**< Get the file attribute = access mode */
- M4OSA_TRACE2_1("M4OSA_fileGetOption_cache ReadGetFileAttribute return mode=%d ",
- apContext->FileAttribute.modeAccess);
- (*(M4OSA_FileAttribute *)pOptionValue).modeAccess = apContext->FileAttribute.modeAccess;
- break;
- /** Get the reader context for read & write file. (M4OSA_Context*)*/
- case M4OSA_kFileWriteGetReaderContext:
- M4OSA_TRACE2_1("M4OSA_fileGetOption_cache WriteGetReaderContext return c=0x%x ",
- apContext);
- (*(M4OSA_Context *)pOptionValue) = apContext;
- break;
- default:
- /**< Bad option ID */
- UNLOCK
- return M4ERR_BAD_OPTION_ID;
- break;
- }
-
-#ifdef M4OSA_FILE_CACHE_TIME_MEAS
- M4OSA_clockGetTime(&time2,1000);
- if (time2>time1)
- apContext->gMyPerfFileTab[fileGetOptiontime] += time2-time1;
-#endif /* M4OSA_FILE_CACHE_TIME_MEAS */
-
- UNLOCK
-
-
- /*Return without error */
- return err;
-}
-
-/* For VA */
-M4OSA_ERR M4OSA_fileExtrafTruncate_cache(M4OSA_Context context, M4OSA_UInt32 length)
-{
- M4OSA_ERR err = M4NO_ERROR;
- M4OSA_UInt16 result = M4OSA_FALSE;
- M4OSA_FileCache_Context* apContext = context;
-
-
- FILE* filedesc1 = ((M4OSA_FileSystem_FFS_t_cache*) ( apContext->aFileDesc))->FileDesc;
-
- result = ftruncate(filedesc1->_file, length);
-
- if(result != 0)
- {
- err = errno;
- M4OSA_TRACE1_1("SetEndOfFile returns err: 0x%x\n", err);
- return M4OSA_ERR_CREATE(M4_ERR, M4OSA_FILE_EXTRA, err);
- }
- return M4NO_ERROR;
-}
-#ifdef M4OSA_FILE_CACHE_TIME_MEAS
-
-/**************************************************************/
-void M4OSA_FileCache_initTimeMeas(M4OSA_Context pContext)
-/**************************************************************/
-{
- M4OSA_FileCache_Context* apContext = (M4OSA_FileCache_Context*) pContext;
- M4OSA_Time time1 = 0;
-
- memset(apContext->gMyPerfFileTab, 0, sizeof(apContext->gMyPerfFileTab)); //Reset perf measurement array
-
- M4OSA_clockGetTime(&time1,1000);
- apContext->gMyPerfFileTab[enum_size] = time1; //to compute total application time
-
-}
-
-/**************************************************************/
-void M4OSA_FileCache_displayTimeMeas(M4OSA_Context pContext)
-/**************************************************************/
-{
- M4OSA_FileCache_Context* apContext = (M4OSA_FileCache_Context*) pContext;
-
- M4OSA_Time globalfileperfmeas = 0;
- M4OSA_Time time2 = 0;
- M4OSA_UInt32 i=0;
-
- M4OSA_clockGetTime(&time2,1000);
-
- /* Time spent in application */
- time2 = time2-apContext->gMyPerfFileTab[enum_size];
-
- /* Time spent in File System procedures */
- for (i=0; i<enum_size; i++)
- globalfileperfmeas += apContext->gMyPerfFileTab[i];
-
- M4OSA_TRACE1_1("Osal File Cache Time measurement for %s ",
- apContext->m_filename);
- M4OSA_TRACE1_2("Application time =%d, fileCache total time =%d",
- (M4OSA_Int32)time2,
- (M4OSA_Int32)globalfileperfmeas);
- M4OSA_TRACE1_4("Opentime:%d, ReadDatatime:%d, WriteDatatime: %d, Seektime:%d",
- (M4OSA_Int32)apContext->gMyPerfFileTab[fileOpentime] ,
- (M4OSA_Int32)apContext->gMyPerfFileTab[fileReadDatatime] ,
- (M4OSA_Int32)apContext->gMyPerfFileTab[fileWriteDatatime] ,
- (M4OSA_Int32)apContext->gMyPerfFileTab[fileSeektime] );
- M4OSA_TRACE1_4("GetOptiontime:%d, SetOptiontime:%d, ExternalFlush: %d, Closetime: %d",
- (M4OSA_Int32)apContext->gMyPerfFileTab[fileGetOptiontime] ,
- (M4OSA_Int32)apContext->gMyPerfFileTab[fileSetOptiontime],
- (M4OSA_Int32)apContext->gMyPerfFileTab[fileExternalFlushtime],
- (M4OSA_Int32)apContext->gMyPerfFileTab[fileClosetime]);
- M4OSA_TRACE1_0("--------------------------------------------------------------------");
-}
-
-#endif /* M4OSA_FILE_INTERFACE_MM_TIME_MEAS */
diff --git a/libvideoeditor/osal/src/M4OSA_FileExtra.c b/libvideoeditor/osal/src/M4OSA_FileExtra.c
deleted file mode 100755
index bcac97c..0000000
--- a/libvideoeditor/osal/src/M4OSA_FileExtra.c
+++ /dev/null
@@ -1,527 +0,0 @@
-/*
- * Copyright (C) 2004-2011 NXP Software
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-/**
-************************************************************************
-* @file M4OSA_FileExtra.c
-* @brief File extra for Android
-* @note This file implements a set of basic functions to handle file
-* itself.
-************************************************************************
-*/
-
-#include "M4OSA_Debug.h"
-#include "M4OSA_FileCommon.h"
-#include "M4OSA_FileCommon_priv.h"
-#include "M4OSA_FileExtra.h"
-#include "M4OSA_FileReader.h"
-#include "M4OSA_FileWriter.h"
-
-#include <errno.h>
-#include <unistd.h>
-#include <sys/stat.h>
-#include <sys/statfs.h>
-
-
-
-/**
- ************************************************************************
- * @brief This function deletes the provided URL.
- * @note
- * @param pUrl: (IN) URL of the file to delete
- * @param fileModeAccess: (IN) File mode access
- * @return M4NO_ERROR: there is no error
- * @return M4ERR_ALLOC: there is no more memory available
- * @return M4ERR_PARAMETER: at least one parameter is NULL
- * @return M4ERR_NOT_IMPLEMENTED: the URL does not match with the supported
- * file
- ************************************************************************
-*/
-M4OSA_ERR M4OSA_fileExtraDelete(const M4OSA_Char* pUrl)
-{
-
- M4OSA_Int32 err;
-#ifdef UTF_CONVERSION
- M4OSA_Void* tempConversionBuf;
- M4OSA_UInt32 tempConversionSize = 1000; /*size of the decoded buffer,
- can be increase if necessary*/
-#endif /* UTF_CONVERSION */
-
- M4OSA_TRACE1_1("M4OSA_fileExtraDelete\t\tM4OSA_Char* %s", pUrl);
- M4OSA_DEBUG_IF2(M4OSA_NULL == pUrl, M4ERR_PARAMETER,
- "M4OSA_fileExtraDelete: pUrl is M4OSA_NULL");
-
-#ifdef UTF_CONVERSION
- /*FB: to test the UTF16->UTF8 conversion into Video Artist*/
- /*Convert the URL from UTF16 to UTF8*/
- tempConversionBuf = (M4OSA_Char*)M4OSA_32bitAlignedMalloc(tempConversionSize +1, 0,
- (M4OSA_Char*)"conversion buf");
- if(tempConversionBuf == M4OSA_NULL)
- {
- M4OSA_TRACE1_0("Error when allocating conversion buffer\n");
- return M4ERR_PARAMETER;
- }
- M4OSA_ToUTF8_OSAL((M4OSA_Void*)pUrl, tempConversionBuf, &tempConversionSize);
- ((M4OSA_Char*)tempConversionBuf)[tempConversionSize ] = '\0';
-
- printf("remove file %s\n", tempConversionBuf);
-
- /*Open the converted path*/
- err = remove (tempConversionBuf);
- /*Free the temporary decoded buffer*/
- free(tempConversionBuf);
-#else
- err = remove((const char *)pUrl);
-#endif /* UTF_CONVERSION */
-
- if(-1 == err)
- {
- M4OSA_DEBUG(M4ERR_PARAMETER,
- "M4OSA_fileExtraDelete: Cannot remove the input url");
- return M4ERR_PARAMETER;
- }
-
- return M4NO_ERROR;
-}
-
-/**
- ************************************************************************
- * @brief This function copies the file located by 'pSrcUrl' to 'pDstUrl'.
- * @note
- * @param pSrcUrl: (IN) source URL
- * @param pDstUrl: (IN) Destination URL
- * @return M4NO_ERROR: there is no error
- * @return M4ERR_ALLOC: there is no more memory available
- * @return M4ERR_PARAMETER: at least one parameter is NULL
- * @return M4ERR_NOT_IMPLEMENTED: the URL does not match with the supported
- * file
- ************************************************************************
-*/
-M4OSA_ERR M4OSA_fileExtraCopy(M4OSA_Char* pSrcUrl, M4OSA_Char* pDstUrl)
-{
- M4OSA_Context pInputFileContext = M4OSA_NULL;
- M4OSA_Context pOutputFileContext= M4OSA_NULL;
-
- M4OSA_ERR err;
- M4OSA_UInt32 uiSizeRead = BUFFER_COPY_SIZE;
- M4OSA_MemAddr32 copy_buffer;
-
- M4OSA_TRACE1_2("M4OSA_fileExtraDelete\t\tM4OSA_Char* %s\tM4OSA_Char* %s",
- pSrcUrl, pDstUrl);
- M4OSA_DEBUG_IF2(M4OSA_NULL == pDstUrl, M4ERR_PARAMETER,
- "M4OSA_fileExtraCopy: pDstUrl is M4OSA_NULL");
- M4OSA_DEBUG_IF2(M4OSA_NULL == pSrcUrl, M4ERR_PARAMETER,
- "M4OSA_fileExtraCopy: pSrcUrl is M4OSA_NULL");
-
- /* Open input file */
- err = M4OSA_fileReadOpen(&pInputFileContext, pSrcUrl, M4OSA_kFileRead);
- if(M4NO_ERROR != err)
- {
- M4OSA_DEBUG(err, "M4OSA_fileExtraCopy: M4OSA_fileReadOpen");
- return err;
- }
-
- /* Open output file */
- err = M4OSA_fileWriteOpen(&pOutputFileContext, pDstUrl,
- M4OSA_kFileWrite|M4OSA_kFileCreate);
- if(M4NO_ERROR != err)
- {
- M4OSA_DEBUG(err, "M4OSA_fileExtraCopy: M4OSA_fileWriteOpen");
- return err;
- }
-
- /* Allocate buffer */
- copy_buffer = M4OSA_32bitAlignedMalloc(BUFFER_COPY_SIZE, M4OSA_FILE_EXTRA,
- (M4OSA_Char*)"M4OSA_fileExtraCopy: copy buffer");
- if(M4OSA_NULL == copy_buffer)
- {
- M4OSA_DEBUG(M4ERR_ALLOC, "M4OSA_fileExtraCopy");
- return M4ERR_ALLOC;
- }
-
- /* Copy input file to output file using copy buffer */
- while (1)
- {
- /* Load data into copy buffer */
- err = M4OSA_fileReadData(pInputFileContext,
- (M4OSA_MemAddr8)copy_buffer, &uiSizeRead);
- if(M4NO_ERROR == err)
- {
- /* Write data to output file */
- err = M4OSA_fileWriteData(pOutputFileContext,
- (M4OSA_MemAddr8)copy_buffer, uiSizeRead);
- if(M4NO_ERROR != err)
- {
- break;
- }
- }
- else if (M4WAR_NO_DATA_YET == err)
- {
- /* no more data to copy, end of file reached */
- err = M4OSA_fileWriteData(pOutputFileContext,
- (M4OSA_MemAddr8)copy_buffer, uiSizeRead);
- break;
- }
- else
- {
- break; /* an error occur */
- }
- }
-
- /* Free copy buffer */
- free(copy_buffer);
-
- err = M4OSA_fileWriteClose(pOutputFileContext);
- if(M4NO_ERROR != err)
- {
- M4OSA_DEBUG(err, "M4OSA_fileExtraCopy: M4OSA_fileWriteClose");
- }
-
- err = M4OSA_fileReadClose(pInputFileContext);
- if(M4NO_ERROR != err)
- {
- M4OSA_DEBUG(err, "M4OSA_fileExtraCopy: M4OSA_fileReadClose");
- }
-
- return err;
-}
-
-
-/**
- ************************************************************************
- * @brief This function renames the 'pSrcUrl' to 'pDstUrl'.
- * @note
- * @param pSrcUrl: (IN) source URL
- * @param pDstUrl: (IN) Destination URL
- * @return M4NO_ERROR: there is no error
- * @return M4ERR_ALLOC: there is no more memory available
- * @return M4ERR_PARAMETER: at least one parameter is NULL
- * @return M4ERR_NOT_IMPLEMENTED: the URL does not match with the supported
- * file
- ************************************************************************
-*/
-M4OSA_ERR M4OSA_fileExtraRename(M4OSA_Char* pSrcUrl, M4OSA_Char* pDstUrl)
-{
- M4OSA_ERR err;
- M4OSA_Int32 iValue;
- M4OSA_Char* pSrcFilename = M4OSA_NULL;
- M4OSA_Char* pDstFilename = M4OSA_NULL;
-
- M4OSA_TRACE1_2("M4OSA_fileExtraRename\t\tM4OSA_Char* %s\tM4OSA_Char* %s",
- pSrcUrl, pDstUrl);
-
- M4OSA_DEBUG_IF2(M4OSA_NULL == pDstUrl, M4ERR_PARAMETER,
- "M4OSA_fileExtraRename: pSrcUrl is M4OSA_NULL");
- M4OSA_DEBUG_IF2(M4OSA_NULL == pSrcUrl, M4ERR_PARAMETER,
- "M4OSA_fileExtraRename: pDstUrl is M4OSA_NULL");
-
- err = M4OSA_fileCommonGetFilename(pSrcUrl, &pSrcFilename);
- if(M4NO_ERROR != err)
- {
- M4OSA_DEBUG(err, "M4OSA_fileExtraRename: M4OSA_fileCommonGetFilename");
- return err;
- }
-
- err = M4OSA_fileCommonGetFilename(pDstUrl, &pDstFilename);
- if(M4NO_ERROR != err)
- {
- free(pSrcFilename);
- M4OSA_DEBUG(err, "M4OSA_fileExtraRename: M4OSA_fileCommonGetFilename");
- return err;
- }
-
- /* Rename file */
- iValue = rename((const char *)pSrcFilename, (const char *)pDstFilename);
- if (0 != iValue)
- {
- /*
- What error code shall be returned ? From MSDN:
- Each of these functions returns 0 if it is successful. On an error, the
- function returns a nonzero value and sets errno to one of the following
- values:
- - EACCES: File or directory specified by newname already exists or could
- not be created (invalid path); or oldname is a directory and newname
- specifies a different path.
- - ENOENT: File or path specified by oldname not found.
- - EINVAL: Name contains invalid characters.
- For other possible return values, see _doserrno, _errno, syserrlist, and
- _sys_nerr. */
- M4OSA_DEBUG(M4ERR_PARAMETER, "M4OSA_fileExtraRename: rename failed");
- return M4ERR_PARAMETER;
- }
-
- free(pDstFilename);
- free(pSrcFilename);
-
- return M4NO_ERROR;
-}
-
-
-
-/**
- ************************************************************************
- * @brief This function changes the current directory to the specified new
- * directory 'url'.
- * @note
- * @param pUrl: (IN) Directory to which current directory to be changed
- * @return M4NO_ERROR: there is no error
- * @return M4ERR_ALLOC: there is no more memory available
- * @return M4ERR_PARAMETER: at least one parameter is NULL
- * @return M4ERR_NOT_IMPLEMENTED: the URL does not match with the supported
- * file
- ************************************************************************
-*/
-
-M4OSA_ERR M4OSA_fileExtraChangeCurrentDir(const M4OSA_Char* pUrl)
-{
- M4OSA_ERR err;
- M4OSA_Char* pFileName = M4OSA_NULL;
- M4OSA_Int32 iValue = 0;
-
- M4OSA_TRACE1_1("M4OSA_fileExtraChangeCurrentDir\t\tM4OSA_Char* %s", pUrl);
- M4OSA_DEBUG_IF2(M4OSA_NULL == pUrl, M4ERR_PARAMETER,
- "M4OSA_fileExtraChangeCurrentDir: pUrl is M4OSA_NULL");
-
- err = M4OSA_fileCommonGetFilename((M4OSA_Char*)pUrl, &pFileName);
- if(M4NO_ERROR != err)
- {
- M4OSA_DEBUG(err,
- "M4OSA_fileExtraChangeCurrentDir: M4OSA_fileCommonGetFilename");
- return err;
- }
-
- iValue = chdir((char*)pFileName);
-
- if (iValue != 0)
- {
- /*
- What error code shall be returned ? From MSDN:
- Each of these functions returns a value of 0 if successful. A return
- value of -1 indicates that the specified path could not be found, in
- which case errno is set to ENOENT.*/
- M4OSA_DEBUG(M4ERR_PARAMETER,
- "M4OSA_fileExtraChangeCurrentDir: chdir failed");
- return(M4ERR_PARAMETER);
- }
-
- free(pFileName);
-
- return M4NO_ERROR;
-}
-
-/**
- ************************************************************************
- * @brief This function creates a new directory to the specified 'url'.
- * @note
- * @param pUrl: (IN) Path to create new directory with name
- * @return M4NO_ERROR: there is no error
- * @return M4ERR_ALLOC: there is no more memory available
- * @return M4ERR_PARAMETER: at least one parameter is NULL
- * @return M4ERR_NOT_IMPLEMENTED: the URL does not match with the supported
- * file
- ************************************************************************
-*/
-M4OSA_ERR M4OSA_fileExtraCreateDir(const M4OSA_Char* pUrl)
-{
- M4OSA_Int32 err;
-
- M4OSA_TRACE2_1("M4OSA_fileExtraCreateDir %s", pUrl);
- M4OSA_DEBUG_IF2(M4OSA_NULL == pUrl, M4ERR_PARAMETER,
- "M4OSA_fileExtraCreateDir: pUrl is M4OSA_NULL");
-
- err = mkdir((char*)pUrl, S_IRWXU | S_IRWXG | S_IRWXO);
-
- if( err < 0 )
- {
- return M4OSA_ERR_CREATE(M4_ERR, M4OSA_FILE_EXTRA, errno);
- }
-
- return M4NO_ERROR;
-}
-
-
-/**
- ************************************************************************
- * @brief This function removes the current directory.
- * @note
- * @param pUrl: (IN) Path of directory with name
- * @return M4NO_ERROR: there is no error
- * @return M4ERR_ALLOC: there is no more memory available
- * @return M4ERR_PARAMETER: at least one parameter is NULL
- * @return M4ERR_NOT_IMPLEMENTED: the URL does not match with the supported
- * file
- ************************************************************************
-*/
-M4OSA_ERR M4OSA_fileExtraRemoveDir(const M4OSA_Char* pUrl)
-{
- M4OSA_Int32 err;
-
- M4OSA_TRACE2_1("M4OSA_fileExtraRemoveDir %s", pUrl);
- M4OSA_DEBUG_IF2(M4OSA_NULL == pUrl, M4ERR_PARAMETER,
- "M4OSA_fileExtraRemoveDir: pUrl is M4OSA_NULL");
-
- err = rmdir((char*)pUrl);
- if(err < 0 )
- {
- M4OSA_DEBUG(M4ERR_PARAMETER, "M4OSA_fileExtraRemoveDir failed");
- return M4OSA_ERR_CREATE(M4_ERR, M4OSA_FILE_EXTRA, errno);
- }
-
- return M4NO_ERROR;
-}
-
-/**
- ************************************************************************
- * @brief retrieves the free space.
- * @note
- * @param pUrl: (IN) root directory
- * @return M4NO_ERROR: there is no error
- * @return M4ERR_ALLOC: there is no more memory available
- * @return M4ERR_PARAMETER: at least one parameter is NULL
- * @return M4ERR_NOT_IMPLEMENTED: the URL does not match with the supported
- * file
- ************************************************************************
-*/
-M4OSA_UInt32 M4OSA_fileExtraGetFreeSpace(const M4OSA_Char* pUrl)
-{
- M4OSA_UInt32 size = 0;
- struct statfs stat;
-
- if ( M4OSA_NULL != pUrl )
- {
- if (0 == statfs( (const char *)pUrl, &stat ))
- {
- if ((stat.f_bfree * stat.f_bsize) > M4OSA_UINT32_MAX)
- {
- size = M4OSA_UINT32_MAX;
- }
- else
- {
- size = (M4OSA_UInt32)(stat.f_bfree * stat.f_bsize);
- }
- }
- }
-
- return (size);
-}
-
-/**
- ************************************************************************
- * @brief This function gets the total space
- * @note
- * @param pUrl: (IN) Path of directory with name
- * @return M4NO_ERROR: there is no error
- * @return M4ERR_ALLOC: there is no more memory available
- * @return M4ERR_PARAMETER: at least one parameter is NULL
- * @return M4ERR_NOT_IMPLEMENTED: the URL does not match with the supported
- * file
- ************************************************************************
-*/
-M4OSA_UInt32 M4OSA_fileExtraGetTotalSpace(const M4OSA_Char* pUrl)
-{
- M4OSA_UInt32 size = 0;
- struct statfs stat;
-
- if ( M4OSA_NULL != pUrl )
- {
- if (0 == statfs( (const char *)pUrl, &stat ))
- {
- if ((stat.f_blocks * stat.f_bsize) > M4OSA_UINT32_MAX)
- {
- size = M4OSA_UINT32_MAX;
- }
- else
- {
- size = (M4OSA_UInt32)(stat.f_blocks * stat.f_bsize);
- }
- }
- }
-
- return (size);
-}
-
-/**
- ************************************************************************
- * @brief This function retrieve the file type (Directory or file).
- * @note
- * @param pUrl: (IN) Path of directory with name
- * @return M4NO_ERROR: there is no error
- * @return M4ERR_ALLOC: there is no more memory available
- * @return M4ERR_PARAMETER: at least one parameter is NULL
- * @return M4ERR_NOT_IMPLEMENTED: the URL does not match with the supported
- * file
- ************************************************************************
-*/
-M4OSA_EntryType M4OSA_fileExtraGetType(const M4OSA_Char* pUrl)
-{
- M4OSA_EntryType type = M4OSA_TypeInvalid;
- struct stat fileStat;
-
- if ( M4OSA_NULL != pUrl )
- {
- if (0 == stat( (const char *)pUrl, &fileStat))
- {
- if ( S_ISDIR( fileStat.st_mode ) )
- {
- type = M4OSA_TypeDir;
- }
- else
- {
- type = M4OSA_TypeFile;
- }
- }
- }
-
- return (type);
-}
-
-
-/**
- ************************************************************************
- * @brief This function truncate a file.
- * the file must be previously opened in write mode
- * @note the position pointer in the file is set to the beginning
- * of the file after the truncate
- * @param context: (IN) media context
- * @param length: (IN) length of the file after truncation
- * @return M4NO_ERROR: there is no error
- * @return M4ERR_ALLOC: there is no more memory available
- * @return M4ERR_PARAMETER: at least one parameter is NULL
- ************************************************************************
-*/
-M4OSA_ERR M4OSA_fileExtrafTruncate(M4OSA_Context context, M4OSA_FilePosition length)
-{
- M4OSA_ERR err = M4NO_ERROR;
- M4OSA_UInt16 result = M4OSA_FALSE;
- M4OSA_FileContext* pFileContext = context;
-
- M4OSA_DEBUG_IF2(M4OSA_NULL == context, M4ERR_PARAMETER,
- "M4OSA_fileExtrafTruncate: context is M4OSA_NULL");
- M4OSA_DEBUG_IF2(M4OSA_NULL == length, M4ERR_PARAMETER,
- "M4OSA_fileExtrafTruncate: length is M4OSA_NULL");
-
- result = ftruncate(pFileContext->file_desc->_file, length);
-
- if(result != 0)
- {
- err = errno;
- M4OSA_TRACE1_1("SetEndOfFile returns err: 0x%x\n", err);
- return M4OSA_ERR_CREATE(M4_ERR, M4OSA_FILE_EXTRA, err);
- }
- return M4NO_ERROR;
-}
-
-
diff --git a/libvideoeditor/osal/src/M4OSA_FileReader_RAM.c b/libvideoeditor/osal/src/M4OSA_FileReader_RAM.c
deleted file mode 100755
index 0cfc006..0000000
--- a/libvideoeditor/osal/src/M4OSA_FileReader_RAM.c
+++ /dev/null
@@ -1,419 +0,0 @@
-/*
- * Copyright (C) 2004-2011 NXP Software
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-/**
- ******************************************************************************
- * @file M4OSA_FileReaderRam.c
- * @ingroup OSAL
- * @brief File reader from RAM
- * @note This file implements functions to read a "file" stored in RAM.
- * @date - 2004-05-11: creation
- ******************************************************************************
-*/
-
-#include "M4OSA_Debug.h"
-#include "M4OSA_FileReaderRam.h"
-#include "M4OSA_Memory.h"
-
-/**
- ******************************************************************************
- * structure M4OSA_FileReaderRam_Context
- * @brief This structure defines the File reader in Ram context (private)
- * @note This structure is used for all File Reader calls to store the context
- ******************************************************************************
-*/
-typedef struct
-{
- M4OSA_MemAddr8 pFileDesc; /* Pointer on file data */
- M4OSA_UInt32 dataSize; /* Size of data to read */
- M4OSA_UInt32 dataOffset; /* Actual offset */
- M4OSA_Bool IsOpened; /* Micro state machine */
-} M4OSA_FileReaderRam_Context;
-
-/**
- ******************************************************************************
- * @brief This function sets the read pointer at the provided adress and
- * returns a context.
- * If an error occured, the context is set to NULL.
- * @param context: (OUT) Context of the core file reader
- * @param url: (IN) URL of the input file
- * @param fileModeAccess: (IN) File mode access
- * @return M4NO_ERROR: there is no error
- * @return M4ERR_PARAMETER: at least one parameter is NULL
- * @return M4ERR_ALLOC: there is no more memory available
- * @return M4ERR_NOT_IMPLEMENTED: the URL does not match with the supported
- * file
- * @return M4ERR_FILE_NOT_FOUND: the file cannot be found
- * @return M4ERR_FILE_LOCKED: the file is locked by an other
- * application/process
- * @return M4ERR_FILE_BAD_MODE_ACCESS: the file mode access is not correct
- ******************************************************************************
-*/
-M4OSA_ERR M4OSA_fileReadRamOpen( M4OSA_Context* context,
- M4OSA_Void* fileDescriptor,
- M4OSA_UInt32 fileModeAccess )
-{
- M4OSA_FileReaderRam_Context* pContext=M4OSA_NULL;
- M4OSA_FileReaderRam_Descriptor* pDescriptor=fileDescriptor;
- M4OSA_ERR err = M4NO_ERROR;
-
- M4OSA_TRACE3_3("M4OSA_fileReadRamOpen\t\tM4OSA_Context* 0x%x\tM4OSA_Void* 0x%x"
- "\tM4OSA_UInt32 %d", context, fileDescriptor,
- fileModeAccess);
-
- /* Check input parameters */
- if(M4OSA_NULL == context)
- {
- return M4ERR_PARAMETER;
- }
- *context = M4OSA_NULL;
- if(M4OSA_NULL == fileDescriptor)
- {
- return M4ERR_PARAMETER;
- }
-
- /* Allocates memory for the context */
- pContext = (M4OSA_FileReaderRam_Context*)M4OSA_32bitAlignedMalloc(sizeof(M4OSA_FileReaderRam_Context),
- M4OSA_FILE_READER, (M4OSA_Char*)"Context allocation");
- if(pContext == M4OSA_NULL)
- {
- return M4ERR_ALLOC;
- }
-
- /* Verify access mode */
- if (((fileModeAccess & M4OSA_kFileAppend) != 0)
- ||(0 == (fileModeAccess & M4OSA_kFileRead)))
- {
- err=M4ERR_FILE_BAD_MODE_ACCESS;
- goto cleanup;
- }
-
- /* Open file in read mode and in binary/text mode with/without creation right */
- if((fileModeAccess & M4OSA_kFileCreate) != 0)
- {
- err=M4ERR_FILE_BAD_MODE_ACCESS;
- }
- else
- {
- if ((fileModeAccess & M4OSA_kFileRead))
- {
- pContext->pFileDesc = (M4OSA_MemAddr8)(pDescriptor->pFileDesc);
- pContext->dataSize = (M4OSA_Int32)(pDescriptor->dataSize);
- pContext->dataOffset = 0;
- pContext->IsOpened = M4OSA_TRUE;
- }
- else
- {
- err=M4ERR_FILE_BAD_MODE_ACCESS;
- }
- }
-
-cleanup:
- if(err != M4NO_ERROR)
- {
- if(pContext != M4OSA_NULL)
- {
- free(pContext);
- *context = M4OSA_NULL;
- }
- }
- else
- {
- *context = pContext;
- }
- return err;
-}
-
-/**
- ******************************************************************************
- * @brief This function reads the 'size' bytes in memory
- * (selected by its 'context') and writes the data to the 'data'
- * pointer.
- * @note If 'size' byte cannot be read in the core file reader, 'size'
- * parameter is updated to match the correct
- * number of read bytes.
- * @param context: (IN/OUT) Context of the core file reader
- * @param data: (OUT) Data pointer of the read data
- * @param size: (IN/OUT) Size of the data to read (in bytes)
- * @return M4NO_ERROR: there is no error
- * @return M4ERR_PARAMETER: at least one parameter is NULL
- * @return M4ERR_BAD_CONTEXT: provided context is not a valid one
- * @return M4ERR_ALLOC: there is no more memory available
- * @return M4WAR_NO_DATA_YET: there is no enough data to fill the 'data'
- * buffer, so the size parameter has been updated.
- ******************************************************************************
-*/
-M4OSA_ERR M4OSA_fileReadRamData( M4OSA_Context context, M4OSA_MemAddr8 data,
- M4OSA_UInt32* pSize )
-{
- M4OSA_FileReaderRam_Context* pContext=(M4OSA_FileReaderRam_Context*)context;
- M4OSA_UInt32 aSize = *pSize;
- M4OSA_ERR err = M4NO_ERROR;
-
- /* Check input parameters */
- if(context == M4OSA_NULL || data == M4OSA_NULL || pSize == M4OSA_NULL)
- {
- return M4ERR_PARAMETER;
- }
- if (pContext->IsOpened != M4OSA_TRUE)
- {
- return M4ERR_BAD_CONTEXT;
- }
-
- /* Check if there is enough data to read or not */
- if((pContext->dataOffset + aSize) > pContext->dataSize)
- {
- aSize = pContext->dataSize - pContext->dataOffset;
- M4OSA_memcpy(data, (pContext->pFileDesc + pContext->dataOffset), aSize);
- *pSize = aSize;
- err = M4WAR_NO_DATA_YET;
- }
- else
- {
- M4OSA_memcpy(data, (pContext->pFileDesc + pContext->dataOffset), aSize);
- err = M4NO_ERROR;
- }
-
- pContext->dataOffset += aSize;
- return err;
-}
-
-/**
- ******************************************************************************
- * @brief This function seeks at the provided position in the core file
- * reader (selected by its 'context'). The position is related to
- * the seekMode parameter it can be either from the beginning, from
- * the end or from the current postion.
- * @note If this function returns an error the current position pointer
- * in the file must not change. Else the current
- * position pointer must be updated.
- * @param context: (IN/OUT) Context of the core file reader
- * @param seekMode: (IN) Seek access mode
- * @param position: (IN/OUT) Position in the file
- * @return M4NO_ERROR: there is no error
- * @return M4ERR_PARAMETER: at least one parameter is NULL
- * @return M4ERR_BAD_CONTEXT: provided context is not a valid one
- * @return M4ERR_ALLOC: there is no more memory available
- * @return M4ERR_FILE_INVALID_POSITION: the position cannot be reached
- ******************************************************************************
-*/
-M4OSA_ERR M4OSA_fileReadRamSeek( M4OSA_Context context,
- M4OSA_FileSeekAccessMode seekMode,
- M4OSA_FilePosition* position )
-{
- M4OSA_FileReaderRam_Context* pContext=(M4OSA_FileReaderRam_Context*)context;
- M4OSA_ERR err = M4NO_ERROR;
-
- /* Check input parameters */
- if(context == M4OSA_NULL || seekMode == M4OSA_NULL || position == M4OSA_NULL)
- {
- return M4ERR_PARAMETER;
- }
- if (pContext->IsOpened != M4OSA_TRUE)
- {
- return M4ERR_BAD_CONTEXT;
- }
-
- /* */
- switch(seekMode)
- {
- case M4OSA_kFileSeekBeginning:
- /* Check if position is reachable and update dataOffset */
- if(((M4OSA_UInt32)(*position) <= pContext->dataSize) && (*position >= 0))
- {
- pContext->dataOffset = *position;
- *position = pContext->dataOffset;
- err = M4NO_ERROR;
- }
- else
- {
- err = M4ERR_FILE_INVALID_POSITION;
- }
- break;
-
- case M4OSA_kFileSeekEnd:
- /* Check if position is reachable and update dataOffset */
- if(((M4OSA_Int32)(pContext->dataSize) + *position >= 0) && (*position <= 0))
- {
- pContext->dataOffset = pContext->dataSize + *position;
- *position = pContext->dataOffset;
- err = M4NO_ERROR;
- }
- else
- {
- err = M4ERR_FILE_INVALID_POSITION;
- }
- break;
-
- case M4OSA_kFileSeekCurrent:
- /* Check if position is reachable and update dataOffset */
- if((*position + (M4OSA_Int32)(pContext->dataOffset) >= 0) &&
- (*position + (M4OSA_Int32)(pContext->dataOffset) <=
- (M4OSA_Int32)pContext->dataSize))
- {
- pContext->dataOffset += *position;
- *position = pContext->dataOffset;
- err = M4NO_ERROR;
- }
- else
- {
- err = M4ERR_FILE_INVALID_POSITION;
- }
- break;
-
- default:
- err = M4ERR_PARAMETER;
- break;
- }
-
- return err;
-}
-
-/**
- ******************************************************************************
- * @brief This function asks the core file reader to close the file
- * (associated to the context).
- * @note The context of the core file reader is freed.
- * @param context: (IN/OUT) Context of the core file reader
- * @return M4NO_ERROR: there is no error
- * @return M4ERR_PARAMETER: at least one parameter is NULL
- * @return M4ERR_BAD_CONTEXT: provided context is not a valid one
- * @return M4ERR_ALLOC: there is no more memory available
- ******************************************************************************
-*/
-M4OSA_ERR M4OSA_fileReadRamClose(M4OSA_Context context)
-{
- M4OSA_FileReaderRam_Context* pContext=(M4OSA_FileReaderRam_Context*)context;
-
- /* Check input parameters */
- if(context == M4OSA_NULL)
- {
- return M4ERR_PARAMETER;
- }
- if (pContext->IsOpened != M4OSA_TRUE)
- {
- return M4ERR_BAD_CONTEXT;
- }
-
- pContext->IsOpened = M4OSA_FALSE;
-
- free(pContext);
-
- return M4NO_ERROR;
-}
-
-/**
- ******************************************************************************
- * @brief This function asks the core file reader to return the value
- * associated with the optionID. The caller is responsible for
- * allocating/de-allocating the memory of the value field.
- * @note 'value' must be cast according to the type related to the
- * optionID As the caller is responsible for
- * allocating/de-allocating the 'value' field, the callee must copy
- * this field to its internal variable.
- * @param context: (IN/OUT) Context of the core file reader
- * @param optionID: (IN) ID of the option
- * @param value: (OUT) Value of the option
- * @return M4NO_ERROR: there is no error
- * @return M4ERR_PARAMETER: at least one parameter is NULL
- * @return M4ERR_BAD_CONTEXT: provided context is not a valid one
- * @return M4ERR_BAD_OPTION_ID: the optionID is not a valid one
- * @return M4ERR_NOT_IMPLEMENTED: this option is not implemented
- ******************************************************************************
-*/
-M4OSA_ERR M4OSA_fileReadRamGetOption( M4OSA_Context context,
- M4OSA_FileReadOptionID optionID,
- M4OSA_DataOption* optionValue )
-{
- M4OSA_FileReaderRam_Context* pContext=(M4OSA_FileReaderRam_Context*)context;
- M4OSA_ERR err=M4NO_ERROR;
-
- /* Check input parameters */
- if(context == M4OSA_NULL)
- {
- return M4ERR_PARAMETER;
- }
- if (pContext->IsOpened != M4OSA_TRUE)
- {
- return M4ERR_BAD_CONTEXT;
- }
-
- switch(optionID)
- {
- case M4OSA_kFileReadGetFileSize:
- (*(M4OSA_UInt32 *)optionValue) = (pContext->dataSize);
- break;
-
- case M4OSA_kFileReadIsEOF:
- if(pContext->dataOffset == pContext->dataSize)
- {
- (*(M4OSA_UInt8 *)optionValue) = M4OSA_TRUE;
- }
- else
- {
- (*(M4OSA_UInt8 *)optionValue) = M4OSA_FALSE;
- }
- break;
-
- case M4OSA_kFileReadGetFileAttribute:
- err = M4ERR_NOT_IMPLEMENTED;
- break;
-
- case M4OSA_kFileReadGetURL:
- err = M4ERR_NOT_IMPLEMENTED;
- break;
-
- case M4OSA_kFileReadGetFilePosition :
- (*(M4OSA_UInt32 *)optionValue) = pContext->dataOffset;
- break;
-
- default:
- err = M4ERR_BAD_OPTION_ID;
- M4OSA_TRACE1_1("M4OSA_fileReadRamGetOption invalid option ID 0x%x",
- optionID);
- break;
- }
-
- return err;
-}
-
-/**
- ***************************************************************************
- * @fn M4OSA_ERR M4OSA_fileReadSetOption (M4OSA_Context context,
- * M4OSA_OptionID optionID,
- * M4OSA_DataOption optionValue))
- * @brief This function asks the core file reader to set the value associated with the optionID.
- * The caller is responsible for allocating/de-allocating the memory of the value field.
- * @note As the caller is responsible for allocating/de-allocating the 'value' field, the callee must copy this field
- * to its internal variable.
- * @param context: (IN/OUT) Context of the core file reader
- * @param optionID: (IN) ID of the option
- * @param value: (IN) Value of the option
- * @return M4NO_ERROR: there is no error
- * @return M4ERR_PARAMETER: at least one parameter is NULL
- * @return M4ERR_BAD_CONTEXT: provided context is not a valid one
- * @return M4ERR_BAD_OPTION_ID: the optionID is not a valid one
- * @return M4ERR_READ_ONLY: this option is a read only one
- * @return M4ERR_NOT_IMPLEMENTED: this option is not implemented
- ***************************************************************************
-*/
-M4OSA_ERR M4OSA_fileReadRamSetOption( M4OSA_Context context,
- M4OSA_FileReadOptionID optionID,
- M4OSA_DataOption optionValue )
-{
- return M4ERR_NOT_IMPLEMENTED;
-}
-
diff --git a/libvideoeditor/osal/src/M4OSA_FileWriter_RAM.c b/libvideoeditor/osal/src/M4OSA_FileWriter_RAM.c
deleted file mode 100755
index 4a8ff6f..0000000
--- a/libvideoeditor/osal/src/M4OSA_FileWriter_RAM.c
+++ /dev/null
@@ -1,448 +0,0 @@
-/*
- * Copyright (C) 2004-2011 NXP Software
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-/**
- ******************************************************************************
- * @file M4OSA_FileReaderRam.c
-
- * @brief File reader from RAM
- * @note This file implements functions to read a "file" stored in RAM.
-******************************************************************************
-*/
-
-#include "M4OSA_Debug.h"
-#include "M4OSA_FileWriterRam.h"
-#include "M4OSA_FileReaderRam.h"
-#include "M4OSA_Memory.h"
-
-
-/**
- ******************************************************************************
- * structure M4OSA_FileWriteRam_Context
- * @brief This structure defines the File writer context (private)
- * @note This structure is used for all File writer calls to store the context
- ******************************************************************************
-*/
-typedef struct
-{
- M4OSA_MemAddr8 pFileDesc; /* Pointer on file data */
- M4OSA_UInt32 dataSize; /* Size of data to write */
- M4OSA_UInt32 dataOffset; /* Actual offset */
- M4OSA_Bool IsOpened; /* Micro state machine */
- M4OSA_UInt32 bufferSize; /* Actual used size inside the buffer */
-} M4OSA_FileWriterRam_Context;
-
-
-/**
- ******************************************************************************
- * @brief This method "opens" the provided fileDescriptor (in fact address)
- * and returns its context.
- * @param pContext: (OUT) File writer context.
- * @param pFileDescriptor : (IN) File Descriptor of the input file.
- * @param FileModeAccess : (IN) File mode access.
- * @return M4NO_ERROR: there is no error
- * @return M4ERR_PARAMETER pContext or fileDescriptor is NULL
- * @return M4ERR_ALLOC there is no more memory available
- * @return M4ERR_FILE_BAD_MODE_ACCESS the file mode access is not correct
- * @return M4ERR_FILE_NOT_FOUND The file can not be opened.
- ******************************************************************************
-*/
-M4OSA_ERR M4OSA_fileWriteRamOpen(M4OSA_Context* context, M4OSA_Void* fileDescriptor,
- M4OSA_UInt32 fileModeAccess)
-{
- M4OSA_FileWriterRam_Context* pContext=M4OSA_NULL;
- M4OSA_FileWriterRam_Descriptor* pDescriptor = fileDescriptor;
- M4OSA_Int32 aFileDesc=-1;
- M4OSA_ERR err=M4NO_ERROR;
-
- /* Check input parameters */
- if(context == M4OSA_NULL)
- {
- return M4ERR_PARAMETER;
- }
- *context = M4OSA_NULL;
- if(fileDescriptor == M4OSA_NULL)
- {
- return M4ERR_PARAMETER;
- }
-
- /* Allocate memory for the File writer context. */
- pContext = (M4OSA_FileWriterRam_Context *)M4OSA_32bitAlignedMalloc(sizeof(M4OSA_FileWriterRam_Context),
- M4OSA_FILE_WRITER, (M4OSA_Char*)"Context allocation");
- if(pContext == M4OSA_NULL)
- {
- return M4ERR_ALLOC;
- }
-
- if ((fileModeAccess & M4OSA_kFileWrite))
- {
- pContext->pFileDesc = (M4OSA_MemAddr8)(pDescriptor->pFileDesc);
- pContext->dataSize = (M4OSA_Int32)(pDescriptor->dataSize);
- pContext->dataOffset = 0;
- pContext->bufferSize = 0;
- pContext->IsOpened = M4OSA_TRUE;
- }
- else
- {
- err = M4ERR_FILE_BAD_MODE_ACCESS;
- }
- if (M4NO_ERROR != err)
- {
- if (M4OSA_NULL != pContext)
- {
- free(pContext);
- }
- *context=M4OSA_NULL;
- }
- else
- {
- *context = pContext;
- }
-
- return err;
-}
-
-/**
- ******************************************************************************
- * @brief This method writes the 'size' bytes stored at 'data' memory at the end
- * of the file selected by its context.
- * The caller is responsible for allocating/de-allocating the memory for 'data' parameter.
- * Moreover, the data pointer must be allocated to store at least 'size' bytes.
- * @param pContext: (IN) File writer context.
- * @param pData : (IN) Data pointer of the written data.
- * @param Size : (IN) Size of the data to write (in bytes).
- * @return M4NO_ERROR: there is no error
- * @return M4ERR_PARAMETER pData is NULL
- * @return M4ERR_ALLOC there is no more memory available
- * @return M4ERR_BAD_CONTEXT provided context is not a valid one.
- ******************************************************************************
-*/
-M4OSA_ERR M4OSA_fileWriteRamData(M4OSA_Context context,M4OSA_MemAddr8 data, M4OSA_UInt32 Size)
-{
- M4OSA_FileWriterRam_Context* pContext=(M4OSA_FileWriterRam_Context*)context;
- M4OSA_ERR err=M4NO_ERROR;
-
- /* Check input parameters */
- if(context == M4OSA_NULL || data == M4OSA_NULL)
- {
- return M4ERR_PARAMETER;
- }
-
- if (pContext->IsOpened != M4OSA_TRUE)
- {
- return M4ERR_BAD_CONTEXT; /* The context can not be correct */
- }
-
- /* Check if there is enough room to write or not */
- if (pContext->dataOffset + Size < pContext->dataSize )
- {
- M4OSA_memcpy((pContext->pFileDesc + pContext->dataOffset), data, Size);
- pContext->dataOffset += Size;
- if(pContext->dataOffset> pContext->bufferSize) pContext->bufferSize = pContext->dataOffset;
- err = M4NO_ERROR;
- }
- else
- {
- err = M4ERR_FILE_INVALID_POSITION;
- }
-
- return err;
-}
-
-/**
- ******************************************************************************
- * @brief This method seeks at the provided position in the core file writer (selected by its 'context').
- * The position is related to the seekMode parameter it can be either :
- * From the beginning (position MUST be positive) : end position = position
- * From the end (position MUST be negative) : end position = file size + position
- * From the current position (signed offset) : end position = current position + position.
- * @param pContext: (IN) File reader context.
- * @param SeekMode : (IN) Seek access mode.
- * @param pPosition : (IN) Position in the file.
- * @return M4NO_ERROR: there is no error
- * @return M4ERR_PARAMETER Seekmode or fileDescriptor is NULL
- * @return M4ERR_ALLOC there is no more memory available
- * @return M4ERR_BAD_CONTEXT provided context is not a valid one.
- * @return M4ERR_FILE_INVALID_POSITION the position cannot be reached.
- ******************************************************************************
-*/
-M4OSA_ERR M4OSA_fileWriteRamSeek(M4OSA_Context context, M4OSA_FileSeekAccessMode SeekMode,
- M4OSA_FilePosition* position)
-{
- M4OSA_FileWriterRam_Context* pContext=(M4OSA_FileWriterRam_Context*)context;
- M4OSA_ERR err=M4NO_ERROR;
-
- /* Check input parameters */
- if(context == M4OSA_NULL || SeekMode == M4OSA_NULL || position == M4OSA_NULL)
- {
- return M4ERR_PARAMETER;
- }
-
- if (pContext->IsOpened != M4OSA_TRUE)
- {
- return M4ERR_BAD_CONTEXT; /* The context can not be correct */
- }
-
- /* Go to the desired position */
- switch(SeekMode)
- {
- case M4OSA_kFileSeekBeginning:
- /* Check if position is reachable and update dataOffset */
- if (((*position) >= 0) && ((M4OSA_UInt32)(*position) <= pContext->dataSize))
- {
- pContext->dataOffset = *position;
- err = M4NO_ERROR;
- }
- else
- {
- err = M4ERR_FILE_INVALID_POSITION;
- }
- break;
-
- case M4OSA_kFileSeekEnd:
- /* Check if position is reachable and update dataOffset */
- if ((*position) < 0)
- {
- if (pContext->dataSize >= (M4OSA_UInt32)(-(*position)))
- {
- pContext->dataOffset = (M4OSA_UInt32) (pContext->pFileDesc + pContext->dataSize + (*position));
- err = M4NO_ERROR;
- }
- else
- {
- err = M4ERR_FILE_INVALID_POSITION;
- }
- }
- else if ((*position) == 0)
- {
- pContext->dataOffset = (M4OSA_UInt32)(pContext->pFileDesc + pContext->dataSize);
- err = M4NO_ERROR;
- }
- else
- {
- err = M4ERR_FILE_INVALID_POSITION;
- }
- break;
-
- case M4OSA_kFileSeekCurrent:
- /* Check if position is reachable and update dataOffset */
- if ((*position) < 0)
- {
- if (pContext->dataOffset >= (M4OSA_UInt32)(-(*position)))
- {
- pContext->dataOffset = (M4OSA_UInt32) (pContext->dataOffset + (*position));
- err = M4NO_ERROR;
- }
- else
- {
- err = M4ERR_FILE_INVALID_POSITION;
- }
- }
- else
- {
- if (pContext->dataSize >= (M4OSA_UInt32)(pContext->dataOffset + (*position)))
- {
- pContext->dataOffset = (M4OSA_UInt32) (pContext->dataOffset + (*position));
- err = M4NO_ERROR;
- }
- else
- {
- err = M4ERR_FILE_INVALID_POSITION;
- }
- }
- break;
-
- default:
- err = M4ERR_PARAMETER;
- break;
- }
-
- return err;
-}
-
-/**
- ******************************************************************************
- * @brief This method asks the core file writer to close the file (associated to the context).
- * The context of the core file reader must be freed.
- * @param pContext: (IN) File reader context.
- * @return M4NO_ERROR: there is no error
- * @return M4ERR_BAD_CONTEXT provided context is not a valid one.
- ******************************************************************************
-*/
-M4OSA_ERR M4OSA_fileWriteRamClose(M4OSA_Context context)
-{
- M4OSA_FileWriterRam_Context* pContext=(M4OSA_FileWriterRam_Context*)context;
- M4OSA_ERR err=M4NO_ERROR;
-
- /* Check input parameters */
- if(pContext == M4OSA_NULL)
- {
- return M4ERR_PARAMETER;
- }
-
- if (pContext->IsOpened != M4OSA_TRUE)
- {
- return M4ERR_BAD_CONTEXT; /* The context can not be correct */
- }
-
- pContext->IsOpened = M4OSA_FALSE;
-
- /* Free the context */
- free(pContext);
-
- /* Return error */
- return err;
-}
-
-/**
- ******************************************************************************
- * @brief This method asks the core file writer to flush the pending data
- * to the file (associated to the context).
- * All pending written data are written in the file.
- * @param pContext: (IN) File reader context.
- * @return M4NO_ERROR: there is no error
- * @return M4ERR_BAD_CONTEXT provided context is not a valid one.
- ******************************************************************************
-*/
-M4OSA_ERR M4OSA_fileWriteRamFlush(M4OSA_Context context)
-{
- M4OSA_FileWriterRam_Context* pContext=(M4OSA_FileWriterRam_Context*)context;
-
- /* Check input parameters */
- if(context == M4OSA_NULL)
- {
- return M4ERR_PARAMETER;
- }
-
- if (pContext->IsOpened != M4OSA_TRUE)
- {
- return M4ERR_BAD_CONTEXT; /* The context can not be correct */
- }
-
- /*
- * DO NOTHING */
-
- /**
- * Return without error */
- return M4NO_ERROR;
-}
-
-/**
- ******************************************************************************
- * @brief This method asks the core file writer to set the value associated with the optionID.
- * The caller is responsible for allocating/de-allocating the memory of the value field.
- * @note The options handled by the component depend on the implementation of the component.
- * @param pContext: (IN) Execution context.
- * @param OptionId : (IN) Id of the option to set.
- * @param OptionValue : (IN) Value of the option.
- * @return M4NO_ERROR: there is no error
- * @return M4ERR_BAD_CONTEXT pContext is NULL
- * @return M4ERR_READ_ONLY The option is not implemented yet.
- * @return M4ERR_BAD_OPTION_ID the option id is not valid.
- * @return M4ERR_NOT_IMPLEMENTED The option is not implemented yet.
- ******************************************************************************
-*/
-M4OSA_ERR M4OSA_fileWriteRamSetOption(M4OSA_Context context,
- M4OSA_OptionID OptionID,
- M4OSA_DataOption OptionValue)
-{
- M4OSA_FileWriterRam_Context* pContext=(M4OSA_FileWriterRam_Context*)context;
-
- /* Check input parameters */
- if(context == M4OSA_NULL)
- {
- return M4ERR_PARAMETER;
- }
-
- if (pContext->IsOpened != M4OSA_TRUE)
- {
- return M4ERR_BAD_CONTEXT; /**< The context can not be correct */
- }
-
- /* Set the desired option if it is avalaible */
- switch(OptionID)
- {
- case M4OSA_kFileWriteGetReaderContext : /* Get the file attribute*/
- case M4OSA_kFileWriteGetURL : /* Get the directory + name of the file */
- case M4OSA_kFileWriteGetFilePosition : /* Get file position */
- return M4ERR_READ_ONLY;
- break;
-
- case M4OSA_kFileWriteGetAttribute :
- /**
- * Get the reader context for read & write file. It is NULL if the file is opened
- * with write attribute only */
- return M4ERR_NOT_IMPLEMENTED;
-
- default : /* Bad option ID */
- return M4ERR_BAD_OPTION_ID;
- }
-
- /* Return without error */
- return M4NO_ERROR;
-}
-
-/**
- ******************************************************************************
- * @brief This method asks the core file reader to return the value associated with the optionID.
- * The caller is responsible for allocating/de-allocating the memory of the value field.
- * @note The options handled by the component depend on the implementation of the component.
- * @param pContext: (IN) Execution context.
- * @param OptionId : (IN) Id of the option to set.
- * @param pOptionValue : (OUT) Value of the option.
- * @return M4NO_ERROR: there is no error
- * @return M4ERR_BAD_CONTEXT pContext is NULL
- * @return M4ERR_BAD_OPTION_ID the option id is not valid.
- * @return M4ERR_ALLOC there is no more memory available
- * @return M4ERR_NOT_IMPLEMENTED The option is not implemented yet.
- ******************************************************************************
-*/
-M4OSA_ERR M4OSA_fileWriteRamGetOption(M4OSA_Context context,
- M4OSA_OptionID OptionID,
- M4OSA_DataOption* optionValue)
-{
- M4OSA_FileWriterRam_Context* pContext=(M4OSA_FileWriterRam_Context*)context;
- M4OSA_ERR err=M4NO_ERROR;
-
- /* Check input parameters */
- if(context == M4OSA_NULL)
- {
- return M4ERR_PARAMETER;
- }
-
- if (pContext->IsOpened != M4OSA_TRUE)
- {
- return M4ERR_BAD_CONTEXT; /**< The context can not be correct */
- }
-
- /* Get the desired option if it is avalaible */
- switch(OptionID)
- {
- case M4OSA_kFileWriteGetFileSize:/* Get size of the file, limited to 32 bit size */
- (*(M4OSA_UInt32 *)optionValue) = (pContext->bufferSize);
- break;
-
- case M4OSA_kFileWriteGetURL : /* Get the directory + name of the file */
- return M4ERR_NOT_IMPLEMENTED;
-
- default : /**< Bad option ID */
- return M4ERR_BAD_OPTION_ID;
- break;
- }
-
- /* Return without error */
- return err;
-}
diff --git a/libvideoeditor/osal/src/M4OSA_String.c b/libvideoeditor/osal/src/M4OSA_String.c
deleted file mode 100755
index 7cf7801..0000000
--- a/libvideoeditor/osal/src/M4OSA_String.c
+++ /dev/null
@@ -1,2417 +0,0 @@
-/*
- * Copyright (C) 2004-2011 NXP Software
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-/**
- ************************************************************************
- * @file M4OSA_String.c
- ************************************************************************
-*/
-
-#include "M4OSA_Debug.h"
-#include "M4OSA_Memory.h"
-#include "M4OSA_Types.h"
-#include "M4OSA_Error.h"
-#include "M4OSA_CharStar.h"
-#include "M4OSA_FileCommon.h"
-#include "M4OSA_String_priv.h"
-#include "M4OSA_String.h"
-
-
-/**
- ************************************************************************
- * @brief This function creates an empty M4OSA_String
- * @note
- * @param pStrOut
- * @return M4OSA_ERROR
- ************************************************************************
-*/
-M4OSA_ERR M4OSA_strCreate(M4OSA_String* pStrOut)
-{
- M4OSA_strStruct* pStr = M4OSA_NULL;
-
- M4OSA_TRACE1_1("M4OSA_strCreate\t\tM4OSA_String* 0x%x", pStrOut);
-
- M4OSA_DEBUG_IF2(M4OSA_NULL == pStrOut, M4ERR_PARAMETER, "M4OSA_strCreate");
- M4OSA_DEBUG_IF2(M4OSA_NULL != *pStrOut, M4ERR_STR_BAD_STRING,
- "M4OSA_strCreate");
-
- /* Allocate the output M4OSA_String */
- pStr = (M4OSA_strStruct*)M4OSA_32bitAlignedMalloc(sizeof(M4OSA_strStruct), M4OSA_STRING,
- (M4OSA_Char*)"M4OSA_strPrivCreate: output string");
-
- /* Check memory allocation error */
- if(M4OSA_NULL == pStr)
- {
- *pStrOut = M4OSA_NULL ;
-
- M4OSA_DEBUG(M4ERR_ALLOC, "M4OSA_strPrivCreate");
-
- return M4ERR_ALLOC;
- }
-
- pStr->coreID = M4OSA_STRING;
- pStr->pui8_buffer = M4OSA_NULL;
- pStr->ui32_length = 0;
- pStr->ui32_size = 0;
-
- *pStrOut = pStr;
-
- return M4NO_ERROR;
-}
-
-
-
-
-/**
- ************************************************************************
- * @brief This function reset the M4OSA_String
- * @note
- * @param str_in
- * @return M4OSA_ERROR
- ************************************************************************
- */
-M4OSA_ERR M4OSA_strReset(M4OSA_String str_in)
-{
- M4OSA_strStruct* pStr = (M4OSA_strStruct*)str_in;
- M4OSA_Char* pBuffer;
-
- M4OSA_TRACE1_1("M4OSA_strReset\t\tM4OSA_String* 0x%x", str_in);
-
- M4OSA_DEBUG_IF2(M4OSA_NULL == pStr, M4ERR_PARAMETER, "M4OSA_strReset");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pStr->coreID, M4ERR_STR_BAD_STRING,
- "M4OSA_strReset");
-
- pBuffer = pStr->pui8_buffer;
-
- if(M4OSA_NULL != pBuffer)
- {
- free(pBuffer);
-
- pStr->pui8_buffer = M4OSA_NULL;
- }
-
- pStr->ui32_length = 0;
- pStr->ui32_size = 0;
-
-
- return M4NO_ERROR;
-}
-
-
-
-
-/**
- ************************************************************************
- * @brief This function free the memory of the input M4OSA_String
- * @note
- * @param str_in
- * @return M4OSA_ERROR
- ************************************************************************
- */
-M4OSA_ERR M4OSA_strDestroy(M4OSA_String str_in)
-{
- M4OSA_strStruct* pStr = (M4OSA_strStruct*)str_in;
-
- M4OSA_TRACE1_1("M4OSA_strDestroy\t\tM4OSA_String 0x%x", str_in);
-
- M4OSA_DEBUG_IF2(M4OSA_NULL == pStr, M4ERR_PARAMETER, "M4OSA_strDestroy");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pStr->coreID, M4ERR_STR_BAD_STRING,
- "M4OSA_strDestroy");
-
-
- /* Free M4OSA_String buffer */
- free((pStr->pui8_buffer));
-
- /* Free M4OSA_String structure memory */
- free(pStr);
-
-
- return M4NO_ERROR;
-}
-
-
-
-
-/**
- ************************************************************************
- * @brief str_in content
- * @note
- * @param str_in
- * @param pChar
- * @return M4OSA_ERROR
- ************************************************************************
- */
-M4OSA_ERR M4OSA_strSetCharContent(M4OSA_String str_in, M4OSA_Char *pChar)
-{
- M4OSA_strStruct* pStr = (M4OSA_strStruct*)str_in;
-
- M4OSA_TRACE1_2("M4OSA_strSetContent\t\tM4OSA_String 0x%x\tM4OSA_Char*"
- " 0x%x", str_in, pChar);
-
- M4OSA_DEBUG_IF2(M4OSA_NULL == pStr, M4ERR_PARAMETER, "M4OSA_strSetContent");
- M4OSA_DEBUG_IF2(M4OSA_NULL == pChar, M4ERR_PARAMETER,
- "M4OSA_strSetContent");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pStr->coreID, M4ERR_STR_BAD_STRING,
- "M4OSA_strSetContent");
-
- return M4OSA_strPrivSet(pStr, pChar, M4OSA_chrLength(pChar));
-}
-
-
-
-
-/**
- ************************************************************************
-* @brief This function returns, in pac_content, the "C-String" of str_in
- * @note
- * @param str_in
- * @param pac_content
- * @return M4OSA_ERROR
- ************************************************************************
-*/
-M4OSA_ERR M4OSA_strGetCharContent(M4OSA_String str_in, M4OSA_Char** ppchar)
-{
- M4OSA_strStruct* pStr = (M4OSA_strStruct*)str_in;
-
- M4OSA_TRACE1_2("M4OSA_strGetContent\t\tM4OSA_String 0x%x\tM4OSA_Char**"
- " 0x%x", str_in, ppchar);
-
- M4OSA_DEBUG_IF2(M4OSA_NULL == pStr, M4ERR_PARAMETER, "M4OSA_strGetContent");
- M4OSA_DEBUG_IF2(M4OSA_NULL == ppchar, M4ERR_PARAMETER,
- "M4OSA_strGetContent");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pStr->coreID, M4ERR_STR_BAD_STRING,
- "M4OSA_strGetContent");
-
- *ppchar = pStr->pui8_buffer;
-
-
- return M4NO_ERROR;
-}
-
-M4OSA_ERR M4OSA_strSetChar(M4OSA_String str_in, M4OSA_Char c_in)
-{
- M4OSA_strStruct* pStr = (M4OSA_strStruct*)str_in;
- M4OSA_ERR err;
-
- M4OSA_TRACE1_2("M4OSA_strSetChar\t\tM4OSA_String 0x%x\tM4OSA_Char %c",
- str_in, c_in);
-
- M4OSA_DEBUG_IF2(M4OSA_NULL == pStr, M4ERR_PARAMETER, "M4OSA_strSetChar");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pStr->coreID, M4ERR_STR_BAD_STRING,
- "M4OSA_strSetChar");
-
-
- err = M4OSA_strPrivRealloc(pStr, 1);
-
- if(M4OSA_ERR_IS_ERROR(err))
- {
- return err;
- }
-
- pStr->pui8_buffer[0] = c_in;
- pStr->pui8_buffer[1] = '\0';
- pStr->ui32_length = 1;
-
-
- return M4NO_ERROR;
-}
-
-
-
-
-M4OSA_ERR M4OSA_strGetChar(M4OSA_String str_in, M4OSA_Char* pc_out)
-{
- M4OSA_strStruct* pStr = (M4OSA_strStruct*)str_in;
-
- M4OSA_TRACE1_2("M4OSA_strGetChar\t\tM4OSA_String 0x%x\tM4OSA_Char* 0x%x",
- str_in, pc_out);
-
- M4OSA_DEBUG_IF2(M4OSA_NULL == pc_out, M4ERR_PARAMETER, "M4OSA_strGetChar");
- M4OSA_DEBUG_IF2(M4OSA_NULL == pStr, M4ERR_PARAMETER, "M4OSA_strGetChar");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pStr->coreID, M4ERR_STR_BAD_STRING,
- "M4OSA_strGetChar");
-
- if(pStr->ui32_length == 0)
- {
- return M4ERR_STR_CONV_FAILED;
- }
-
- *pc_out = pStr->pui8_buffer[0];
-
-
- return M4NO_ERROR;
-}
-
-M4OSA_ERR M4OSA_strSetInt8(M4OSA_String str_in, M4OSA_Int8 i8_in,
- M4OSA_strNumBase base)
-{
- M4OSA_strStruct* pStr = (M4OSA_strStruct*)str_in;
- M4OSA_UInt32 ui32_length;
- M4OSA_Char aui8_buffer[8];
- M4OSA_ERR err_code;
-
- M4OSA_TRACE1_2("M4OSA_strSetInt8\t\tM4OSA_String 0x%x\tM4OSA_Int8 %d",
- str_in, i8_in);
-
- M4OSA_DEBUG_IF2(M4OSA_NULL == pStr, M4ERR_PARAMETER, "M4OSA_strSetInt8");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pStr->coreID, M4ERR_STR_BAD_STRING,
- "M4OSA_strSetInt8");
-
-
- /* Convert input number into "C-String" */
- switch(base)
- {
- case M4OSA_kstrDec:
- {
- err_code = M4OSA_chrSPrintf(aui8_buffer, 8, (M4OSA_Char*)"%d", i8_in);
- break;
- }
-
- case M4OSA_kstrHexa:
- {
- if(i8_in < 0)
- {
- err_code = M4OSA_chrSPrintf(aui8_buffer, 8, (M4OSA_Char*)"-%X",
- -i8_in);
- }
- else
- {
- err_code = M4OSA_chrSPrintf(aui8_buffer, 8, (M4OSA_Char*)"%X",
- i8_in);
- }
- break;
- }
-
- case M4OSA_kstrOct:
- {
- if(i8_in < 0)
- {
- err_code = M4OSA_chrSPrintf(aui8_buffer, 8, (M4OSA_Char*)"-%o",
- -i8_in);
- }
- else
- {
- err_code = M4OSA_chrSPrintf(aui8_buffer, 8, (M4OSA_Char*)"%o",
- i8_in);
- }
- break;
- }
-
- default:
- {
- return M4ERR_PARAMETER;
- }
- }
-
-
- if(M4OSA_ERR_IS_ERROR(err_code))
- {
- return err_code;
- }
-
- /* Calculate M4OSA_String content length */
- ui32_length = M4OSA_chrLength(aui8_buffer) ;
-
-
- return M4OSA_strPrivSet(pStr, aui8_buffer, ui32_length);
-}
-
-M4OSA_ERR M4OSA_strGetInt8(M4OSA_String str_in, M4OSA_Int8* pi8_out,
- M4OSA_strNumBase base)
-{
- M4OSA_strStruct* pStr = (M4OSA_strStruct*)str_in;
- M4OSA_ERR err_code;
-
- M4OSA_TRACE1_3("M4OSA_strGetInt8\t\tM4OSA_String 0x%x\tM4OSA_Int8* 0x%x\t"
- "M4OSA_strNumBase %d", str_in, pi8_out, base);
-
- M4OSA_DEBUG_IF2(M4OSA_NULL == pStr, M4ERR_PARAMETER, "M4OSA_strGetInt8");
- M4OSA_DEBUG_IF2(M4OSA_NULL == pi8_out, M4ERR_PARAMETER, "M4OSA_strGetInt8");
- M4OSA_DEBUG_IF2((base != M4OSA_kstrDec) && (base != M4OSA_kstrHexa) &&
- (base != M4OSA_kstrOct), M4ERR_PARAMETER, "M4OSA_strGetInt8");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pStr->coreID,M4ERR_STR_BAD_STRING,
- "M4OSA_strGetInt8");
-
-
- err_code = M4OSA_chrGetInt8(pStr->pui8_buffer, pi8_out, M4OSA_NULL, base);
-
- if(M4NO_ERROR != err_code)
- {
- M4OSA_DEBUG(M4ERR_STR_CONV_FAILED, "M4OSA_strGetInt8");
-
- return M4ERR_STR_CONV_FAILED;
- }
-
-
- return M4NO_ERROR;
-}
-
-
-
-M4OSA_ERR M4OSA_strSetUInt8(M4OSA_String str_in, M4OSA_UInt8 ui8_in,
- M4OSA_strNumBase base)
-{
- M4OSA_strStruct* pStr = (M4OSA_strStruct*)str_in;
- M4OSA_UInt32 ui32_length;
- M4OSA_Char aui8_buffer[4];
- M4OSA_ERR err_code;
- M4OSA_Char* pFormat;
-
- M4OSA_TRACE1_2("M4OSA_strSetUInt8\t\tM4OSA_String* 0x%x\tM4OSA_UInt8 %d",
- str_in, ui8_in);
-
- M4OSA_DEBUG_IF2(M4OSA_NULL == pStr, M4ERR_PARAMETER, "M4OSA_strSetUInt8");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pStr->coreID, M4ERR_STR_BAD_STRING,
- "M4OSA_strSetUInt8");
-
- if (base == M4OSA_kchrDec)
- {
- pFormat = (M4OSA_Char*)"%u";
- }
- else if (base == M4OSA_kchrHexa)
- {
- pFormat = (M4OSA_Char*)"%X";
- }
- else if (base == M4OSA_kchrOct)
- {
- pFormat = (M4OSA_Char*)"%o";
- }
- else
- {
- pFormat = M4OSA_NULL;
- }
-
- /* Convert input number into "C-String" */
- err_code = M4OSA_chrSPrintf(aui8_buffer, 4, pFormat, ui8_in);
-
- if(M4OSA_ERR_IS_ERROR(err_code))
- {
- return err_code;
- }
-
- /* Calculate M4OSA_String content length */
- ui32_length = M4OSA_chrLength(aui8_buffer) ;
-
-
- return M4OSA_strPrivSet(pStr, aui8_buffer, ui32_length);
-}
-
-
-
-M4OSA_ERR M4OSA_strGetUInt8(M4OSA_String str_in,
- M4OSA_UInt8* pui8_out,
- M4OSA_strNumBase base)
-{
- M4OSA_strStruct* pStr = (M4OSA_strStruct*)str_in;
- M4OSA_ERR err_code;
-
- M4OSA_TRACE1_3("M4OSA_strGetUInt8\t\tM4OSA_String 0x%x\tM4OSA_UInt8* 0x%x\t"
- "M4OSA_strNumBase %d", str_in, pui8_out, base);
-
- M4OSA_DEBUG_IF2(M4OSA_NULL == pStr, M4ERR_PARAMETER, "M4OSA_strGetUInt8");
- M4OSA_DEBUG_IF2(M4OSA_NULL == pui8_out, M4ERR_PARAMETER,
- "M4OSA_strGetUInt8");
- M4OSA_DEBUG_IF2((base != M4OSA_kstrDec) && (base != M4OSA_kstrHexa)
- && (base != M4OSA_kstrOct), M4ERR_PARAMETER, "M4OSA_strGetUInt8");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pStr->coreID, M4ERR_STR_BAD_STRING,
- "M4OSA_strGetUInt8");
-
-
- err_code = M4OSA_chrGetUInt8(pStr->pui8_buffer, pui8_out, M4OSA_NULL, base);
-
- if(M4NO_ERROR != err_code)
- {
- M4OSA_DEBUG(M4ERR_STR_CONV_FAILED, "M4OSA_strGetUInt8");
-
- return M4ERR_STR_CONV_FAILED;
- }
-
- return M4NO_ERROR;
-}
-
-
-
-M4OSA_ERR M4OSA_strSetInt16(M4OSA_String str_in, M4OSA_Int16 i16_in,
- M4OSA_strNumBase base)
-{
- M4OSA_strStruct* pStr = (M4OSA_strStruct*)str_in;
- M4OSA_UInt32 ui32_length;
- M4OSA_Char aui8_buffer[8];
- M4OSA_ERR err_code;
-
- M4OSA_TRACE1_2("M4OSA_strSetInt16\t\tM4OSA_String* 0x%x\tM4OSA_Int16 %d",
- str_in, i16_in);
-
- M4OSA_DEBUG_IF2(M4OSA_NULL == pStr, M4ERR_PARAMETER, "M4OSA_strSetInt16");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pStr->coreID, M4ERR_STR_BAD_STRING,
- "M4OSA_strSetInt16");
-
- /* Convert input number into "C-String" */
- switch(base)
- {
- case M4OSA_kstrDec:
- {
- err_code = M4OSA_chrSPrintf(aui8_buffer, 8, (M4OSA_Char*)"%d",
- i16_in);
- break;
- }
-
- case M4OSA_kstrHexa:
- {
- if(i16_in < 0)
- {
- err_code = M4OSA_chrSPrintf(aui8_buffer, 8, (M4OSA_Char*)"-%X",
- -i16_in);
- }
- else
- {
- err_code = M4OSA_chrSPrintf(aui8_buffer, 8, (M4OSA_Char*)"%X",
- i16_in);
- }
- break;
- }
-
- case M4OSA_kstrOct:
- {
- if(i16_in < 0)
- {
- err_code = M4OSA_chrSPrintf(aui8_buffer, 8, (M4OSA_Char*)"-%o",
- -i16_in);
- }
- else
- {
- err_code = M4OSA_chrSPrintf(aui8_buffer, 8, (M4OSA_Char*)"%o",
- i16_in);
- }
- break;
- }
-
- default:
- {
- return M4ERR_PARAMETER;
- }
- }
-
- if(M4OSA_ERR_IS_ERROR(err_code))
- {
- return err_code;
- }
-
- /* Calculate M4OSA_String content length */
- ui32_length = M4OSA_chrLength(aui8_buffer) ;
-
- return M4OSA_strPrivSet(pStr, aui8_buffer, ui32_length);
-}
-
-
-
-M4OSA_ERR M4OSA_strGetInt16(M4OSA_String str_in, M4OSA_Int16* pi16_out,
- M4OSA_strNumBase base)
-{
- M4OSA_strStruct* pStr = (M4OSA_strStruct*)str_in;
- M4OSA_ERR err_code;
-
- M4OSA_TRACE1_3("M4OSA_strGetInt16\t\tM4OSA_String 0x%x\tM4OSA_Int16* 0x%x"
- "\tM4OSA_strNumBase %d", str_in, pi16_out, base);
-
- M4OSA_DEBUG_IF2(M4OSA_NULL == pStr, M4ERR_PARAMETER, "M4OSA_strGetInt16");
- M4OSA_DEBUG_IF2(M4OSA_NULL == pi16_out, M4ERR_PARAMETER,
- "M4OSA_strGetInt16");
- M4OSA_DEBUG_IF2((base != M4OSA_kstrDec) && (base != M4OSA_kstrHexa)
- && (base != M4OSA_kstrOct),M4ERR_PARAMETER, "M4OSA_strGetInt16");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pStr->coreID, M4ERR_STR_BAD_STRING,
- "M4OSA_strGetInt16");
-
- err_code = M4OSA_chrGetInt16(pStr->pui8_buffer, pi16_out, M4OSA_NULL, base);
-
- if(M4NO_ERROR != err_code)
- {
- M4OSA_DEBUG(M4ERR_STR_CONV_FAILED, "M4OSA_strGetInt16");
-
- return M4ERR_STR_CONV_FAILED;
- }
-
- return M4NO_ERROR;
-}
-
-
-M4OSA_ERR M4OSA_strSetUInt16(M4OSA_String str_in, M4OSA_UInt16 ui16_in,
- M4OSA_strNumBase base)
-{
- M4OSA_strStruct* pStr = (M4OSA_strStruct*)str_in;
- M4OSA_UInt32 ui32_length;
- M4OSA_Char aui8_buffer[8];
- M4OSA_ERR err_code;
- M4OSA_Char* pFormat;
-
- M4OSA_TRACE1_2("M4OSA_strSetUInt16\t\tM4OSA_String* 0x%x\tM4OSA_UInt16 %d",
- str_in, ui16_in);
-
- M4OSA_DEBUG_IF2(M4OSA_NULL == pStr, M4ERR_PARAMETER, "M4OSA_strSetUInt16");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pStr->coreID, M4ERR_STR_BAD_STRING,
- "M4OSA_strSetUInt16");
-
- if (M4OSA_kchrDec == base)
- {
- pFormat = (M4OSA_Char*)"%u";
- }
- else if (M4OSA_kchrHexa == base)
- {
- pFormat = (M4OSA_Char*)"%X";
- }
- else if (M4OSA_kchrOct == base)
- {
- pFormat = (M4OSA_Char*)"%o";
- }
- else
- {
- pFormat = M4OSA_NULL;
- }
-
- /* Convert input number into "C-String" */
- err_code = M4OSA_chrSPrintf(aui8_buffer, 8, pFormat, ui16_in);
-
- if(M4OSA_ERR_IS_ERROR(err_code))
- {
- return err_code;
- }
-
- /* Calculate M4OSA_String content length */
- ui32_length = M4OSA_chrLength(aui8_buffer) ;
-
-
- return M4OSA_strPrivSet(pStr, aui8_buffer, ui32_length);
-}
-
-
-M4OSA_ERR M4OSA_strGetUInt16(M4OSA_String str_in, M4OSA_UInt16* pui16_out,
- M4OSA_strNumBase base)
-{
- M4OSA_strStruct* pStr = (M4OSA_strStruct*)str_in;
- M4OSA_ERR err_code;
-
- M4OSA_TRACE1_3("M4OSA_strGetUInt16\t\tM4OSA_String 0x%x\tM4OSA_UInt16* "
- "0x%x\tM4OSA_strNumBase %d", str_in, pui16_out, base);
-
- M4OSA_DEBUG_IF2(M4OSA_NULL == pStr, M4ERR_PARAMETER, "M4OSA_strGetUInt16");
- M4OSA_DEBUG_IF2(M4OSA_NULL == pui16_out, M4ERR_PARAMETER,
- "M4OSA_strGetUInt16");
- M4OSA_DEBUG_IF2((base != M4OSA_kstrDec) && (base != M4OSA_kstrHexa)
- && (base != M4OSA_kstrOct), M4ERR_PARAMETER, "M4OSA_strGetUInt16");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pStr->coreID, M4ERR_STR_BAD_STRING,
- "M4OSA_strGetUInt16");
-
- err_code = M4OSA_chrGetUInt16(pStr->pui8_buffer, pui16_out, M4OSA_NULL,
- base);
-
- if(M4NO_ERROR != err_code)
- {
- M4OSA_DEBUG(M4ERR_STR_CONV_FAILED, "M4OSA_strGetUInt16");
-
- return M4ERR_STR_CONV_FAILED;
- }
-
- return M4NO_ERROR;
-}
-
-
-M4OSA_ERR M4OSA_strSetInt32(M4OSA_String str_in, M4OSA_Int32 i32_in,
- M4OSA_strNumBase base)
-{
- M4OSA_strStruct* pStr = (M4OSA_strStruct*)str_in;
- M4OSA_UInt32 ui32_length;
- M4OSA_Char aui8_buffer[16];
- M4OSA_ERR err_code;
- M4OSA_Char* pFormat;
-
- M4OSA_TRACE1_2("M4OSA_strSetInt32\t\tM4OSA_String* 0x%x\tM4OSA_Int32 %d",
- str_in, i32_in);
-
- M4OSA_DEBUG_IF2(M4OSA_NULL == pStr, M4ERR_PARAMETER, "M4OSA_strSetInt32");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pStr->coreID, M4ERR_STR_BAD_STRING,
- "M4OSA_strSetInt32");
-
- if (M4OSA_kchrDec == base)
- {
- pFormat = (M4OSA_Char*)"%d";
- }
- else if (M4OSA_kchrHexa == base)
- {
- pFormat = (M4OSA_Char*)"%X";
- }
- else if (M4OSA_kchrOct == base)
- {
- pFormat = (M4OSA_Char*)"%o";
- }
- else
- {
- pFormat = M4OSA_NULL;
- }
-
- /* Convert input number into "C-String" */
- switch(base)
- {
- case M4OSA_kstrDec:
- {
- err_code = M4OSA_chrSPrintf(aui8_buffer, 16, (M4OSA_Char*)"%d",
- i32_in);
- break;
- }
-
- case M4OSA_kstrHexa:
- {
- if(i32_in < 0)
- {
- err_code = M4OSA_chrSPrintf(aui8_buffer, 16, (M4OSA_Char*)"-%X",
- -i32_in);
- }
- else
- {
- err_code = M4OSA_chrSPrintf(aui8_buffer, 16, (M4OSA_Char*)"%X",
- i32_in);
- }
- break;
- }
-
- case M4OSA_kstrOct:
- {
- if(i32_in < 0)
- {
- err_code = M4OSA_chrSPrintf(aui8_buffer, 16, (M4OSA_Char*)"-%o",
- -i32_in);
- }
- else
- {
- err_code = M4OSA_chrSPrintf(aui8_buffer, 16, (M4OSA_Char*)"%o",
- i32_in);
- }
- break;
- }
-
- default:
- {
- return M4ERR_PARAMETER;
- }
- }
-
- if(M4OSA_ERR_IS_ERROR(err_code))
- {
- return err_code;
- }
-
- /* Calculate M4OSA_String content length */
- ui32_length = M4OSA_chrLength(aui8_buffer) ;
-
- return M4OSA_strPrivSet(pStr, aui8_buffer, ui32_length);
-}
-
-M4OSA_ERR M4OSA_strGetInt32(M4OSA_String str_in,
- M4OSA_Int32* pi32_out,
- M4OSA_strNumBase base)
-{
- M4OSA_strStruct* pStr = (M4OSA_strStruct*)str_in;
- M4OSA_ERR err_code;
-
- M4OSA_TRACE1_3("M4OSA_strGetInt32\t\tM4OSA_String 0x%x\tM4OSA_Int32* 0x%x"
- "\tM4OSA_strNumBase %d", str_in, pi32_out, base);
-
- M4OSA_DEBUG_IF2(M4OSA_NULL == pStr, M4ERR_PARAMETER, "M4OSA_strGetInt32");
- M4OSA_DEBUG_IF2(M4OSA_NULL == pi32_out, M4ERR_PARAMETER,
- "M4OSA_strGetInt32");
- M4OSA_DEBUG_IF2((base != M4OSA_kstrDec) && (base != M4OSA_kstrHexa)
- && (base != M4OSA_kstrOct), M4ERR_PARAMETER, "M4OSA_strGetInt32");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pStr->coreID, M4ERR_STR_BAD_STRING,
- "M4OSA_strGetInt32");
-
- err_code = M4OSA_chrGetInt32(pStr->pui8_buffer, pi32_out, M4OSA_NULL, base);
-
- if(M4NO_ERROR != err_code)
- {
- M4OSA_DEBUG(M4ERR_STR_CONV_FAILED, "M4OSA_strGetInt32");
-
- return M4ERR_STR_CONV_FAILED;
- }
-
- return M4NO_ERROR;
-}
-
-M4OSA_ERR M4OSA_strSetUInt32(M4OSA_String str_in, M4OSA_UInt32 ui32_in,
- M4OSA_strNumBase base)
-{
- M4OSA_strStruct* pStr = (M4OSA_strStruct*)str_in;
- M4OSA_UInt32 ui32_length;
- M4OSA_Char aui8_buffer[12];
- M4OSA_ERR err_code;
- M4OSA_Char* pFormat;
-
- M4OSA_TRACE1_2("M4OSA_strSetUInt32\t\tM4OSA_String* 0x%x\tM4OSA_UInt32 %d",
- str_in, ui32_in);
-
- M4OSA_DEBUG_IF2(M4OSA_NULL == pStr, M4ERR_PARAMETER, "M4OSA_strSetUInt32");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pStr->coreID, M4ERR_STR_BAD_STRING,
- "M4OSA_strSetUInt32");
-
- if (M4OSA_kchrDec == base)
- {
- pFormat = (M4OSA_Char*)"%u";
- }
- else if (M4OSA_kchrHexa == base)
- {
- pFormat = (M4OSA_Char*)"%X";
- }
- else if (M4OSA_kchrOct == base)
- {
- pFormat = (M4OSA_Char*)"%o";
- }
- else
- {
- pFormat = M4OSA_NULL;
- }
-
- /* Convert input number into "C-String" */
- err_code = M4OSA_chrSPrintf(aui8_buffer, 12, pFormat, ui32_in);
-
- if(M4OSA_ERR_IS_ERROR(err_code))
- {
- return err_code;
- }
-
- /* Calculate M4OSA_String content length */
- ui32_length = M4OSA_chrLength(aui8_buffer) ;
-
-
- return M4OSA_strPrivSet(pStr, aui8_buffer, ui32_length);
-}
-
-
-M4OSA_ERR M4OSA_strGetUInt32(M4OSA_String str_in, M4OSA_UInt32* pui32_out,
- M4OSA_strNumBase base)
-{
- M4OSA_strStruct* pStr = (M4OSA_strStruct*)str_in;
- M4OSA_ERR err_code;
-
- M4OSA_TRACE1_3("M4OSA_strGetUInt32\t\tM4OSA_String 0x%x\tM4OSA_UInt32* "
- "0x%x\tM4OSA_strNumBase %d", str_in, pui32_out, base);
-
- M4OSA_DEBUG_IF2(M4OSA_NULL == pStr, M4ERR_PARAMETER, "M4OSA_strGetUInt32");
- M4OSA_DEBUG_IF2(M4OSA_NULL == pui32_out, M4ERR_PARAMETER,
- "M4OSA_strGetUInt32");
- M4OSA_DEBUG_IF2((base != M4OSA_kstrDec) && (base != M4OSA_kstrHexa)
- && (base != M4OSA_kstrOct), M4ERR_PARAMETER, "M4OSA_strGetUInt32");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pStr->coreID, M4ERR_STR_BAD_STRING,
- "M4OSA_strGetUInt32");
-
- err_code = M4OSA_chrGetUInt32(pStr->pui8_buffer, pui32_out,
- M4OSA_NULL, base);
-
- if(M4NO_ERROR != err_code)
- {
- M4OSA_DEBUG(M4ERR_STR_CONV_FAILED, "M4OSA_strGetUInt32");
-
- return M4ERR_STR_CONV_FAILED;
- }
-
- return M4NO_ERROR;
-}
-
-
-M4OSA_ERR M4OSA_strSetInt64(M4OSA_String str_in, M4OSA_Int64 i64_in,
- M4OSA_strNumBase base)
-{
- M4OSA_strStruct* pStr = (M4OSA_strStruct*)str_in;
- M4OSA_UInt32 ui32_length;
- M4OSA_Char aui8_buffer[24];
- M4OSA_ERR err_code;
-
-
- M4OSA_TRACE1_2("M4OSA_strSetInt64\t\tM4OSA_String* 0x%x\tM4OSA_Int64 0x%x",
- str_in, &i64_in);
-
- M4OSA_DEBUG_IF2(M4OSA_NULL == pStr, M4ERR_PARAMETER, "M4OSA_strSetInt64");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pStr->coreID, M4ERR_STR_BAD_STRING,
- "M4OSA_strSetInt64");
-
- /* Convert input number into "C-String" */
- switch(base)
- {
- case M4OSA_kstrDec:
- {
- err_code = M4OSA_chrSPrintf(aui8_buffer, 24, (M4OSA_Char*)"%lld",
- i64_in);
- break;
- }
-
- case M4OSA_kstrHexa:
- {
- if(M4OSA_INT64_IS_POSITIVE(i64_in))
- {
- err_code = M4OSA_chrSPrintf(aui8_buffer, 24, (M4OSA_Char*)"%llX",
- i64_in);
- }
- else
- {
- M4OSA_INT64_NEG(i64_in, i64_in);
- err_code = M4OSA_chrSPrintf(aui8_buffer, 24, (M4OSA_Char*)"-%llX",
- i64_in);
- }
- break;
- }
-
- case M4OSA_kstrOct:
- {
- if(M4OSA_INT64_IS_POSITIVE(i64_in))
- {
- err_code = M4OSA_chrSPrintf(aui8_buffer, 24, (M4OSA_Char*)"%llo",
- i64_in);
- }
- else
- {
- M4OSA_INT64_NEG(i64_in, i64_in);
- err_code = M4OSA_chrSPrintf(aui8_buffer, 24, (M4OSA_Char*)"-%llo",
- i64_in);
- }
- break;
- }
-
- default:
- {
- return M4ERR_PARAMETER;
- }
- }
-
- if(M4OSA_ERR_IS_ERROR(err_code))
- {
- return err_code;
- }
-
- /* Calculate M4OSA_String content length */
- ui32_length = M4OSA_chrLength(aui8_buffer) ;
-
- return M4OSA_strPrivSet(pStr, aui8_buffer, ui32_length);
-}
-
-M4OSA_ERR M4OSA_strGetInt64(M4OSA_String str_in, M4OSA_Int64* pi64_out,
- M4OSA_strNumBase base)
-{
- M4OSA_strStruct* pStr = (M4OSA_strStruct*)str_in;
- M4OSA_ERR err_code;
-
- M4OSA_TRACE1_3("M4OSA_strGetInt64\t\tM4OSA_String 0x%x\tM4OSA_Int64* 0x%x"
- "\tM4OSA_strNumBase %d", str_in, pi64_out, base);
-
- M4OSA_DEBUG_IF2(M4OSA_NULL == pStr, M4ERR_PARAMETER, "M4OSA_strGetInt64");
- M4OSA_DEBUG_IF2(M4OSA_NULL == pi64_out, M4ERR_PARAMETER,
- "M4OSA_strGetInt64");
- M4OSA_DEBUG_IF2((base != M4OSA_kstrDec) && (base != M4OSA_kstrHexa)
- && (base != M4OSA_kstrOct), M4ERR_PARAMETER, "M4OSA_strGetInt64");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pStr->coreID, M4ERR_STR_BAD_STRING,
- "M4OSA_strGetInt64");
-
- err_code = M4OSA_chrGetInt64(pStr->pui8_buffer, pi64_out, M4OSA_NULL, base);
-
- if(M4NO_ERROR != err_code)
- {
- M4OSA_DEBUG(M4ERR_STR_CONV_FAILED, "M4OSA_strGetInt64");
-
- return M4ERR_STR_CONV_FAILED;
- }
-
- return M4NO_ERROR;
-}
-
-
-M4OSA_ERR M4OSA_strSetDouble(M4OSA_String str_in, M4OSA_Double d_in)
-{
- M4OSA_strStruct* pStr = (M4OSA_strStruct*)str_in;
- M4OSA_UInt32 ui32_length;
- M4OSA_Char aui8_buffer[24];
- M4OSA_ERR err_code;
-
- M4OSA_TRACE1_2("M4OSA_strSetDouble\t\tM4OSA_String* 0x%x\tM4OSA_Double* "
- "0x%x", str_in, &d_in);
-
- M4OSA_DEBUG_IF2(M4OSA_NULL == pStr, M4ERR_PARAMETER, "M4OSA_strSetDouble");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pStr->coreID, M4ERR_STR_BAD_STRING,
- "M4OSA_strSetDouble");
-
- /* Convert input number into "C-String" */
- err_code = M4OSA_chrSPrintf(aui8_buffer, 24, (M4OSA_Char*)"%e", d_in);
-
- if(M4OSA_ERR_IS_ERROR(err_code))
- {
- return err_code;
- }
-
- /* Calculate M4OSA_String content length */
- ui32_length = M4OSA_chrLength(aui8_buffer) ;
-
- return M4OSA_strPrivSet(pStr, aui8_buffer, ui32_length);
-}
-
-
-M4OSA_ERR M4OSA_strGetDouble(M4OSA_String str_in, M4OSA_Double* pd_out)
-{
- M4OSA_strStruct* pStr = (M4OSA_strStruct*)str_in;
- M4OSA_ERR err_code;
-
- M4OSA_TRACE1_2("M4OSA_strGetDouble\t\tM4OSA_String 0x%x\tM4OSA_Double* "
- "0x%x", str_in, pd_out);
-
- M4OSA_DEBUG_IF2(M4OSA_NULL == pStr, M4ERR_PARAMETER, "M4OSA_strGetDouble");
- M4OSA_DEBUG_IF2(M4OSA_NULL == pd_out, M4ERR_PARAMETER, "M4OSA_strGetDouble");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pStr->coreID, M4ERR_STR_BAD_STRING,
- "M4OSA_strGetDouble");
-
- err_code = M4OSA_chrGetDouble(pStr->pui8_buffer, pd_out, M4OSA_NULL);
- if(M4NO_ERROR != err_code)
- {
- M4OSA_DEBUG(M4ERR_STR_CONV_FAILED, "M4OSA_strGetDouble");
-
- return M4ERR_STR_CONV_FAILED;
- }
-
- return M4NO_ERROR;
-}
-
-
-M4OSA_ERR M4OSA_strSetFilePosition(M4OSA_String str_in, M4OSA_FilePosition fpos_in,
- M4OSA_strNumBase base)
-{
- M4OSA_strStruct* pStr = (M4OSA_strStruct*)str_in;
- M4OSA_UInt32 ui32_length;
- M4OSA_Char aui8_buffer[24];
- M4OSA_ERR err_code;
-
-
- M4OSA_TRACE1_2("M4OSA_strSetFilePosition\t\tM4OSA_String* 0x%x\t"
- "M4OSA_FilePosition* 0x%x", str_in, &fpos_in);
-
- M4OSA_DEBUG_IF2(M4OSA_NULL == pStr, M4ERR_PARAMETER,
- "M4OSA_strSetFilePosition");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pStr->coreID, M4ERR_STR_BAD_STRING,
- "M4OSA_strSetFilePosition");
-
-
- /* Convert input number into "C-String" */
- switch(base)
- {
- case M4OSA_kstrDec:
- {
- err_code = M4OSA_chrSPrintf(aui8_buffer, 24, (M4OSA_Char*)"%aad",
- fpos_in);
- break;
- }
-
- case M4OSA_kstrHexa:
- {
- if(M4OSA_FPOS_IS_POSITIVE(fpos_in))
- {
- err_code = M4OSA_chrSPrintf(aui8_buffer, 24, (M4OSA_Char*)"%aaX",
- fpos_in);
- }
- else
- {
- M4OSA_FPOS_NEG(fpos_in, fpos_in);
- err_code = M4OSA_chrSPrintf(aui8_buffer, 24, (M4OSA_Char*)"-%aaX",
- fpos_in);
- }
- break;
- }
-
- case M4OSA_kstrOct:
- {
- if(M4OSA_FPOS_IS_POSITIVE(fpos_in))
- {
- err_code = M4OSA_chrSPrintf(aui8_buffer, 24, (M4OSA_Char*)"%aao",
- fpos_in);
- }
- else
- {
- M4OSA_FPOS_NEG(fpos_in, fpos_in);
- err_code = M4OSA_chrSPrintf(aui8_buffer, 24, (M4OSA_Char*)"-%aao",
- fpos_in);
- }
- break;
- }
-
- default:
- {
- return M4ERR_PARAMETER;
- }
- }
-
- if(M4OSA_ERR_IS_ERROR(err_code))
- {
- return err_code;
- }
-
- /* Calculate M4OSA_String content length */
- ui32_length = M4OSA_chrLength(aui8_buffer) ;
-
- return M4OSA_strPrivSet(pStr, aui8_buffer, ui32_length);
-}
-
-M4OSA_ERR M4OSA_strGetFilePosition(M4OSA_String str_in, M4OSA_FilePosition* pfpos_out,
- M4OSA_strNumBase base)
-{
- M4OSA_strStruct* pStr = (M4OSA_strStruct*)str_in;
- M4OSA_ERR err_code;
-
- M4OSA_TRACE1_3("M4OSA_strGetFilePosition\t\tM4OSA_String 0x%x\t"
- "M4OSA_FilePosition* 0x%x\t\tM4OSA_strNumBase %d",
- str_in, pfpos_out, base);
-
- M4OSA_DEBUG_IF2(M4OSA_NULL == pStr, M4ERR_PARAMETER,
- "M4OSA_strGetFilePosition");
- M4OSA_DEBUG_IF2(M4OSA_NULL == pfpos_out, M4ERR_PARAMETER,
- "M4OSA_strGetFilePosition");
- M4OSA_DEBUG_IF2((base != M4OSA_kstrDec) && (base != M4OSA_kstrHexa)
- && (base != M4OSA_kstrOct), M4ERR_PARAMETER, "M4OSA_strGetFilePosition");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pStr->coreID, M4ERR_STR_BAD_STRING,
- "M4OSA_strGetFilePosition");
-
- err_code = M4OSA_chrGetFilePosition(pStr->pui8_buffer, pfpos_out,
- M4OSA_NULL, base);
-
- if(M4NO_ERROR != err_code)
- {
- M4OSA_DEBUG(M4ERR_STR_CONV_FAILED, "M4OSA_strGetFilePosition");
-
- return M4ERR_STR_CONV_FAILED;
- }
-
- return M4NO_ERROR;
-}
-
-
-M4OSA_ERR M4OSA_strSetTime(M4OSA_String str_in, M4OSA_Time t_in,
- M4OSA_strNumBase base)
-{
- M4OSA_strStruct* pStr = (M4OSA_strStruct*)str_in;
- M4OSA_UInt32 ui32_length;
- M4OSA_Char aui8_buffer[24];
- M4OSA_ERR err_code;
-
- M4OSA_TRACE1_2("M4OSA_strSetDouble\t\tM4OSA_String* 0x%x\tM4OSA_Time* 0x%x",
- str_in, &t_in);
-
- M4OSA_DEBUG_IF2(M4OSA_NULL == pStr, M4ERR_PARAMETER, "M4OSA_strSetTime");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pStr->coreID, M4ERR_STR_BAD_STRING,
- "M4OSA_strSetTime");
-
- /* Convert input number into "C-String" */
- switch(base)
- {
- case M4OSA_kstrDec:
- {
- err_code = M4OSA_chrSPrintf(aui8_buffer, 24, (M4OSA_Char*)"%tmd",
- t_in);
- break;
- }
-
- case M4OSA_kstrHexa:
- {
- if(M4OSA_TIME_IS_POSITIVE(t_in))
- {
- err_code = M4OSA_chrSPrintf(aui8_buffer, 24, (M4OSA_Char*)"%tmX",
- t_in);
- }
- else
- {
- M4OSA_TIME_NEG(t_in, t_in);
- err_code = M4OSA_chrSPrintf(aui8_buffer, 24, (M4OSA_Char*)"-%tmX",
- t_in);
- }
- break;
- }
-
- case M4OSA_kstrOct:
- {
- if(M4OSA_TIME_IS_POSITIVE(t_in))
- {
- err_code = M4OSA_chrSPrintf(aui8_buffer, 24, (M4OSA_Char*)"%tmo",
- t_in);
- }
- else
- {
- M4OSA_TIME_NEG(t_in, t_in);
- err_code = M4OSA_chrSPrintf(aui8_buffer, 24, (M4OSA_Char*)"-%tmo",
- t_in);
- }
- break;
- }
-
- default:
- {
- return M4ERR_PARAMETER;
- }
- }
-
- if(M4OSA_ERR_IS_ERROR(err_code))
- {
- return err_code;
- }
-
- /* Calculate M4OSA_String content length */
- ui32_length = M4OSA_chrLength(aui8_buffer) ;
-
- return M4OSA_strPrivSet(pStr, aui8_buffer, ui32_length);
-}
-
-
-M4OSA_ERR M4OSA_strGetTime(M4OSA_String str_in, M4OSA_Time* pt_out,
- M4OSA_strNumBase base)
-{
- M4OSA_strStruct* pStr = (M4OSA_strStruct*)str_in;
- M4OSA_ERR err_code;
-
- M4OSA_TRACE1_3("M4OSA_strGetTime\t\tM4OSA_String 0x%x\tM4OSA_Time* 0x%x"
- "\tM4OSA_strNumBase %d", str_in, pt_out, base);
-
- M4OSA_DEBUG_IF2(M4OSA_NULL == pStr, M4ERR_PARAMETER, "M4OSA_strGetTime");
- M4OSA_DEBUG_IF2(M4OSA_NULL == pt_out, M4ERR_PARAMETER, "M4OSA_strGetTime");
- M4OSA_DEBUG_IF2((base != M4OSA_kstrDec) && (base != M4OSA_kstrHexa)
- && (base != M4OSA_kstrOct), M4ERR_PARAMETER, "M4OSA_strGetTime");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pStr->coreID,M4ERR_STR_BAD_STRING,
- "M4OSA_strGetTime");
-
- err_code = M4OSA_chrGetTime(pStr->pui8_buffer, pt_out, M4OSA_NULL, base);
-
- if(M4NO_ERROR != err_code)
- {
- M4OSA_DEBUG(M4ERR_STR_CONV_FAILED, "M4OSA_strGetTime");
-
- return M4ERR_STR_CONV_FAILED;
- }
-
- return M4NO_ERROR;
-}
-
-
-M4OSA_ERR M4OSA_strGetLength(M4OSA_String str_in, M4OSA_UInt32* pui32_len)
-{
- M4OSA_strStruct* pStr = (M4OSA_strStruct*)str_in;
-
- M4OSA_TRACE1_2("M4OSA_strGetLength\t\tM4OSA_String 0x%x\tM4OSA_UInt32* "
- "0x%x", str_in, pui32_len);
-
- M4OSA_DEBUG_IF2(M4OSA_NULL == pStr, M4ERR_PARAMETER, "M4OSA_strGetLength");
- M4OSA_DEBUG_IF2(M4OSA_NULL == pui32_len, M4ERR_PARAMETER, "M4OSA_strGetLength");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pStr->coreID, M4ERR_STR_BAD_STRING, "M4OSA_strGetLength");
-
- /* Get the M4OSA_StringStuct length field */
- *pui32_len = pStr->ui32_length ;
-
- return M4NO_ERROR;
-}
-
-
-M4OSA_ERR M4OSA_strCompare(M4OSA_String str_in1, M4OSA_String str_in2,
- M4OSA_Int32* pi32_result)
-{
- M4OSA_strStruct* pStr1 = (M4OSA_strStruct*)str_in1;
- M4OSA_strStruct* pStr2 = (M4OSA_strStruct*)str_in2;
- M4OSA_UInt32 length, length1, length2;
- M4OSA_Int32 result;
- M4OSA_UInt32 i;
- M4OSA_Char* buffer1;
- M4OSA_Char* buffer2;
- M4OSA_Char* pTmp1;
- M4OSA_Char* pTmp2;
-
- M4OSA_TRACE1_3("M4OSA_strCompare\t\tM4OSA_String 0x%x\tM4OSA_String 0x%x\t"
- "M4OSA_UInt32* 0x%x", str_in1, str_in2, pi32_result);
-
- M4OSA_DEBUG_IF2(M4OSA_NULL == pStr1, M4ERR_PARAMETER, "M4OSA_strCompare");
- M4OSA_DEBUG_IF2(M4OSA_NULL == pStr2, M4ERR_PARAMETER, "M4OSA_strCompare");
- M4OSA_DEBUG_IF2(M4OSA_NULL == pi32_result, M4ERR_PARAMETER, "M4OSA_strCompare");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pStr1->coreID, M4ERR_STR_BAD_STRING, "M4OSA_strCompare");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pStr2->coreID, M4ERR_STR_BAD_STRING, "M4OSA_strCompare");
-
- buffer1 = pStr1->pui8_buffer;
- buffer2 = pStr2->pui8_buffer;
-
- length1 = pStr1->ui32_length;
- length2 = pStr2->ui32_length;
-
- length = (length1 < length2) ? length1 : length2;
-
- pTmp1 = (M4OSA_Char*)M4OSA_32bitAlignedMalloc(2 * length * sizeof(M4OSA_Char),
- M4OSA_STRING, (M4OSA_Char*)"M4OSA_strCompare");
-
- M4OSA_CHECK_MALLOC(pTmp1, "M4OSA_strCompare");
-
- pTmp2 = pTmp1 + length;
-
- M4OSA_memcpy(pTmp1, buffer1, length);
-
- M4OSA_memcpy(pTmp2, buffer2, length);
-
- for(i=0; i<length; i++)
- {
- pTmp1[i] = M4OSA_chrToLower(buffer1[i]);
- pTmp2[i] = M4OSA_chrToLower(buffer2[i]);
- }
-
- M4OSA_chrNCompare(pTmp1, pTmp2, length, &result);
-
- free(pTmp1);
-
- if(result != 0)
- {
- *pi32_result = result;
- }
- else
- {
- if (length1 == length2)
- {
- *pi32_result = 0;
- }
- else if (length1 > length2)
- {
- *pi32_result = 1;
- }
- else
- {
- *pi32_result = -1;
- }
- }
-
- return M4NO_ERROR;
-}
-
-M4OSA_ERR M4OSA_strCompareSubStr(M4OSA_String str_in1,
- M4OSA_UInt32 ui32_offset1,
- M4OSA_String str_in2,
- M4OSA_UInt32 ui32_offset2,
- M4OSA_UInt32* pui32_num,
- M4OSA_Int32* pi32_result)
-{
- M4OSA_strStruct* pStr1 = (M4OSA_strStruct*)str_in1;
- M4OSA_strStruct* pStr2 = (M4OSA_strStruct*)str_in2;
- M4OSA_Char* pBuffer1;
- M4OSA_Char* pBuffer2;
- M4OSA_Char* pTmp1;
- M4OSA_Char* pTmp2;
- M4OSA_UInt32 length1, length2, i;
- M4OSA_ERR err_code, return_code = M4NO_ERROR;
-
- M4OSA_TRACE1_5("M4OSA_strCompareSubStr\t\tM4OSA_String 0x%x\tM4OSA_UInt32 "
- "%d\tM4OSA_String 0x%x\tM4OSA_UInt32 %d\tM4OSA_UInt32* 0x%x"
- "\tM4OSA_Int32* 0x%x", str_in1, ui32_offset1, str_in2,
- ui32_offset2, *pui32_num);
-
- M4OSA_DEBUG_IF2(M4OSA_NULL == pStr1, M4ERR_PARAMETER,
- "M4OSA_strCompareSubStr");
- M4OSA_DEBUG_IF2(M4OSA_NULL == pStr2, M4ERR_PARAMETER,
- "M4OSA_strCompareSubStr");
- M4OSA_DEBUG_IF2(M4OSA_NULL == pi32_result, M4ERR_PARAMETER,
- "M4OSA_strCompareSubStr");
- M4OSA_DEBUG_IF2(M4OSA_NULL == pui32_num, M4ERR_PARAMETER,
- "M4OSA_strCompareSubStr");
- M4OSA_DEBUG_IF2(*pui32_num == 0, M4ERR_PARAMETER, "M4OSA_strCompareSubStr");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pStr1->coreID, M4ERR_STR_BAD_STRING,
- "M4OSA_strCompareSubStr");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pStr2->coreID, M4ERR_STR_BAD_STRING,
- "M4OSA_strCompareSubStr");
- M4OSA_DEBUG_IF2(ui32_offset1 >= pStr1->ui32_length, M4ERR_STR_OVERFLOW,
- "M4OSA_strCompareSubStr");
- M4OSA_DEBUG_IF2(ui32_offset2 >= pStr2->ui32_length, M4ERR_STR_OVERFLOW,
- "M4OSA_strCompareSubStr");
-
- length1 = pStr1->ui32_length - ui32_offset1;
- length2 = pStr2->ui32_length - ui32_offset2;
-
- pBuffer1 = pStr1->pui8_buffer + ui32_offset1;
- pBuffer2 = pStr2->pui8_buffer + ui32_offset2;
-
- if(length1 < *pui32_num)
- {
- *pui32_num = length1;
-
- return_code = M4WAR_STR_OVERFLOW;
- }
-
- if(length2 < *pui32_num)
- {
- *pui32_num = length2;
-
- return_code = M4WAR_STR_OVERFLOW;
- }
-
- pTmp1 = (M4OSA_Char*)M4OSA_32bitAlignedMalloc(2 * (*pui32_num) * sizeof(M4OSA_Char),
- M4OSA_STRING, (M4OSA_Char*)"M4OSA_strCompareSubStr");
-
- M4OSA_CHECK_MALLOC(pTmp1, "M4OSA_strCompareSubStr");
-
- pTmp2 = pTmp1 + (*pui32_num);
-
- M4OSA_memcpy(pTmp1, pBuffer1, *pui32_num);
-
- M4OSA_memcpy(pTmp2, pBuffer2, *pui32_num);
-
- for(i=0; i<(*pui32_num); i++)
- {
- pTmp1[i] = M4OSA_chrToLower(pBuffer1[i]);
- pTmp2[i] = M4OSA_chrToLower(pBuffer2[i]);
- }
-
- err_code = M4OSA_chrNCompare(pTmp1, pTmp2, *pui32_num, pi32_result);
-
- M4OSA_DEBUG_IF2((M4OSA_ERR)M4ERR_PARAMETER == err_code, M4ERR_PARAMETER,
- "M4OSA_strCompareSubStr: M4OSA_chrNCompare");
-
- free(pTmp1);
-
- return return_code;
-}
-
-
-M4OSA_ERR M4OSA_strCaseCompare(M4OSA_String str_in1, M4OSA_String str_in2,
- M4OSA_Int32* pi32_result)
-{
- M4OSA_strStruct* pStr1 = (M4OSA_strStruct*)str_in1;
- M4OSA_strStruct* pStr2 = (M4OSA_strStruct*)str_in2;
- M4OSA_UInt32 length, length1, length2;
- M4OSA_Char *pBuffer1, *pBuffer2;
- M4OSA_Int32 result;
- M4OSA_ERR err_code;
-
- M4OSA_TRACE1_3("M4OSA_strCaseCompare\t\tM4OSA_String 0x%x\tM4OSA_String "
- "0x%x\tM4OSA_UInt32* 0x%x", str_in1, str_in2, pi32_result);
-
- M4OSA_DEBUG_IF2(M4OSA_NULL == pStr1, M4ERR_PARAMETER, "M4OSA_strCaseCompare");
- M4OSA_DEBUG_IF2(M4OSA_NULL == pStr2, M4ERR_PARAMETER, "M4OSA_strCaseCompare");
- M4OSA_DEBUG_IF2(M4OSA_NULL == pi32_result,M4ERR_PARAMETER,
- "M4OSA_strCaseCompare");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pStr1->coreID, M4ERR_STR_BAD_STRING,
- "M4OSA_strCaseCompare");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pStr2->coreID, M4ERR_STR_BAD_STRING,
- "M4OSA_strCaseCompare");
-
- length1 = pStr1->ui32_length;
- length2 = pStr2->ui32_length;
-
- /** NB: Never use this expression "i = (value1 == value2) ? x: y;"
- * because that doens't compile on other platforms (ADS for example)
- * Use: if(value1 == value2)
- * { i= x; ..etc
- */
- if (M4OSA_NULL == pStr1->pui8_buffer)
- {
- pBuffer1 = (M4OSA_Char*)"";
- }
- else
- {
- pBuffer1 = pStr1->pui8_buffer;
- }
-
- if (M4OSA_NULL == pStr2->pui8_buffer)
- {
- pBuffer2 = (M4OSA_Char*)"";
- }
- else
- {
- pBuffer2 = pStr2->pui8_buffer;
- }
-
- if ((length1 < length2))
- {
- length = length1;
- }
- else
- {
- length = length2;
- }
-
- err_code = M4OSA_chrNCompare(pBuffer1, pBuffer2, length, &result);
-
- M4OSA_DEBUG_IF2((M4OSA_ERR)M4ERR_PARAMETER == err_code, M4ERR_PARAMETER,
- "M4OSA_strCaseCompare: M4OSA_chrNCompare");
-
- if (result != 0)
- {
- *pi32_result = result;
- }
- else if (length1 > length2)
- {
- *pi32_result = 1 ;
- }
- else
- {
- *pi32_result = -1;
- }
-
- return M4NO_ERROR;
-}
-
-/**
- ************************************************************************
- * @author Nicolas Santini (PDSL-P)
- * @author Hilaire Verschuere (PDSL-P)
- * @brief
- * @note
- * @param str_in
- * @param
- * @return M4OSA_ERROR
- * @date - 2002-12-32: creation
- ************************************************************************
- */
-M4OSA_ERR M4OSA_strCaseCompareSubStr(M4OSA_String str_in1,
- M4OSA_UInt32 ui32_offset1,
- M4OSA_String str_in2,
- M4OSA_UInt32 ui32_offset2,
- M4OSA_UInt32* pui32_num,
- M4OSA_Int32* pi32_result)
-{
- M4OSA_strStruct* pStr1 = (M4OSA_strStruct*)str_in1;
- M4OSA_strStruct* pStr2 = (M4OSA_strStruct*)str_in2;
- M4OSA_Char* pBuffer1;
- M4OSA_Char* pBuffer2;
- M4OSA_UInt32 length1, length2;
- M4OSA_ERR err_code = M4NO_ERROR;
-
- M4OSA_TRACE1_5("M4OSA_strCaseCompareSubStr\t\tM4OSA_String 0x%x\t"
- "M4OSA_UInt32 %d\tM4OSA_String 0x%x\tM4OSA_UInt32 %d\t"
- "M4OSA_UInt32* 0x%x\tM4OSA_Int32* 0x%x", str_in1,
- ui32_offset1, str_in2, ui32_offset2, *pui32_num);
-
- M4OSA_DEBUG_IF2(M4OSA_NULL == pStr1, M4ERR_PARAMETER,
- "M4OSA_strCaseCompareSubStr");
- M4OSA_DEBUG_IF2(M4OSA_NULL == pStr2, M4ERR_PARAMETER,
- "M4OSA_strCaseCompareSubStr");
- M4OSA_DEBUG_IF2(M4OSA_NULL == pi32_result, M4ERR_PARAMETER,
- "M4OSA_strCaseCompareSubStr");
- M4OSA_DEBUG_IF2(M4OSA_NULL == pui32_num, M4ERR_PARAMETER,
- "M4OSA_strCaseCompareSubStr");
- M4OSA_DEBUG_IF2(*pui32_num == 0, M4ERR_PARAMETER,
- "M4OSA_strCaseCompareSubStr");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pStr1->coreID, M4ERR_STR_BAD_STRING,
- "M4OSA_strCaseCompareSubStr");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pStr2->coreID, M4ERR_STR_BAD_STRING,
- "M4OSA_strCaseCompareSubStr");
- M4OSA_DEBUG_IF2(ui32_offset1 >= pStr1->ui32_length, M4ERR_STR_OVERFLOW,
- "M4OSA_strCaseCompareSubStr");
- M4OSA_DEBUG_IF2(ui32_offset2 >= pStr2->ui32_length, M4ERR_STR_OVERFLOW,
- "M4OSA_strCaseCompareSubStr");
-
-
- length1 = pStr1->ui32_length - ui32_offset1;
- length2 = pStr2->ui32_length - ui32_offset2;
-
- pBuffer1 = pStr1->pui8_buffer + ui32_offset1;
- pBuffer2 = pStr2->pui8_buffer + ui32_offset2;
-
- if(length1 < *pui32_num)
- {
- *pui32_num = length1;
-
- err_code = M4WAR_STR_OVERFLOW;
- }
-
- if(length2 < *pui32_num)
- {
- *pui32_num = length2;
-
- err_code = M4WAR_STR_OVERFLOW;
- }
-
- M4OSA_chrNCompare(pBuffer1, pBuffer2, *pui32_num, pi32_result);
-
- return err_code;
-}
-
-
-M4OSA_ERR M4OSA_strSpan(M4OSA_String str_in, M4OSA_Char* charset,
- M4OSA_UInt32* pui32_pos)
-{
- M4OSA_strStruct* pStr = (M4OSA_strStruct*)str_in;
- M4OSA_UInt32 ui32_length;
- M4OSA_Char* pBuffer;
- M4OSA_ERR err_code;
-
-
- M4OSA_TRACE1_3("M4OSA_strSpan\t\tM4OSA_String 0x%x\tM4OSA_Char* 0x%x\t"
- "M4OSA_UInt32* 0x%x", str_in, charset, pui32_pos);
-
- M4OSA_DEBUG_IF2(M4OSA_NULL == pStr, M4ERR_PARAMETER, "M4OSA_strSpan");
- M4OSA_DEBUG_IF2(M4OSA_NULL == charset, M4ERR_PARAMETER, "M4OSA_strSpan");
- M4OSA_DEBUG_IF2(M4OSA_NULL == pui32_pos, M4ERR_PARAMETER, "M4OSA_strSpan");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pStr->coreID, M4ERR_STR_BAD_STRING,
- "M4OSA_strSpan");
-
- pStr = (M4OSA_strStruct*)str_in ;
-
- if(*pui32_pos >= pStr->ui32_length)
- {
- return M4ERR_STR_OVERFLOW;
- }
-
- pBuffer = pStr->pui8_buffer + *pui32_pos;
-
- err_code = M4OSA_chrSpan(pBuffer, charset, &ui32_length);
-
- M4OSA_DEBUG_IF2((M4OSA_ERR)M4ERR_PARAMETER == err_code, M4ERR_PARAMETER,
- "M4OSA_strSpan: M4OSA_chrSpan");
-
- *pui32_pos += ui32_length;
-
- return M4NO_ERROR;
-}
-
-
-
-
-
-M4OSA_ERR M4OSA_strSpanComplement(M4OSA_String str_in, M4OSA_Char* charset,
- M4OSA_UInt32* pui32_pos)
-{
- M4OSA_strStruct* pStr = (M4OSA_strStruct*)str_in;
- M4OSA_ERR err_code;
- M4OSA_UInt32 ui32_length;
-
- M4OSA_TRACE1_3("M4OSA_strSpanComplement\t\tM4OSA_String 0x%x\tM4OSA_Char* "
- "0x%x\tM4OSA_UInt32* 0x%x", str_in, charset, pui32_pos);
-
- M4OSA_DEBUG_IF2(M4OSA_NULL == pStr, M4ERR_PARAMETER,
- "M4OSA_strSpanComplement");
- M4OSA_DEBUG_IF2(M4OSA_NULL == charset, M4ERR_PARAMETER,
- "M4OSA_strSpanComplement");
- M4OSA_DEBUG_IF2(M4OSA_NULL == pui32_pos, M4ERR_PARAMETER,
- "M4OSA_strSpanComplement");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pStr->coreID, M4ERR_STR_BAD_STRING,
- "M4OSA_strSpanComplement");
-
- if(*pui32_pos >= pStr->ui32_length)
- {
- return M4ERR_STR_OVERFLOW;
- }
-
- err_code = M4OSA_chrSpanComplement(pStr->pui8_buffer + *pui32_pos,
- charset, &ui32_length);
-
- M4OSA_DEBUG_IF2((M4OSA_ERR)M4ERR_PARAMETER == err_code, M4ERR_PARAMETER,
- "M4OSA_strSpanComplement: M4OSA_chrSpanComplement");
-
- if(M4WAR_CHR_NOT_FOUND == err_code)
- {
- return M4WAR_STR_NOT_FOUND;
- }
-
- *pui32_pos += ui32_length;
-
- return M4NO_ERROR;
-}
-
-
-M4OSA_ERR M4OSA_strFindFirstChar(M4OSA_String str_in, M4OSA_Char c,
- M4OSA_UInt32* pui32_pos)
-{
- M4OSA_strStruct* pStr = (M4OSA_strStruct*)str_in;
- M4OSA_Char* pBuffer;
- M4OSA_Char* pchar;
- M4OSA_ERR err_code;
-
- M4OSA_TRACE1_3("M4OSA_strFindFirstChar\t\tM4OSA_String 0x%x\tM4OSA_Char"
- " 0x%x\tM4OSA_UInt32* 0x%x", str_in, c, pui32_pos);
-
- M4OSA_DEBUG_IF2(M4OSA_NULL == pStr, M4ERR_PARAMETER,
- "M4OSA_strFindFirstChar");
- M4OSA_DEBUG_IF2(M4OSA_NULL == pui32_pos, M4ERR_PARAMETER,
- "M4OSA_strFindFirstChar");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pStr->coreID, M4ERR_STR_BAD_STRING,
- "M4OSA_strFindFirstChar");
-
- if(*pui32_pos >= pStr->ui32_length)
- {
- return M4ERR_STR_OVERFLOW;
- }
-
- pBuffer = pStr->pui8_buffer + *pui32_pos;
-
- err_code = M4OSA_chrFindChar(pBuffer, c, &pchar);
-
- M4OSA_DEBUG_IF2(err_code == (M4OSA_ERR)M4ERR_PARAMETER,
- M4ERR_PARAMETER, "M4OSA_strFindFirstChar");
-
- if(M4WAR_CHR_NOT_FOUND == err_code)
- {
- return M4WAR_STR_NOT_FOUND;
- }
-
- *pui32_pos = pchar - pStr->pui8_buffer;
-
- return M4NO_ERROR;
-}
-
-
-M4OSA_ERR M4OSA_strFindLastChar(M4OSA_String str_in, M4OSA_Char c,
- M4OSA_UInt32* pui32_pos)
-{
- M4OSA_strStruct* pStr = (M4OSA_strStruct*)str_in;
- M4OSA_Char* pBuffer;
- M4OSA_UInt32 i;
-
- M4OSA_TRACE1_3("M4OSA_strFindLastChar\t\tM4OSA_String 0x%x\tM4OSA_Char"
- " 0x%x\tM4OSA_UInt32* 0x%x", str_in, c, pui32_pos);
-
- M4OSA_DEBUG_IF2(M4OSA_NULL == pStr, M4ERR_PARAMETER,"M4OSA_strFindLastChar");
- M4OSA_DEBUG_IF2(M4OSA_NULL == pui32_pos, M4ERR_PARAMETER,
- "M4OSA_strFindLastChar");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pStr->coreID, M4ERR_STR_BAD_STRING,
- "M4OSA_strFindLastChar");
-
- if(*pui32_pos > pStr->ui32_length)
- {
- return M4ERR_STR_OVERFLOW;
- }
-
- pBuffer = pStr->pui8_buffer;
-
- for(i=(*pui32_pos); i!=0; i--)
- {
- if(pBuffer[i] == c)
- {
- *pui32_pos = i;
-
- return M4NO_ERROR;
- }
- }
-
- return M4WAR_STR_NOT_FOUND;
-}
-
-
-M4OSA_ERR M4OSA_strFindFirstSubStr(M4OSA_String str_in1, M4OSA_String str_in2,
- M4OSA_UInt32* pui32_pos)
-{
- M4OSA_strStruct* pStr1 = (M4OSA_strStruct*)str_in1;
- M4OSA_strStruct* pStr2 = (M4OSA_strStruct*)str_in2;
- M4OSA_Char* pResult;
- M4OSA_ERR err_code;
-
- M4OSA_TRACE1_3("M4OSA_strFindFirstSubStr\t\tM4OSA_String 0x%x\tM4OSA_String"
- " 0x%x\tM4OSA_UInt32* 0x%x", str_in1, str_in2, pui32_pos);
-
- M4OSA_DEBUG_IF2(M4OSA_NULL == pStr1, M4ERR_PARAMETER,
- "M4OSA_strFindFirstSubStr");
- M4OSA_DEBUG_IF2(M4OSA_NULL == pStr2, M4ERR_PARAMETER,
- "M4OSA_strFindFirstSubStr");
- M4OSA_DEBUG_IF2(M4OSA_NULL == pui32_pos, M4ERR_PARAMETER,
- "M4OSA_strFindFirstSubStr");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pStr1->coreID, M4ERR_STR_BAD_STRING,
- "M4OSA_strFindFirstSubStr");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pStr2->coreID, M4ERR_STR_BAD_STRING,
- "M4OSA_strFindFirstSubStr");
-
- if(*pui32_pos >= pStr1->ui32_length)
- {
- return M4ERR_STR_OVERFLOW;
- }
-
- if(pStr2->ui32_length == 0)
- {
- return M4WAR_STR_NOT_FOUND;
- }
-
- err_code = M4OSA_chrFindPattern(pStr1->pui8_buffer + (*pui32_pos),
- pStr2->pui8_buffer, &pResult);
-
- M4OSA_DEBUG_IF2((M4OSA_ERR)M4ERR_PARAMETER == err_code, M4ERR_PARAMETER,
- "M4OSA_strFindFirstSubStr: M4OSA_chrFindPattern");
-
- if(M4WAR_CHR_NOT_FOUND == err_code)
- {
- return M4WAR_STR_NOT_FOUND;
- }
-
- *pui32_pos = pResult - pStr1->pui8_buffer;
-
- return M4NO_ERROR;
-}
-
-
-M4OSA_ERR M4OSA_strFindLastSubStr(M4OSA_String str_in1, M4OSA_String str_in2,
- M4OSA_UInt32* pui32_pos)
-{
- M4OSA_strStruct* pStr1 = (M4OSA_strStruct*)str_in1;
- M4OSA_strStruct* pStr2 = (M4OSA_strStruct*)str_in2;
- M4OSA_Int32 i32_result;
-
-
- M4OSA_TRACE1_3("M4OSA_strFindLastSubStr\t\tM4OSA_String 0x%x\tM4OSA_String"
- " 0x%x\tM4OSA_UInt32* 0x%x", str_in1, str_in2, pui32_pos);
-
- M4OSA_DEBUG_IF2(M4OSA_NULL == pStr1, M4ERR_PARAMETER,
- "M4OSA_strFindLastSubStr");
- M4OSA_DEBUG_IF2(M4OSA_NULL == pStr2, M4ERR_PARAMETER,
- "M4OSA_strFindLastSubStr");
- M4OSA_DEBUG_IF2(M4OSA_NULL == pui32_pos, M4ERR_PARAMETER,
- "M4OSA_strFindLastSubStr");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pStr1->coreID, M4ERR_STR_BAD_STRING,
- "M4OSA_strFindLastSubStr");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pStr2->coreID, M4ERR_STR_BAD_STRING,
- "M4OSA_strFindLastSubStr");
-
- if(*pui32_pos > pStr1->ui32_length)
- {
- return M4ERR_STR_OVERFLOW;
- }
-
- if((pStr2->ui32_length == 0) || (pStr1->ui32_length == 0))
- {
- return M4WAR_STR_NOT_FOUND;
- }
-
- i32_result = M4OSA_strPrivFindLastSubStr(pStr1, pStr2, *pui32_pos);
-
- if(i32_result < 0)
- {
- return M4WAR_STR_NOT_FOUND;
- }
-
- *pui32_pos = i32_result;
-
- return M4NO_ERROR;
-}
-
-
-M4OSA_ERR M4OSA_strTruncate(M4OSA_String str_in, M4OSA_UInt32 ui32_length)
-{
- M4OSA_strStruct* pStr = (M4OSA_strStruct*)str_in;
-
- M4OSA_TRACE1_2("M4OSA_strTroncate\t\tM4OSA_String 0x%x\tM4OSA_UInt32 %d",
- str_in, ui32_length);
-
- M4OSA_DEBUG_IF2(M4OSA_NULL == pStr, M4ERR_PARAMETER, "M4OSA_strTroncate");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pStr->coreID, M4ERR_STR_BAD_STRING,
- "M4OSA_strTroncate");
-
- if(ui32_length >= pStr->ui32_length)
- {
- return M4WAR_STR_OVERFLOW;
- }
-
- pStr->ui32_length = ui32_length;
-
- if(pStr->pui8_buffer != M4OSA_NULL)
- {
- pStr->pui8_buffer[ui32_length] = '\0';
- }
-
- return M4NO_ERROR;
-}
-
-M4OSA_ERR M4OSA_strCopy(M4OSA_String str_out, M4OSA_String str_in)
-{
- M4OSA_strStruct* pIstr = (M4OSA_strStruct*)str_in;
- M4OSA_strStruct* pOstr = (M4OSA_strStruct*)str_out;
-
- M4OSA_TRACE1_2("M4OSA_strCopy\t\tM4OSA_String 0x%x\tM4OSA_String 0x%x",
- str_in, str_out);
-
- M4OSA_DEBUG_IF2(M4OSA_NULL == pIstr, M4ERR_PARAMETER, "M4OSA_strCopy");
- M4OSA_DEBUG_IF2(M4OSA_NULL == pOstr, M4ERR_PARAMETER, "M4OSA_strCopy");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pIstr->coreID, M4ERR_STR_BAD_STRING,
- "M4OSA_strCopy");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pOstr->coreID, M4ERR_STR_BAD_STRING,
- "M4OSA_strCopy");
-
- return M4OSA_strPrivSet(pOstr, pIstr->pui8_buffer, pIstr->ui32_length);
-}
-
-
-M4OSA_ERR M4OSA_strCopySubStr(M4OSA_String str_out,
- M4OSA_UInt32 ui32_pos,
- M4OSA_String str_in,
- M4OSA_UInt32 ui32_offset,
- M4OSA_UInt32* ui32_num)
-{
- M4OSA_strStruct *pIstr = (M4OSA_strStruct*)str_in;
- M4OSA_strStruct *pOstr = (M4OSA_strStruct*)str_out;
- M4OSA_ERR err_code = M4NO_ERROR;
- M4OSA_UInt32 ui32_length, olength;
- M4OSA_Char* pSrc;
- M4OSA_Char* pDest;
-
-
- M4OSA_TRACE1_5("M4OSA_strCopySubStr\t\tM4OSA_String 0x%x\tM4OSA_UInt32 %d"
- "\tM4OSA_String 0x%x\tM4OSA_UInt32 %d\tM4OSA_UInt32* %0x%x",
- str_out, str_in, str_out, ui32_pos, ui32_num);
-
- M4OSA_DEBUG_IF2(M4OSA_NULL == pIstr, M4ERR_PARAMETER, "M4OSA_strCopySubStr");
- M4OSA_DEBUG_IF2(M4OSA_NULL == pOstr, M4ERR_PARAMETER, "M4OSA_strCopySubStr");
- M4OSA_DEBUG_IF2(M4OSA_NULL == ui32_num, M4ERR_PARAMETER,
- "M4OSA_strCopySubStr");
- M4OSA_DEBUG_IF2(*ui32_num == 0, M4ERR_PARAMETER, "M4OSA_strCopySubStr");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pOstr->coreID, M4ERR_STR_BAD_STRING,
- "M4OSA_strCopySubStr");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pIstr->coreID, M4ERR_STR_BAD_STRING,
- "M4OSA_strCopySubStr");
- M4OSA_DEBUG_IF2(ui32_pos > pOstr->ui32_length, M4ERR_STR_OVERFLOW,
- "M4OSA_strCopySubStr");
- M4OSA_DEBUG_IF2(ui32_offset > pIstr->ui32_length, M4ERR_STR_OVERFLOW,
- "M4OSA_strCopySubStr");
-
- /* Calculate there is enough char in str_in after ui32_offset */
- ui32_length = pIstr->ui32_length - ui32_offset;
-
- if(*ui32_num > ui32_length)
- {
- *ui32_num = ui32_length;
-
- err_code = M4WAR_STR_OVERFLOW;
- }
-
- /* Calculate the future length of str2 */
- ui32_length = ui32_pos + *ui32_num;
-
- olength = pOstr->ui32_length;
-
- if(ui32_length >= olength)
- {
- olength = ui32_length;
- }
-
- /* Reallocation if needed */
- if(M4OSA_strPrivReallocCopy(pOstr, olength) != M4NO_ERROR)
- {
- M4OSA_DEBUG(M4ERR_ALLOC, "M4OSA_strCopySubStr");
-
- return M4ERR_ALLOC;
- }
-
- pSrc = pIstr->pui8_buffer + ui32_offset;
- pDest = pOstr->pui8_buffer + ui32_pos;
-
- M4OSA_memcpy(pDest, pSrc, *ui32_num);
-
- pOstr->ui32_length = olength;
- pOstr->pui8_buffer[pOstr->ui32_length] = '\0';
-
- return err_code;
-}
-
-
-M4OSA_ERR M4OSA_strConcat(M4OSA_String str_first, M4OSA_String str_second)
-{
- M4OSA_strStruct* pStr1 = (M4OSA_strStruct*)str_first;
- M4OSA_strStruct* pStr2 = (M4OSA_strStruct*)str_second;
- M4OSA_UInt32 ui32_length;
- M4OSA_Char* pBuffer;
-
- M4OSA_TRACE1_2("M4OSA_strConcat\t\tM4OSA_String 0x%x\tM4OSA_String 0x%x",
- str_first, str_second);
-
- M4OSA_DEBUG_IF2(M4OSA_NULL == pStr1, M4ERR_PARAMETER, "M4OSA_strConcat");
- M4OSA_DEBUG_IF2(M4OSA_NULL == pStr2, M4ERR_PARAMETER, "M4OSA_strConcat");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pStr1->coreID, M4ERR_STR_BAD_STRING,
- "M4OSA_strConcat");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pStr2->coreID, M4ERR_STR_BAD_STRING,
- "M4OSA_strConcat");
-
- if(pStr2->ui32_length == 0)
- {
- return M4NO_ERROR;
- }
-
- ui32_length = pStr1->ui32_length + pStr2->ui32_length;
-
- if(M4OSA_strPrivReallocCopy(pStr1, ui32_length) != M4NO_ERROR)
- {
- M4OSA_DEBUG(M4ERR_ALLOC, "M4OSA_strConcat");
-
- return M4ERR_ALLOC;
- }
-
- pBuffer = pStr1->pui8_buffer + pStr1->ui32_length;
-
- /* Fill the actual M4OSA_String content */
- M4OSA_memcpy(pBuffer, pStr2->pui8_buffer, pStr2->ui32_length+1);
-
- pStr1->ui32_length = ui32_length;
-
- return M4NO_ERROR;
-}
-
-
-M4OSA_ERR M4OSA_strInsertSubStr(M4OSA_String str_out,
- M4OSA_UInt32 ui32_pos,
- M4OSA_String str_in,
- M4OSA_UInt32 ui32_offset,
- M4OSA_UInt32* ui32_num)
-{
- M4OSA_strStruct *pIstr = (M4OSA_strStruct*)str_in;
- M4OSA_strStruct *pOstr = (M4OSA_strStruct*)str_out;
- M4OSA_ERR err_code, return_code = M4NO_ERROR;
- M4OSA_UInt32 ui32_length;
-
- M4OSA_TRACE1_5("M4OSA_strInsertSubStr\t\tM4OSA_String 0x%x\tM4OSA_UInt32 %d"
- "\tM4OSA_String 0x%x\tM4OSA_UInt32 %d\tM4OSA_UInt32* %0x%x",
- str_out, str_in, str_out, ui32_pos, ui32_num);
-
- M4OSA_DEBUG_IF2(M4OSA_NULL == pIstr, M4ERR_PARAMETER,
- "M4OSA_strInsertSubStr");
- M4OSA_DEBUG_IF2(M4OSA_NULL == pOstr, M4ERR_PARAMETER,
- "M4OSA_strInsertSubStr");
- M4OSA_DEBUG_IF2(M4OSA_NULL == ui32_num, M4ERR_PARAMETER,
- "M4OSA_strInsertSubStr");
- M4OSA_DEBUG_IF2(*ui32_num == 0, M4ERR_PARAMETER,
- "M4OSA_strInsertSubStr");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pIstr->coreID, M4ERR_STR_BAD_STRING,
- "M4OSA_strInsertSubStr");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pOstr->coreID, M4ERR_STR_BAD_STRING,
- "M4OSA_strInsertSubStr");
- M4OSA_DEBUG_IF2(ui32_pos > pOstr->ui32_length, M4ERR_STR_OVERFLOW,
- "M4OSA_strInsertSubStr");
- M4OSA_DEBUG_IF2(ui32_offset > pIstr->ui32_length, M4ERR_STR_OVERFLOW,
- "M4OSA_strInsertSubStr");
-
- /* Calculate there is enough char in str_in after ui32_offset */
- ui32_length = pIstr->ui32_length - ui32_offset;
-
- if(*ui32_num > ui32_length)
- {
- *ui32_num = ui32_length;
-
- return_code = M4WAR_STR_OVERFLOW;
- }
-
- err_code = M4OSA_strPrivSetAndRepleceStr(pOstr, ui32_pos, 0,
- pIstr->pui8_buffer + ui32_offset, *ui32_num);
-
- if(err_code == (M4OSA_ERR)M4ERR_ALLOC)
- {
- M4OSA_DEBUG(M4ERR_ALLOC, "M4OSA_strInsertSubStr");
-
- return M4ERR_ALLOC;
- }
-
- return return_code;
-}
-
-
-M4OSA_ERR M4OSA_strDelSubStr(M4OSA_String str_in, M4OSA_UInt32 ui32_offset,
- M4OSA_UInt32* ui32_num)
-{
- M4OSA_strStruct* pStr = (M4OSA_strStruct*)str_in;
- M4OSA_UInt32 ui32_length;
- M4OSA_Char* pBuffer;
- M4OSA_ERR err_code;
-
- M4OSA_TRACE1_3("M4OSA_strDelSubStr\t\tM4OSA_String 0x%x\tM4OSA_UInt32 %d\t"
- "M4OSA_UInt32* 0x%x", str_in, ui32_offset, ui32_num);
-
- M4OSA_DEBUG_IF2(M4OSA_NULL == pStr, M4ERR_PARAMETER, "M4OSA_strDelSubStr");
- M4OSA_DEBUG_IF2(M4OSA_NULL == ui32_num, M4ERR_PARAMETER,
- "M4OSA_strDelSubStr");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pStr->coreID, M4ERR_STR_BAD_STRING,
- "M4OSA_strDelSubStr");
-
- pBuffer = pStr->pui8_buffer;
-
- ui32_length = pStr->ui32_length ;
-
- if(ui32_offset >= ui32_length)
- {
- return M4ERR_STR_OVERFLOW;
- }
-
- ui32_length -= ui32_offset;
-
- if(*ui32_num >= ui32_length)
- {
- *ui32_num = ui32_length;
-
- pStr->ui32_length -= ui32_length;
-
- pBuffer[pStr->ui32_length] = '\0';
-
- err_code = M4WAR_STR_OVERFLOW;
- }
- else
- {
- err_code = M4OSA_strPrivSetAndRepleceStr(pStr, ui32_offset, *ui32_num,
- M4OSA_NULL, 0);
- }
-
- return err_code;
-}
-
-
-M4OSA_ERR M4OSA_strReplaceSubStr(M4OSA_String str_in, M4OSA_String str_old,
- M4OSA_String str_new, M4OSA_strMode mode)
-{
- M4OSA_strStruct* pIstr = (M4OSA_strStruct*)str_in;
- M4OSA_strStruct* pOstr = (M4OSA_strStruct*)str_old;
- M4OSA_strStruct* pNstr = (M4OSA_strStruct*)str_new;
- M4OSA_UInt32 olength, nlength, ilength;
- M4OSA_Bool ostr2free = M4OSA_FALSE;
- M4OSA_Bool nstr2free = M4OSA_FALSE;
- M4OSA_ERR err_code;
-
-
- M4OSA_TRACE1_4("M4OSA_strReplaceSubStr\t\tM4OSA_String 0x%x\tM4OSA_String "
- "0x%x\tM4OSA_String 0x%x\tM4OSA_strSupprMode %d",
- str_in, str_old, str_new, mode);
-
- M4OSA_DEBUG_IF2(M4OSA_NULL == pIstr, M4ERR_PARAMETER,
- "M4OSA_strReplaceSubStr");
- M4OSA_DEBUG_IF2(M4OSA_NULL == pOstr, M4ERR_PARAMETER,
- "M4OSA_strReplaceSubStr");
- M4OSA_DEBUG_IF2(M4OSA_NULL == pNstr, M4ERR_PARAMETER,
- "M4OSA_strReplaceSubStr");
- M4OSA_DEBUG_IF2((mode != M4OSA_kstrAll) && (mode != M4OSA_kstrEnd)
- && (mode != M4OSA_kstrBegin), M4ERR_PARAMETER,
- "M4OSA_strReplaceSubStr");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pIstr->coreID, M4ERR_STR_BAD_STRING,
- "M4OSA_strReplaceSubStr");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pOstr->coreID, M4ERR_STR_BAD_STRING,
- "M4OSA_strReplaceSubStr");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pNstr->coreID, M4ERR_STR_BAD_STRING,
- "M4OSA_strReplaceSubStr");
-
- olength = pOstr->ui32_length;
- nlength = pNstr->ui32_length;
- ilength = pIstr->ui32_length;
-
- if((olength == 0) || (ilength == 0) || (olength > ilength))
- {
- M4OSA_DEBUG(M4WAR_STR_NOT_FOUND, "M4OSA_strReplaceSubStr");
-
- return M4WAR_STR_NOT_FOUND;
- }
-
- if(pIstr == pOstr)
- {
- M4OSA_strPrivDuplicate(&pOstr, pIstr);
-
- ostr2free = M4OSA_TRUE;
- }
-
- if(pIstr == pNstr)
- {
- M4OSA_strPrivDuplicate(&pNstr, pIstr);
-
- nstr2free = M4OSA_TRUE;
- }
-
- if(nlength == olength)
- {
- err_code = M4OSA_strPrivReplaceSameSizeStr(pIstr, pOstr, pNstr, mode);
- }
- else if(nlength < olength)
- {
- err_code = M4OSA_strPrivReplaceSmallerStr(pIstr, pOstr, pNstr, mode);
- }
- else
- {
- err_code = M4OSA_strPrivReplaceBiggerStr(pIstr, pOstr, pNstr, mode);
- }
-
- if(ostr2free == M4OSA_TRUE)
- {
- free(pOstr->pui8_buffer);
- free(pOstr);
- }
-
- if(nstr2free == M4OSA_TRUE)
- {
- free(pNstr->pui8_buffer);
- free(pNstr);
- }
-
- return err_code;
-}
-
-
-M4OSA_ERR M4OSA_strGetFirstToken(M4OSA_String str_in, M4OSA_String str_token,
- M4OSA_String str_delim)
-{
- M4OSA_strStruct* pIn = (M4OSA_strStruct*)str_in;
- M4OSA_strStruct* pToken = (M4OSA_strStruct*)str_token;
- M4OSA_strStruct* pDelim = (M4OSA_strStruct*)str_delim;
- M4OSA_UInt32 length_token, length_delim;
- M4OSA_Char* pBuffer;
- M4OSA_Char* pchar;
- M4OSA_ERR err_code;
-
-
- M4OSA_TRACE1_3("M4OSA_strGetFirstToken\t\tM4OSA_String 0x%x\tM4OSA_String"
- " 0x%x\tM4OSA_String 0x%x", str_in, str_token, str_delim);
-
- M4OSA_DEBUG_IF2(M4OSA_NULL == pIn, M4ERR_PARAMETER,"M4OSA_strGetFirstToken");
- M4OSA_DEBUG_IF2(M4OSA_NULL == pToken, M4ERR_PARAMETER,
- "M4OSA_strGetFirstToken");
- M4OSA_DEBUG_IF2(M4OSA_NULL == pDelim, M4ERR_PARAMETER,
- "M4OSA_strGetFirstToken");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pIn->coreID, M4ERR_STR_BAD_STRING,
- "M4OSA_strGetFirstToken");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pToken->coreID, M4ERR_STR_BAD_STRING,
- "M4OSA_strGetFirstToken");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pDelim->coreID, M4ERR_STR_BAD_STRING,
- "M4OSA_strGetFirstToken");
-
- length_delim = pDelim->ui32_length;
-
- if(pDelim->ui32_length == 0)
- {
- M4OSA_DEBUG(M4WAR_STR_NOT_FOUND, "M4OSA_strGetFirstToken");
-
- return M4WAR_STR_NOT_FOUND;
- }
-
- pBuffer = pIn->pui8_buffer;
-
- err_code = M4OSA_chrFindPattern(pBuffer,pDelim->pui8_buffer, &pchar);
-
- if(err_code != M4NO_ERROR)
- {
- M4OSA_DEBUG(M4WAR_STR_NOT_FOUND, "M4OSA_strGetFirstToken");
-
- return M4WAR_STR_NOT_FOUND;
- }
-
- length_token = pchar - pBuffer;
-
- err_code = M4OSA_strPrivSet(pToken, pBuffer, length_token);
-
- if(err_code == (M4OSA_ERR)M4ERR_ALLOC)
- {
- M4OSA_DEBUG(M4ERR_ALLOC, "M4OSA_strGetFirstToken: M4OSA_strPrivSet");
-
- return M4ERR_ALLOC;
- }
-
- err_code = M4OSA_strPrivSetAndRepleceStr(pIn, 0, length_token + length_delim,
- M4OSA_NULL, 0);
-
- if(err_code == (M4OSA_ERR)M4ERR_ALLOC)
- {
- M4OSA_DEBUG(M4ERR_ALLOC,
- "M4OSA_strGetFirstToken: M4OSA_strPrivSetAndRepleceStr");
-
- return M4ERR_ALLOC;
- }
-
- return M4NO_ERROR;
-}
-
-
-M4OSA_ERR M4OSA_strGetLastToken(M4OSA_String str_in, M4OSA_String str_token,
- M4OSA_String str_delim)
-{
- M4OSA_strStruct* pIn = (M4OSA_strStruct*)str_in;
- M4OSA_strStruct* pToken = (M4OSA_strStruct*)str_token;
- M4OSA_strStruct* pDelim = (M4OSA_strStruct*)str_delim;
- M4OSA_UInt32 in_length, token_length, delim_length;
- M4OSA_Char* pIn_buffer;
- M4OSA_Char* pToken_buffer;
- M4OSA_Int32 delim_pos;
- M4OSA_ERR err_code;
-
- M4OSA_TRACE1_3("M4OSA_strGetLastToken\t\tM4OSA_String 0x%x\tM4OSA_String"
- " 0x%x\tM4OSA_String 0x%x", str_in, str_token, str_delim);
-
- M4OSA_DEBUG_IF2(M4OSA_NULL == pIn, M4ERR_PARAMETER,
- "M4OSA_strGetLastToken");
- M4OSA_DEBUG_IF2(M4OSA_NULL == pToken, M4ERR_PARAMETER,
- "M4OSA_strGetLastToken");
- M4OSA_DEBUG_IF2(M4OSA_NULL == pDelim, M4ERR_PARAMETER,
- "M4OSA_strGetLastToken");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pIn->coreID, M4ERR_STR_BAD_STRING,
- "M4OSA_strGetLastToken");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pToken->coreID, M4ERR_STR_BAD_STRING,
- "M4OSA_strGetLastToken");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pDelim->coreID, M4ERR_STR_BAD_STRING,
- "M4OSA_strGetLastToken");
-
- in_length = pIn->ui32_length;
- delim_length = pDelim->ui32_length;
- pIn_buffer = pIn->pui8_buffer;
-
- if(pDelim->ui32_length > pIn->ui32_length)
- {
- M4OSA_DEBUG(M4WAR_STR_NOT_FOUND, "M4OSA_strGetLastToken");
-
- return M4WAR_STR_NOT_FOUND;
- }
-
- delim_pos = M4OSA_strPrivFindLastSubStr(pIn, pDelim, in_length-delim_length);
-
- if(delim_pos < 0)
- {
- M4OSA_DEBUG(M4WAR_STR_NOT_FOUND, "M4OSA_strGetLastToken");
-
- return M4WAR_STR_NOT_FOUND;
- }
-
- pToken_buffer = pIn_buffer + delim_pos + delim_length;
- token_length = in_length - delim_pos + delim_length;
-
- err_code = M4OSA_strPrivSet(str_token, pToken_buffer, token_length);
-
- if(err_code == (M4OSA_ERR)M4ERR_ALLOC)
- {
- M4OSA_DEBUG(M4ERR_ALLOC,
- "M4OSA_strGetLastToken: M4OSA_strPrivSet");
-
- return err_code;
- }
-
- pIn_buffer[delim_pos] = '\0';
-
- pIn->ui32_length = delim_pos;
-
- return M4NO_ERROR;
-}
-
-
-M4OSA_ERR M4OSA_strSetUpperCase(M4OSA_String str_in)
-{
- M4OSA_strStruct* pStr = (M4OSA_strStruct*)str_in;
- M4OSA_Char* pBuffer;
- M4OSA_Char* pchar;
-
-
- M4OSA_TRACE1_1("M4OSA_strSetUpperCase\t\tM4OSA_String 0x%x", str_in);
-
- M4OSA_DEBUG_IF2(M4OSA_NULL == pStr, M4ERR_PARAMETER, "M4OSA_strSetUpperCase");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pStr->coreID, M4ERR_STR_BAD_STRING,
- "M4OSA_strSetUpperCase");
-
- pBuffer = pStr->pui8_buffer;
-
- for(pchar=pBuffer; pchar!=(pBuffer+pStr->ui32_length); pchar++)
- {
- *pchar = M4OSA_chrToUpper(*pchar);
- }
-
- return M4NO_ERROR;
-}
-
-
-M4OSA_ERR M4OSA_strSetLowerCase(M4OSA_String str_in)
-{
- M4OSA_strStruct* pStr = (M4OSA_strStruct*)str_in;
- M4OSA_Char* pBuffer;
- M4OSA_Char* pchar;
-
- M4OSA_TRACE1_1("M4OSA_strSetLowerCase\t\tM4OSA_String 0x%x", str_in);
-
- M4OSA_DEBUG_IF2(M4OSA_NULL == pStr, M4ERR_PARAMETER, "M4OSA_strSetLowerCase");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pStr->coreID, M4ERR_STR_BAD_STRING,
- "M4OSA_strSetLowerCase");
-
- pBuffer = pStr->pui8_buffer;
-
- for(pchar=pBuffer; pchar!=(pBuffer+pStr->ui32_length); pchar++)
- {
- *pchar = M4OSA_chrToLower(*pchar);
- }
-
-
- return M4NO_ERROR;
-}
-
-
-M4OSA_ERR M4OSA_strSprintf(M4OSA_String str_in, M4OSA_Char* pFormat, ...)
-{
- M4OSA_strStruct* pStr = (M4OSA_strStruct*)str_in;
- M4OSA_ERR err_code = M4ERR_STR_OVERFLOW;
- M4OSA_UInt32 ui32_size;
- va_list args;
-
- M4OSA_TRACE1_2("M4OSA_strSprintf\t\tM4OSA_String 0x%x\tM4OSA_Char* 0x%x",
- str_in, pFormat);
-
- M4OSA_DEBUG_IF2(M4OSA_NULL == pFormat, M4ERR_PARAMETER, "M4OSA_strSprintf");
- M4OSA_DEBUG_IF2(M4OSA_NULL == pStr, M4ERR_PARAMETER, "M4OSA_strSprintf");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pStr->coreID, M4ERR_STR_BAD_STRING,
- "M4OSA_strSetLowerCase");
-
- ui32_size = pStr->ui32_length + (M4OSA_UInt32)(1.5 * M4OSA_chrLength(pFormat));
-
- va_start(args, pFormat);
-
- while(err_code == (M4OSA_ERR)M4ERR_STR_OVERFLOW)
- {
- err_code = M4OSA_strPrivReallocCopy(pStr, ui32_size);
-
- if(err_code == (M4OSA_ERR)M4ERR_ALLOC)
- {
- M4OSA_DEBUG(M4ERR_ALLOC, "M4OSA_strSprintf");
-
- va_end(args);
-
- return M4ERR_ALLOC;
- }
-
- ui32_size *= 2;
-
- err_code = M4OSA_strPrivSPrintf(pStr, pFormat, args);
- }
-
- va_end(args);
-
- pStr->ui32_length = M4OSA_chrLength(pStr->pui8_buffer);
-
- return M4NO_ERROR;
-}
-
-
-M4OSA_ERR M4OSA_strSetMinAllocationSize(M4OSA_String str_in, M4OSA_UInt32 ui32_newsize)
-{
- M4OSA_strStruct* pStr = (M4OSA_strStruct*)str_in;
- M4OSA_UInt32 ui32_size;
- M4OSA_Char* pBuffer;
- M4OSA_Char* pIbuffer;
-
- M4OSA_TRACE1_2("M4OSA_strSetMinAllocationSize\t\tM4OSA_String 0x%x\t"
- "M4OSA_Int32 %d", str_in, ui32_newsize);
-
- M4OSA_DEBUG_IF2(M4OSA_NULL == pStr, M4ERR_PARAMETER, "M4OSA_strSetInt32");
- M4OSA_DEBUG_IF2(M4OSA_STRING != pStr->coreID, M4ERR_STR_BAD_STRING,
- "M4OSA_strSetInt32");
-
- ui32_size = pStr->ui32_size;
- pIbuffer = pStr->pui8_buffer;
-
- if(ui32_newsize > ui32_size)
- {
- ui32_size = ui32_newsize + ((4 - (ui32_newsize % 4)) % 4);
- }
-
- /* Allocate the actual M4OSA_String content */
- pBuffer = (M4OSA_Char*)M4OSA_32bitAlignedMalloc(ui32_size * sizeof(M4OSA_Char),
- M4OSA_STRING, (M4OSA_Char*)"M4OSA_strSetMinAllocationSize");
-
- M4OSA_CHECK_MALLOC(pBuffer, "M4OSA_strSetMinAllocationSize");
-
- if(pIbuffer != M4OSA_NULL)
- {
- M4OSA_memcpy(pBuffer, pIbuffer, pStr->ui32_length+1);
-
- free(pIbuffer);
- }
-
- pStr->pui8_buffer = pBuffer;
-
- pStr->ui32_size = ui32_size;
-
- return M4NO_ERROR;
-}
-
diff --git a/libvideoeditor/osal/src/M4OSA_String_priv.c b/libvideoeditor/osal/src/M4OSA_String_priv.c
deleted file mode 100755
index 79a26a0..0000000
--- a/libvideoeditor/osal/src/M4OSA_String_priv.c
+++ /dev/null
@@ -1,1136 +0,0 @@
-/*
- * Copyright (C) 2004-2011 NXP Software
- * Copyright (C) 2011 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-/**
- ************************************************************************
- * @file M4OSA_String_priv.c
- ************************************************************************
-*/
-
-#include "M4OSA_Debug.h"
-#include "M4OSA_Types.h"
-#include "M4OSA_Memory.h"
-#include "M4OSA_Error.h"
-#include "M4OSA_String_priv.h"
-#include "M4OSA_String.h"
-
-/**
- ************************************************************************
- * @brief This function replaces a string buffer by a new "C-String"
- * and manage memory if needed
- * @note
- * @param pstr_src
- * @param pac_in
- * @return M4OSA_ERROR
- ************************************************************************
- */
-M4OSA_ERR M4OSA_strPrivRealloc(M4OSA_strStruct* str,
- M4OSA_UInt32 ui32_length)
-{
- M4OSA_UInt32 ui32_size;
- M4OSA_Char* buffer;
-
- M4OSA_TRACE2_2("M4OSA_strPrivRealloc\t\tM4OSA_strStruct* 0x%x\t"
- "M4OSA_UInt32* %d", str, ui32_length);
-
- ui32_size = str->ui32_size;
-
- /* Realloc if size is not sufficient to contain it entirely */
- if(ui32_length >= ui32_size)
- {
- if(ui32_size == 0)
- {
- ui32_size = 16;
- }
-
- while(ui32_length >= ui32_size)
- {
- ui32_size <<= 1;
- }
-
- buffer = str->pui8_buffer;
-
- if(buffer != M4OSA_NULL)
- {
- free(buffer);
- }
-
- /* Allocate the actual M4OSA_String content */
- buffer = (M4OSA_Char*)M4OSA_32bitAlignedMalloc(ui32_size * sizeof(M4OSA_Char),
- M4OSA_STRING, (M4OSA_Char*)"M4OSA_strPrivRealloc");
-
- /* Check memory allocation error */
- if(buffer == M4OSA_NULL)
- {
- M4OSA_DEBUG(M4ERR_ALLOC, "M4OSA_strPrivRealloc");
-
- str->pui8_buffer = M4OSA_NULL;
- str->ui32_size = 0;
- str->ui32_length = 0;
-
- return M4ERR_ALLOC;
- }
-
- str->pui8_buffer = buffer;
- str->ui32_size = ui32_size;
- }
-
- return M4NO_ERROR;
-}
-
-/**
- ************************************************************************
- * @brief This function replaces a string buffer by a new "C-String"
- * and manage memory if needed
- * @note
- * @param pstr_src
- * @param pac_in
- * @return M4OSA_ERROR
- ************************************************************************
- */
-M4OSA_ERR M4OSA_strPrivReallocCopy(M4OSA_strStruct* str,
- M4OSA_UInt32 ui32_length)
-{
- M4OSA_UInt32 ui32_size;
- M4OSA_Char* buffer;
- M4OSA_Char* pui8_buffer;
-
- M4OSA_TRACE2_2("M4OSA_strPrivReallocCopy\t\tM4OSA_strStruct* 0x%x\t"
- "M4OSA_UInt32* %d", str, ui32_length);
-
-
- ui32_size = str->ui32_size;
-
- /* Realloc if size is not sufficient to contain it entirely */
- if(ui32_length >= ui32_size)
- {
- if(ui32_size == 0)
- {
- ui32_size = 16;
- }
-
- while(ui32_length >= ui32_size)
- {
- ui32_size <<= 1;
- }
-
- /* Allocate the actual M4OSA_String content */
- buffer = (M4OSA_Char*)M4OSA_32bitAlignedMalloc(ui32_size * sizeof(M4OSA_Char),
- M4OSA_STRING, (M4OSA_Char*)"M4OSA_strPrivReallocCopy");
-
- /* Check memory allocation error */
- if(buffer == M4OSA_NULL)
- {
- M4OSA_DEBUG(M4ERR_ALLOC, "M4OSA_strPrivReallocCopy");
-
- str->pui8_buffer = M4OSA_NULL;
- str->ui32_size = 0;
- str->ui32_length = 0;
-
- return M4ERR_ALLOC;
- }
-
- pui8_buffer = str->pui8_buffer;
-
- if(pui8_buffer != M4OSA_NULL)
- {
- M4OSA_memcpy(buffer, pui8_buffer, str->ui32_length + 1);
-
- free(pui8_buffer);
- }
-
- str->pui8_buffer = buffer;
- str->ui32_size = ui32_size;
- }
-
- return M4NO_ERROR;
-}
-
-
-M4OSA_ERR M4OSA_strPrivDuplicate(M4OSA_strStruct** ostr,
- M4OSA_strStruct* istr)
-{
- M4OSA_strStruct* str;
- M4OSA_ERR err_code;
-
- M4OSA_TRACE2_2("M4OSA_strPrivDuplicate\t\tM4OSA_strStruct** 0x%x\t"
- "M4OSA_strStruct** 0x%x", ostr, istr);
-
- /* Allocate the output M4OSA_String */
- str = (M4OSA_strStruct*)M4OSA_32bitAlignedMalloc(sizeof(M4OSA_strStruct), M4OSA_STRING,
- (M4OSA_Char*)"M4OSA_strPrivDuplicate: output string");
-
- /* Check memory allocation error */
- if(str == M4OSA_NULL)
- {
- *ostr = M4OSA_NULL ;
-
- M4OSA_DEBUG(M4ERR_ALLOC, "M4OSA_strPrivDuplicate");
-
- return M4ERR_ALLOC;
- }
-
- str->coreID = M4OSA_STRING;
- str->pui8_buffer = M4OSA_NULL;
- str->ui32_length = 0;
- str->ui32_size = 0;
-
- err_code = M4OSA_strPrivSet(str, istr->pui8_buffer, istr->ui32_length);
-
- if(err_code != M4NO_ERROR)
- {
- return err_code;
- }
-
- *ostr = str;
-
- return M4NO_ERROR;
-}
-
-/**
- ************************************************************************
- * @brief This function replaces a string buffer by a new "C-String"
- * and manage memory if needed
- * @note
- * @param pstr_src
- * @param pac_in
- * @return M4OSA_ERROR
- ************************************************************************
-*/
-M4OSA_ERR M4OSA_strPrivSet(M4OSA_strStruct* str,
- M4OSA_Char* pchar,
- M4OSA_UInt32 ui32_length)
-{
- M4OSA_UInt32 length;
- M4OSA_Char* buffer;
-
- M4OSA_TRACE2_3("M4OSA_strPrivSet\t\tM4OSA_strStruct* 0x%x\tM4OSA_Char* "
- "0x%x\tM4OSA_UInt32 %d", str, pchar, ui32_length);
-
- if(ui32_length != 0)
- {
- length = M4OSA_chrLength(pchar);
-
- if(length < ui32_length)
- {
- ui32_length = length;
- }
-
- if(M4OSA_strPrivRealloc(str, ui32_length) != M4NO_ERROR)
- {
- M4OSA_DEBUG(M4ERR_ALLOC, "M4OSA_strPrivSet");
-
- return M4ERR_ALLOC;
- }
-
- buffer = str->pui8_buffer;
-
- /* Fill the actual M4OSA_String content */
- M4OSA_memcpy(buffer, pchar, ui32_length);
-
- buffer[ui32_length] = '\0';
- }
- else if(str->pui8_buffer != M4OSA_NULL)
- {
- str->pui8_buffer[0] = '\0';
- }
-
- str->ui32_length = ui32_length;
-
- return M4NO_ERROR;
-}
-
-/**
- ************************************************************************
- * @brief This function replaces a string buffer by a new "C-String"
- * and manage memory if needed
- * @note
- * @param pstr_src
- * @param pac_in
- * @return M4OSA_ERROR
- ************************************************************************
-*/
-M4OSA_Int32 M4OSA_strPrivFindLastSubStr(M4OSA_strStruct* str1,
- M4OSA_strStruct* str2,
- M4OSA_UInt32 ui32_pos)
-{
- M4OSA_Char *pchar;
- M4OSA_Char *buffer1;
- M4OSA_Char *buffer2;
- M4OSA_Int32 i32_result;
- M4OSA_UInt32 length1, length2;
- M4OSA_Int32 dist;
-
- M4OSA_TRACE2_3("M4OSA_strPrivFindLastSubStr\t\tM4OSA_strStruct* 0x%x\t"
- "M4OSA_strStruct* 0x%x\tM4OSA_UInt32 %d",
- str1, str2, ui32_pos);
-
- length1 = str1->ui32_length;
- length2 = str2->ui32_length;
-
- if((length1 == 0) || (length2 == 0))
- {
- return -1;
- }
-
- buffer1 = str1->pui8_buffer;
- buffer2 = str2->pui8_buffer;
-
- dist = length1 - length2;
-
- if(dist < 0)
- {
- return -1;
- }
-
- if((M4OSA_Int32)ui32_pos > dist)
- {
- ui32_pos = dist;
- }
-
- for(pchar = buffer1 + ui32_pos; pchar != buffer1; pchar--)
- {
- M4OSA_chrNCompare(pchar, buffer2, length2, &i32_result);
-
- if(i32_result == 0)
- {
- return pchar - buffer1;
- }
- }
-
- return -1;
-}
-
-/**
- ************************************************************************
- * @brief This function replaces a string buffer by a new "C-String"
- * and manage memory if needed
- * @note
- * @param pstr_src
- * @param pac_in
- * @return M4OSA_ERROR
- ************************************************************************
- */
-M4OSA_ERR M4OSA_strPrivSetAndRepleceStr(M4OSA_strStruct* istr,
- M4OSA_UInt32 ui32_pos,
- M4OSA_UInt32 olength,
- M4OSA_Char* nbuff,
- M4OSA_UInt32 nlength)
-{
- M4OSA_Char* buffer;
- M4OSA_Char* ibuffer;
- M4OSA_UInt32 ui32_length, ui32_size, ui32_lend, ui32_poso, ui32_posn;
-
- M4OSA_TRACE2_5("M4OSA_strPrivSetAndRepleceStr\t\tM4OSA_strStruct* 0x%x\t"
- "M4OSA_UInt32 %d\tM4OSA_UInt32 %d\tM4OSA_Char* 0x%x\t"
- "M4OSA_UInt32 %d", istr, ui32_pos, olength, nbuff, nlength);
-
- ui32_length = istr->ui32_length - olength + nlength;
-
- ibuffer = istr->pui8_buffer;
-
- /* string to replace has the same this that new string */
- if(nlength == olength)
- {
- if(nlength == 0)
- {
- return M4NO_ERROR;
- }
-
- M4OSA_memcpy(ibuffer + ui32_pos, nbuff, nlength);
- }
- else
- {
- ui32_lend = istr->ui32_length - ui32_pos - olength;
- ui32_poso = ui32_pos + olength;
- ui32_posn = ui32_pos + nlength;
-
- /* string to replace is bigger that new string */
- if(nlength < olength)
- {
- if(nlength > 0)
- {
- M4OSA_memcpy(ibuffer + ui32_pos, nbuff, nlength);
- }
-
- if((olength - nlength) >= ui32_lend)
- {
- M4OSA_memcpy(ibuffer + ui32_posn, ibuffer + ui32_poso, ui32_lend);
- }
- else
- {
- buffer = (M4OSA_Char*)M4OSA_32bitAlignedMalloc(ui32_lend * sizeof(M4OSA_Char),
- M4OSA_STRING, (M4OSA_Char*)"M4OSA_strPrivSetAndRepleceStr");
-
- M4OSA_CHECK_MALLOC(buffer, "M4OSA_strPrivSetAndRepleceStr");
- M4OSA_memcpy(buffer, ibuffer + ui32_poso, ui32_lend);
- M4OSA_memcpy(ibuffer + ui32_posn, buffer, ui32_lend);
- free(buffer);
- }
- }
- /* string to replace is smaller that new string */
- else
- {
- ui32_size = istr->ui32_size;
-
- /* check if there is enough memory allocated in istr */
- if(ui32_length >= ui32_size)
- {
- if(ui32_size == 0)
- {
- ui32_size = 16;
- }
-
- while(ui32_length >= ui32_size)
- {
- ui32_size <<= 1;
- }
-
- buffer = (M4OSA_Char*)M4OSA_32bitAlignedMalloc(ui32_size * sizeof(M4OSA_Char),
- M4OSA_STRING, (M4OSA_Char*)"M4OSA_strPrivSetAndRepleceStr");
-
- M4OSA_CHECK_MALLOC(buffer, "M4OSA_strPrivSetAndRepleceStr");
-
- M4OSA_memcpy(buffer, ibuffer, ui32_pos);
-
- M4OSA_memcpy(buffer + ui32_pos, nbuff, nlength);
-
- M4OSA_memcpy(buffer + ui32_posn, ibuffer + ui32_poso, ui32_lend);
-
- free(ibuffer);
-
- istr->pui8_buffer = buffer;
-
- istr->ui32_size = ui32_size;
- }
- else
- {
- buffer = (M4OSA_Char*)M4OSA_32bitAlignedMalloc(ui32_lend * sizeof(M4OSA_Char),
- M4OSA_STRING, (M4OSA_Char*)"M4OSA_strPrivSetAndRepleceStr");
-
- M4OSA_CHECK_MALLOC(buffer, "M4OSA_strPrivSetAndRepleceStr");
-
- M4OSA_memcpy(buffer, ibuffer + ui32_poso, ui32_lend);
-
- M4OSA_memcpy(ibuffer + ui32_pos, nbuff, nlength);
-
- M4OSA_memcpy(ibuffer + ui32_posn, buffer, ui32_lend);
-
- free(buffer);
- }
- }
- }
-
-
- istr->pui8_buffer[ui32_length] = '\0';
-
- istr->ui32_length = ui32_length;
-
- return M4NO_ERROR;
-}
-
-/**
- ************************************************************************
- * @brief This function replaces a string buffer by a new "C-String"
- * and manage memory if needed
- * @note
- * @param pstr_src
- * @param pac_in
- * @return M4OSA_ERROR
- ************************************************************************
- */
-M4OSA_ERR M4OSA_strPrivReplaceSameSizeStr(M4OSA_strStruct* istr,
- M4OSA_strStruct* ostr,
- M4OSA_strStruct* nstr,
- M4OSA_strMode mode)
-{
- M4OSA_Char* ibuffer;
- M4OSA_Char* obuffer;
- M4OSA_Char* nbuffer;
- M4OSA_Char* ptr;
- M4OSA_UInt32 ilength, nlength;
- M4OSA_Int32 i32_pos;
- M4OSA_ERR err_code;
-
- M4OSA_TRACE2_4("M4OSA_strPrivReplaceSameSizeStr\t\tM4OSA_strStruct* 0x%x\t"
- "M4OSA_strStruct* 0x%x\tM4OSA_strStruct* 0x%x\t"
- "M4OSA_strMode %d", istr, ostr, nstr, mode);
-
- ibuffer = istr->pui8_buffer;
- obuffer = ostr->pui8_buffer;
- nbuffer = nstr->pui8_buffer;
-
- ilength = istr->ui32_length;
- nlength = nstr->ui32_length;
-
- if(mode != M4OSA_kstrEnd)
- {
- err_code = M4OSA_chrFindPattern(ibuffer, obuffer, &ptr);
-
- M4OSA_DEBUG_IF2(M4OSA_ERR_IS_ERROR(err_code), err_code,
- "M4OSA_strPrivReplaceSameSizeStr");
-
- if(err_code == M4WAR_CHR_NOT_FOUND)
- {
- return M4WAR_STR_NOT_FOUND;
- }
-
- if(mode == M4OSA_kstrAll)
- {
- do
- {
- M4OSA_memcpy(ptr, nbuffer, nlength);
-
- err_code = M4OSA_chrFindPattern(ptr+nlength, obuffer, &ptr);
-
- M4OSA_DEBUG_IF2(M4OSA_ERR_IS_ERROR(err_code), err_code,
- "M4OSA_strPrivReplaceSameSizeStr");
-
- } while(err_code != M4WAR_CHR_NOT_FOUND);
- }
- else
- {
- M4OSA_memcpy(ptr, nbuffer, nlength);
- }
- }
- else
- {
- i32_pos = M4OSA_strPrivFindLastSubStr(istr, ostr, ilength-1);
-
- if(i32_pos < 0)
- {
- return M4WAR_STR_NOT_FOUND;
- }
-
- M4OSA_memcpy(ibuffer + i32_pos, nbuffer, nlength);
- }
-
-
- return M4NO_ERROR;
-}
-
-/**
- ************************************************************************
- * @brief This function replaces a string buffer by a new "C-String"
- * and manage memory if needed
- * @note
- * @param pstr_src
- * @param pac_in
- * @return M4OSA_ERROR
- ************************************************************************
- */
-M4OSA_ERR M4OSA_strPrivReplaceSmallerStr(M4OSA_strStruct* istr,
- M4OSA_strStruct* ostr,
- M4OSA_strStruct* nstr,
- M4OSA_strMode mode)
-{
- M4OSA_Char* ibuffer;
- M4OSA_Char* obuffer;
- M4OSA_Char* nbuffer;
- M4OSA_Char* buffer;
- M4OSA_Char* ptr_src;
- M4OSA_Char* ptr_dest;
- M4OSA_UInt32 ilength, nlength, olength, size, length;
- M4OSA_Int32 i32_pos;
- M4OSA_ERR err_code;
-
- M4OSA_TRACE2_4("M4OSA_strPrivReplaceSmallerStr\t\tM4OSA_strStruct* 0x%x\t"
- "M4OSA_strStruct* 0x%x\tM4OSA_strStruct* 0x%x\t"
- "M4OSA_strMode %d", istr, ostr, nstr, mode);
-
- ibuffer = istr->pui8_buffer;
- obuffer = ostr->pui8_buffer;
- nbuffer = nstr->pui8_buffer;
-
- ilength = istr->ui32_length;
- olength = ostr->ui32_length;
- nlength = nstr->ui32_length;
-
- length = ilength;
-
- if(mode == M4OSA_kstrAll)
- {
- err_code = M4OSA_chrFindPattern(ibuffer, obuffer, &ptr_src);
-
- M4OSA_DEBUG_IF2(M4OSA_ERR_IS_ERROR(err_code), err_code,
- "M4OSA_strPrivReplaceSameSizeStr");
-
- if(err_code == M4WAR_CHR_NOT_FOUND)
- {
- return M4WAR_STR_NOT_FOUND;
- }
-
- /* Allocate the actual M4OSA_String content */
- buffer = (M4OSA_Char*)M4OSA_32bitAlignedMalloc(istr->ui32_size * sizeof(M4OSA_Char),
- M4OSA_STRING, (M4OSA_Char*)"M4OSA_strPrivReplaceSmallerStr");
-
- M4OSA_CHECK_MALLOC(buffer, "M4OSA_strPrivReplaceSmallerStr");
-
- ptr_dest = buffer;
-
- do
- {
- size = (M4OSA_UInt32)ptr_src - (M4OSA_UInt32)ibuffer;
-
- length += (nlength - olength);
-
- M4OSA_memcpy(ptr_dest, ibuffer, size);
-
- ptr_dest += size;
-
- M4OSA_memcpy(ptr_dest, nbuffer, nlength);
-
- ptr_dest += nlength;
-
- ibuffer += (size + olength);
-
- err_code = M4OSA_chrFindPattern(ibuffer, obuffer, &ptr_src);
-
- M4OSA_DEBUG_IF2(M4OSA_ERR_IS_ERROR(err_code), err_code,
- "M4OSA_strPrivReplaceSameSizeStr");
-
- } while(err_code != M4WAR_CHR_NOT_FOUND);
-
- size = ilength - (M4OSA_UInt32)(ibuffer - istr->pui8_buffer);
-
- M4OSA_memcpy(ptr_dest, ibuffer, size);
-
- free(istr->pui8_buffer);
-
- istr->ui32_length = length ;
-
- buffer[length] = '\0';
-
- istr->pui8_buffer = buffer;
- }
- else
- {
- if(mode == M4OSA_kstrBegin)
- {
- err_code = M4OSA_chrFindPattern(ibuffer, obuffer, &ptr_src);
-
- M4OSA_DEBUG_IF2(M4OSA_ERR_IS_ERROR(err_code), err_code,
- "M4OSA_strPrivReplaceSameSizeStr");
-
- if(err_code == M4WAR_CHR_NOT_FOUND)
- {
- return M4WAR_STR_NOT_FOUND;
- }
-
- i32_pos = (M4OSA_UInt32)ptr_src - (M4OSA_UInt32)ibuffer;
- }
- else
- {
- i32_pos = M4OSA_strPrivFindLastSubStr(istr, ostr, ilength-1);
-
- if(i32_pos == -1)
- {
- return M4WAR_STR_NOT_FOUND;
- }
- }
-
- err_code = M4OSA_strPrivSetAndRepleceStr(istr, i32_pos, olength,
- nbuffer, nlength);
-
- if(M4OSA_ERR_IS_ERROR(err_code))
- {
- M4OSA_DEBUG(err_code, "M4OSA_strPrivReplaceSmallerStr");
-
- return err_code;
- }
- }
-
- return M4NO_ERROR;
-}
-
-/**
- ************************************************************************
- * @brief This function replaces a string buffer by a new "C-String"
- * and manage memory if needed
- * @note
- * @param pstr_src
- * @param pac_in
- * @return M4OSA_ERROR
- ************************************************************************
- */
-M4OSA_ERR M4OSA_strPrivReplaceBiggerStr(M4OSA_strStruct* istr,
- M4OSA_strStruct* ostr,
- M4OSA_strStruct* nstr,
- M4OSA_strMode mode)
-{
- M4OSA_Char* ibuffer;
- M4OSA_Char* obuffer;
- M4OSA_Char* nbuffer;
- M4OSA_Char* buffer;
- M4OSA_Char* ptr;
- M4OSA_UInt32 ilength, nlength, olength, length;
- M4OSA_Int32 i32_pos;
- M4OSA_ERR err_code;
-
- M4OSA_TRACE2_4("M4OSA_strPrivReplaceBiggerStr\t\tM4OSA_strStruct* 0x%x\t"
- "M4OSA_strStruct* 0x%x\tM4OSA_strStruct* 0x%x\t"
- "M4OSA_strMode %d", istr, ostr, nstr, mode);
-
- ibuffer = istr->pui8_buffer;
- obuffer = ostr->pui8_buffer;
- nbuffer = nstr->pui8_buffer;
-
- ilength = istr->ui32_length;
- olength = ostr->ui32_length;
- nlength = nstr->ui32_length;
-
-
- if(mode == M4OSA_kstrAll)
- {
- M4OSA_UInt32 n=0, i;
- M4OSA_Int32* patterns;
- M4OSA_UInt32 pos=0, size;
- M4OSA_UInt32 max_pattern = ilength / olength;
- M4OSA_UInt32 ui32_size = istr->ui32_size;
- M4OSA_Char* src;
- M4OSA_Char* dest;
-
- /* Allocate the actual M4OSA_String content */
- patterns = (M4OSA_Int32*)M4OSA_32bitAlignedMalloc(max_pattern * sizeof(M4OSA_UInt32),
- M4OSA_STRING, (M4OSA_Char*)"M4OSA_strPrivReplaceBiggerStr");
-
- M4OSA_CHECK_MALLOC(patterns, (M4OSA_Char*)"M4OSA_strPrivReplaceBiggerStr");
-
-
- err_code = M4OSA_chrFindPattern(ibuffer, obuffer, &ptr);
-
- M4OSA_DEBUG_IF2(M4OSA_ERR_IS_ERROR(err_code), err_code,
- "M4OSA_strPrivReplaceBiggerStr");
-
- if(err_code == M4WAR_CHR_NOT_FOUND)
- {
- return M4WAR_STR_NOT_FOUND;
- }
-
- do
- {
- patterns[n] = (M4OSA_UInt32)ptr - (M4OSA_UInt32)ibuffer;
-
- n++;
-
- err_code = M4OSA_chrFindPattern(ptr + olength, obuffer, &ptr);
-
- M4OSA_DEBUG_IF2(M4OSA_ERR_IS_ERROR(err_code), err_code,
- "M4OSA_strPrivReplaceBiggerStr");
-
- } while(err_code != M4WAR_CHR_NOT_FOUND);
-
- length = ilength - (n * olength) + (n * nlength);
-
-
- if(length >= ui32_size)
- {
- do
- {
- ui32_size <<= 1;
-
- } while(length >= ui32_size);
- }
-
- /* Allocate the actual M4OSA_String content */
- buffer = (M4OSA_Char*)M4OSA_32bitAlignedMalloc(ui32_size * sizeof(M4OSA_Char),
- M4OSA_STRING, (M4OSA_Char*)"M4OSA_strPrivReplaceBiggerStr");
-
- M4OSA_CHECK_MALLOC(buffer, "M4OSA_strPrivReplaceBiggerStr");
-
- src = ibuffer;
- dest = buffer;
-
- for(i=0; i<n; i++)
- {
- size = patterns[i] - pos;
-
- M4OSA_memcpy(dest, src, size);
-
- pos = patterns[i] + olength;
-
- src = ibuffer + pos;
-
- dest += size;
-
- M4OSA_memcpy(dest, nbuffer, nlength);
-
- dest += nlength;
- }
-
- size = ilength - (M4OSA_UInt32)(src - ibuffer);
-
- M4OSA_memcpy(dest, src, size);
-
- free(patterns);
-
- free(ibuffer);
-
- istr->ui32_length = length;
-
- istr->pui8_buffer = buffer;
-
- istr->pui8_buffer[length] = '\0';
- }
- else
- {
- if(mode == M4OSA_kstrBegin)
- {
- err_code = M4OSA_chrFindPattern(ibuffer, obuffer, &ptr);
-
- M4OSA_DEBUG_IF2(M4OSA_ERR_IS_ERROR(err_code), err_code,
- "M4OSA_strPrivReplaceSameSizeStr");
-
- if(err_code == M4WAR_CHR_NOT_FOUND)
- {
- return M4WAR_STR_NOT_FOUND;
- }
-
- i32_pos = (M4OSA_UInt32)ptr - (M4OSA_UInt32)ibuffer;
- }
- else
- {
- i32_pos = M4OSA_strPrivFindLastSubStr(istr, ostr, ilength-1);
-
- if(i32_pos == -1)
- {
- return M4WAR_STR_NOT_FOUND;
- }
- }
-
- err_code = M4OSA_strPrivSetAndRepleceStr(istr, i32_pos, olength,
- nbuffer, nlength);
-
- if(M4OSA_ERR_IS_ERROR(err_code))
- {
- M4OSA_DEBUG(err_code, "M4OSA_strPrivReplaceSmallerStr");
-
- return err_code;
- }
- }
-
- return M4NO_ERROR;
-}
-
-
-M4OSA_ERR M4OSA_strPrivSPrintf(M4OSA_strStruct* str,
- M4OSA_Char *format,
- va_list marker)
-{
- M4OSA_Char *temp;
- M4OSA_Char *percentPointer;
- M4OSA_Char *newFormat;
- M4OSA_Char* strOut = str->pui8_buffer + str->ui32_length;
- M4OSA_UInt32 strOutMaxLen = str->ui32_size-1;
- M4OSA_Int32 newFormatLength = 0;
- M4OSA_UInt32 count_ll = 0;
- M4OSA_UInt32 count_tm = 0;
- M4OSA_UInt32 count_aa = 0;
- M4OSA_UInt32 count;
- M4OSA_UInt32 nbChar;
- M4OSA_Int32 iResult;
-
- M4OSA_Int32 err;
- M4OSA_Char flagChar[] = "'-+ #0";
- M4OSA_Char widthOrPrecisionChar[] = "*0123456789";
- M4OSA_Char otherPrefixChar[] = "hlL";
- M4OSA_Char conversionChar[] = "diouxXnfeEgGcCsSp%";
-
- M4OSA_TRACE2_2("M4OSA_strSPrintf\t\tM4OSA_String 0x%x\tM4OSA_Char* 0x%x",
- str, format);
-
-
- /* count the number of %[flags][width][.precision]ll[conversion] */
- temp = format;
-
- while(*temp)
- {
- /* get the next percent character */
- err = M4OSA_chrFindChar (temp, '%', &percentPointer);
-
- if((!percentPointer) || (M4WAR_CHR_NOT_FOUND == err))
- {
- break; /* "This is the End", (c) J. Morrisson */
- }
-
- temp = percentPointer+1; /* span it */
- if(!*temp) /* "This is the End", (c) J. Morrisson */
- {
- break;
- }
-
- /* span the optional flags */
- M4OSA_chrSpan(format, conversionChar, &nbChar);
- temp += nbChar;
-
- if(!*temp) /* "This is the End", (c) J. Morrisson */
- {
- break;
- }
-
- /* span the optional width */
- M4OSA_chrSpan(temp, widthOrPrecisionChar, &nbChar);
- temp += nbChar;
- if(!*temp) /* "This is the End", (c) J. Morrisson */
- {
- break;
- }
-
- if(*temp=='.')
- {
- /* span the optional precision */
- M4OSA_chrSpan(++temp, widthOrPrecisionChar, &nbChar);
- temp += nbChar;
- }
- if(!*temp) /* "This is the End", (c) J. Morrisson */
- {
- break;
- }
-
- if(M4OSA_chrLength(temp)>=2)
- {
-
- M4OSA_chrNCompare(temp, (M4OSA_Char*)"ll",2, &iResult);
- if (iResult != 0)
- {
- count_ll++; /* I got ONE */
- temp +=2; /* span the "ll" prefix */
- }
- else
- {
- M4OSA_chrNCompare(temp, (M4OSA_Char*)"tm",2, &iResult);
- if (iResult != 0) /* à voir si ce n'est pas == 0 */
- {
- count_tm++;
- temp +=2;
- }
- else
- {
- M4OSA_chrNCompare(temp, (M4OSA_Char*)"aa",2, &iResult);
- if (iResult != 0) /* à voir si ce n'est pas == 0 */
- {
- count_aa++;
- temp +=2;
- }
- }
- }
- }
-
- /* span the other optional prefix */
- M4OSA_chrSpan(temp, otherPrefixChar, &nbChar);
- temp += nbChar;
- if(!*temp) /* "This is the End", (c) J. Morrisson */
- {
- break;
- }
-
- M4OSA_chrSpan(temp, conversionChar, &nbChar);
- temp += nbChar;
- if(!*temp) /* "This is the End", (c) J. Morrisson */
- {
- break;
- }
-
- }
-
- count = count_ll + count_tm + count_aa;
-
- if(!count)
- {
- err = M4OSA_chrSPrintf(strOut,strOutMaxLen,format,marker);
-
- if(M4ERR_CHR_STR_OVERFLOW == err)
- {
- return M4ERR_STR_OVERFLOW;
- }
-
- return M4NO_ERROR;
- }
-
-
- newFormatLength = M4OSA_chrLength(format) + 1;
-
-#ifdef M4OSA_64BITS_SUPPORTED
-#ifdef M4OSA_FILE_POS_64_BITS_SUPPORTED
- newFormatLength += (count_ll+count_tm+count_aa);
-#else
- newFormatLength += (count_ll+count_tm-count_aa);
-#endif
-#elif defined M4OSA_64BITS_NOT_SUPPORTED
- newFormatLength -= (count_ll+count_tm+count_aa);
-#else
- return M4ERR_NOT_IMPLEMENTED;
-#endif
-
- newFormat =(M4OSA_Char*)M4OSA_32bitAlignedMalloc(newFormatLength,
- M4OSA_CHARSTAR, (M4OSA_Char*)"M4OSA_chrPrintf: newFormat");
- if(newFormat == M4OSA_NULL) return M4ERR_ALLOC;
- newFormat[newFormatLength-1] = '\0';
- temp = newFormat;
- /* copy format to newFormat, replacing
- %[flags][width][.precision]ll[conversion]
- by %[flags][width][.precision]I64[conversion] */
- while(*format)
- {
- M4OSA_chrSpanComplement(format, (M4OSA_Char*)"%", &nbChar);
- if(nbChar)
- {
- M4OSA_chrNCopy(temp,format,nbChar); /* copy characters before the % character */
- format +=nbChar;
- temp +=nbChar;
- }
- if(!*format)
- {
- break;
- }
- *temp++ = *format++; /* copy the % character */
-
- M4OSA_chrSpan(format, flagChar, &nbChar);
- if(nbChar)
- {
- M4OSA_chrNCopy(temp,format,nbChar); /* copy the flag characters */
- format +=nbChar;
- temp +=nbChar;
- }
- if(!*format)
- {
- break;
- }
-
- M4OSA_chrSpan(format, widthOrPrecisionChar, &nbChar);
- if(nbChar)
- {
- M4OSA_chrNCopy(temp,format,nbChar); /* copy the width characters */
- format +=nbChar;
- temp +=nbChar;
- }
- if(!*format)
- {
- break;
- }
- if(*format=='.')
- {
- *temp++ = *format++; /* copy the dot character */
- if(!*format)
- {
- break;
- }
-
- M4OSA_chrSpan(format, widthOrPrecisionChar, &nbChar);
- if(nbChar)
- {
- M4OSA_chrNCopy(temp,format,nbChar); /* copy the width characters */
- format +=nbChar;
- temp +=nbChar;
- }
- if(!*format)
- {
- break;
- }
- }
- if(M4OSA_chrLength(format)>=2)
- {
-
- M4OSA_chrNCompare(format, (M4OSA_Char*)"ll",2, &iResult);
- if (iResult != 0)
- {
-#ifdef M4OSA_64BITS_SUPPORTED
- *temp++ = 'I'; /* %I64 */
- *temp++ = '6';
- *temp++ = '4';
-#else
- *temp++ = 'l'; /* %l */
-#endif
- format +=2; /* span the "ll" prefix */
- }
- else
- {
- M4OSA_chrNCompare(format, (M4OSA_Char*)"tm",2, &iResult);
- if (iResult != 0)
- {
-#ifdef M4OSA_64BITS_SUPPORTED
- *temp++ = 'I'; /* %I64 */
- *temp++ = '6';
- *temp++ = '4';
-#else
- *temp++ = 'l'; /* %l */
-#endif
- format +=2; /* span the "tm" prefix */
- }
- else
- {
- M4OSA_chrNCompare(format, (M4OSA_Char*)"aa",2, &iResult);
- if (iResult != 0) /* à voir si ce n'est pas != 0 */
- {
-#ifdef M4OSA_64BITS_SUPPORTED
-#ifdef M4OSA_FILE_POS_64_BITS_SUPPORTED
- *temp++ = 'I'; /* %I64 */
- *temp++ = '6';
- *temp++ = '4';
-#else
- *temp++ = 'l';
-#endif
-#else
- *temp++ = 'l';
-#endif
- format +=2; /* span the "aa" prefix */
- }
- }
- }
- }
-
- M4OSA_chrSpan(format, otherPrefixChar, &nbChar);
-
- if(nbChar)
- {
- M4OSA_chrNCopy(temp,format,nbChar); /* copy the other Prefix */
- format +=nbChar;
- temp +=nbChar;
- }
-
- if(!*format)
- {
- break;
- }
-
- M4OSA_chrSpan(format, conversionChar, &nbChar);
- if(nbChar)
- {
- M4OSA_chrNCopy(temp,format,nbChar);
- format += nbChar;
- temp += nbChar;
- }
-
- if(!*format)
- {
- break;
- }
- }
-
- err = M4OSA_chrSPrintf(strOut,strOutMaxLen,newFormat,marker);
-
- free(newFormat);
-
- if (M4ERR_CHR_STR_OVERFLOW == err)
- {
- return M4ERR_STR_OVERFLOW;
- }
- else
- {
- return M4NO_ERROR;
- }
-}
-