/* * * 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.0 * @history * 2010.7.15 : Create */ #include #include #include #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_PTR SEC_OSAL_Strcat(OMX_PTR dest, OMX_PTR src) { return strcat(dest, src); } size_t SEC_OSAL_Strlen(const char *str) { return strlen(str); }