android_hardware_samsung/exynos/multimedia/openmax/osal/SEC_OSAL_ETC.c

155 lines
3.6 KiB
C
Raw Permalink Normal View History

/*
*
* Copyright 2010 Samsung Electronics S.LSI Co. LTD
*
* 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 SEC_OSAL_ETC.c
* @brief
* @author SeungBeom Kim (sbcrux.kim@samsung.com)
* @version 1.1.0
* @history
* 2010.7.15 : Create
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "SEC_OSAL_Memory.h"
#include "SEC_OSAL_ETC.h"
#ifndef HAVE_GETLINE
ssize_t getline(char **ppLine, size_t *pLen, FILE *pStream)
{
char *pCurrentPointer = NULL;
size_t const chunk = 512;
size_t defaultBufferSize = chunk + 1;
size_t retSize = 0;
if (*ppLine == NULL) {
*ppLine = (char *)malloc(defaultBufferSize);
if (*ppLine == NULL) {
retSize = -1;
goto EXIT;
}
*pLen = defaultBufferSize;
}
else {
if (*pLen < defaultBufferSize) {
*ppLine = (char *)realloc(*ppLine, defaultBufferSize);
if (*ppLine == NULL) {
retSize = -1;
goto EXIT;
}
*pLen = defaultBufferSize;
}
}
while (1) {
size_t i;
size_t j = 0;
size_t readByte = 0;
pCurrentPointer = *ppLine + readByte;
i = fread(pCurrentPointer, 1, chunk, pStream);
if (i < chunk && ferror(pStream)) {
retSize = -1;
goto EXIT;
}
while (j < i) {
++j;
if (*pCurrentPointer++ == (char)'\n') {
*pCurrentPointer = '\0';
if (j != i) {
if (fseek(pStream, j - i, SEEK_CUR)) {
retSize = -1;
goto EXIT;
}
if (feof(pStream))
clearerr(pStream);
}
readByte += j;
retSize = readByte;
goto EXIT;
}
}
readByte += j;
if (feof(pStream)) {
if (readByte) {
retSize = readByte;
goto EXIT;
}
if (!i) {
retSize = -1;
goto EXIT;
}
}
i = ((readByte + (chunk * 2)) / chunk) * chunk;
if (i != *pLen) {
*ppLine = (char *)realloc(*ppLine, i);
if (*ppLine == NULL) {
retSize = -1;
goto EXIT;
}
*pLen = i;
}
}
EXIT:
return retSize;
}
#endif /* HAVE_GETLINE */
OMX_PTR SEC_OSAL_Strcpy(OMX_PTR dest, OMX_PTR src)
{
return strcpy(dest, src);
}
OMX_PTR SEC_OSAL_Strncpy(OMX_PTR dest, OMX_PTR src, size_t num)
{
return strncpy(dest, src, num);
}
OMX_S32 SEC_OSAL_Strcmp(OMX_PTR str1, OMX_PTR str2)
{
return strcmp(str1, str2);
}
OMX_S32 SEC_OSAL_Strncmp(OMX_PTR str1, OMX_PTR str2, size_t num)
{
return strncmp(str1, str2, num);
}
OMX_PTR SEC_OSAL_Strcat(OMX_PTR dest, OMX_PTR src)
{
return strcat(dest, src);
}
OMX_PTR SEC_OSAL_Strncat(OMX_PTR dest, OMX_PTR src, size_t num)
{
return strncat(dest, src, num);
}
size_t SEC_OSAL_Strlen(const char *str)
{
return strlen(str);
}