• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  *
3  * Copyright 2010 Samsung Electronics S.LSI Co. LTD
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 
18 /*
19  * @file        SEC_OSAL_ETC.c
20  * @brief
21  * @author      SeungBeom Kim (sbcrux.kim@samsung.com)
22  * @version     1.0
23  * @history
24  *   2010.7.15 : Create
25  */
26 
27 #include <stdio.h>
28 #include <stdlib.h>
29 #include <string.h>
30 
31 #include "SEC_OSAL_Memory.h"
32 #include "SEC_OSAL_ETC.h"
33 
34 
35 #ifndef HAVE_GETLINE
getline(char ** ppLine,size_t * pLen,FILE * pStream)36 ssize_t getline(char **ppLine, size_t *pLen, FILE *pStream)
37 {
38     char *pCurrentPointer = NULL;
39     size_t const chunk = 512;
40 
41     size_t defaultBufferSize = chunk + 1;
42     size_t retSize = 0;
43 
44     if (*ppLine == NULL) {
45         *ppLine = (char *)malloc(defaultBufferSize);
46         if (*ppLine == NULL) {
47             retSize = -1;
48             goto EXIT;
49         }
50         *pLen = defaultBufferSize;
51     }
52     else {
53         if (*pLen < defaultBufferSize) {
54             *ppLine = (char *)realloc(*ppLine, defaultBufferSize);
55             if (*ppLine == NULL) {
56                 retSize = -1;
57                 goto EXIT;
58             }
59             *pLen = defaultBufferSize;
60         }
61     }
62 
63     while (1) {
64         size_t i;
65         size_t j = 0;
66         size_t readByte = 0;
67 
68         pCurrentPointer = *ppLine + readByte;
69 
70         i = fread(pCurrentPointer, 1, chunk, pStream);
71         if (i < chunk && ferror(pStream)) {
72             retSize = -1;
73             goto EXIT;
74         }
75         while (j < i) {
76             ++j;
77             if (*pCurrentPointer++ == (char)'\n') {
78                 *pCurrentPointer = '\0';
79                 if (j != i) {
80                     if (fseek(pStream, j - i, SEEK_CUR)) {
81                         retSize = -1;
82                         goto EXIT;
83                 }
84                     if (feof(pStream))
85                         clearerr(pStream);
86                 }
87                 readByte += j;
88                 retSize = readByte;
89                 goto EXIT;
90             }
91         }
92 
93         readByte += j;
94         if (feof(pStream)) {
95             if (readByte) {
96                 retSize = readByte;
97                 goto EXIT;
98             }
99             if (!i) {
100                 retSize = -1;
101                 goto EXIT;
102             }
103         }
104 
105         i = ((readByte + (chunk * 2)) / chunk) * chunk;
106         if (i != *pLen) {
107             *ppLine = (char *)realloc(*ppLine, i);
108             if (*ppLine == NULL) {
109                 retSize = -1;
110                 goto EXIT;
111         }
112             *pLen = i;
113         }
114     }
115 
116 EXIT:
117     return retSize;
118 }
119 #endif /* HAVE_GETLINE */
120 
SEC_OSAL_Strcpy(OMX_PTR dest,OMX_PTR src)121 OMX_PTR SEC_OSAL_Strcpy(OMX_PTR dest, OMX_PTR src)
122 {
123     return strcpy(dest, src);
124 }
125 
SEC_OSAL_Strncpy(OMX_PTR dest,OMX_PTR src,size_t num)126 OMX_PTR SEC_OSAL_Strncpy(OMX_PTR dest, OMX_PTR src, size_t num)
127 {
128     return strncpy(dest, src, num);
129 }
130 
SEC_OSAL_Strcmp(OMX_PTR str1,OMX_PTR str2)131 OMX_S32 SEC_OSAL_Strcmp(OMX_PTR str1, OMX_PTR str2)
132 {
133     return strcmp(str1, str2);
134 }
135 
SEC_OSAL_Strcat(OMX_PTR dest,OMX_PTR src)136 OMX_PTR SEC_OSAL_Strcat(OMX_PTR dest, OMX_PTR src)
137 {
138     return strcat(dest, src);
139 }
140 
SEC_OSAL_Strlen(const char * str)141 size_t SEC_OSAL_Strlen(const char *str)
142 {
143     return strlen(str);
144 }
145