• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2022 Beken Corporation
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include <common/bk_include.h>
17 
18 #include <string.h>
19 #include <stdlib.h>
20 #include <stdio.h>
21 #include <os/str.h>
22 #include <os/mem.h>
23 
os_strchr(const char * s,int c)24 char *os_strchr(const char *s, int c)
25 {
26     return strchr(s, c);
27 }
28 
os_strlen(const char * str)29 UINT32 os_strlen(const char *str)
30 {
31     return strlen(str);
32 }
33 
os_strcmp(const char * s1,const char * s2)34 INT32 os_strcmp(const char *s1, const char *s2)
35 {
36     return strcmp(s1, s2);
37 }
38 
os_strtoul(const char * nptr,char ** endptr,int base)39 UINT32 os_strtoul(const char *nptr, char **endptr, int base)
40 {
41     return strtoul(nptr, endptr, base);
42 }
43 
os_strcpy(char * out,const char * in)44 char *os_strcpy(char *out, const char *in)
45 {
46     return strcpy(out, in);
47 }
48 
os_strncpy(char * out,const char * in,const UINT32 n)49 char *os_strncpy(char *out, const char *in, const UINT32 n)
50 {
51     return strncpy(out, in, (unsigned int)n);
52 }
53 
os_strlcpy(char * dest,const char * src,size_t siz)54 size_t os_strlcpy(char *dest, const char *src, size_t siz)
55 {
56     const char *s = src;
57     size_t left = siz;
58 
59     if (left)
60     {
61         /* Copy string up to the maximum size of the dest buffer */
62         while (--left != 0)
63         {
64             if ((*dest++ = *s++) == '\0')
65                 break;
66         }
67     }
68 
69     if (left == 0)
70     {
71         /* Not enough room for the string; force NUL-termination */
72         if (siz != 0)
73             *dest = '\0';
74 
75         while (*s++)
76             ; /* determine total src string length */
77     }
78 
79     return s - src - 1;
80 }
81 
os_strncmp(const char * s1,const char * s2,const UINT32 n)82 INT32 os_strncmp(const char *s1, const char *s2, const UINT32 n)
83 {
84     return strncmp(s1, s2, (unsigned int)n);
85 }
86 
os_snprintf(char * buf,UINT32 size,const char * fmt,...)87 INT32 os_snprintf(char *buf, UINT32 size, const char *fmt, ...)
88 {
89     va_list args;
90     INT32 rc;
91 
92     va_start(args, fmt);
93     rc = vsnprintf(buf, size, fmt, args);
94     va_end(args);
95 
96     /* if want to print more than the limitation */
97     if (rc > size)
98         rc = (INT32)size - rc;
99 
100     return rc;
101 }
102 
os_vsnprintf(char * buf,UINT32 size,const char * fmt,va_list ap)103 INT32 os_vsnprintf(char *buf, UINT32 size, const char *fmt, va_list ap)
104 {
105     return vsnprintf(buf, size, fmt, ap);
106 }
107 
os_strdup(const char * s)108 char *os_strdup(const char *s)
109 {
110     char *res;
111     size_t len;
112 
113     if (s == NULL)
114         return NULL;
115 
116     len = os_strlen(s);
117     res = os_malloc(len + 1);
118     if (res)
119         os_memcpy(res, s, len + 1);
120 
121     return res;
122 }
123 
124 
os_strcasecmp(const char * s1,const char * s2)125 int os_strcasecmp(const char *s1, const char *s2)
126 {
127     /*
128      * Ignoring case is not required for main functionality, so just use
129      * the case sensitive version of the function.
130      */
131     return os_strcmp(s1, s2);
132 }
133 
134 
os_strncasecmp(const char * s1,const char * s2,size_t n)135 int os_strncasecmp(const char *s1, const char *s2, size_t n)
136 {
137     /*
138      * Ignoring case is not required for main functionality, so just use
139      * the case sensitive version of the function.
140      */
141     return os_strncmp(s1, s2, n);
142 }
143 
os_strrchr(const char * s,int c)144 char *os_strrchr(const char *s, int c)
145 {
146     return strrchr(s, c);
147 }
148 
os_strstr(const char * haystack,const char * needle)149 char *os_strstr(const char *haystack, const char *needle)
150 {
151     return strstr(haystack, needle);
152 }
153 // EOF
154