1 /*
2 * Copyright (c) 2020 HiSilicon (Shanghai) Technologies CO., LIMITED.
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 * Description: string
15 *
16 * Create: 2021-12-16
17 */
18
19 #include <linux/kernel.h>
20 #include "soc_osal.h"
21 #include "osal_inner.h"
osal_memncmp(const void * buf1,const void * buf2,unsigned long size)22 int osal_memncmp(const void *buf1, const void *buf2, unsigned long size)
23 {
24 return memcmp(buf1, buf2, (size_t)size);
25 }
osal_strcmp(const char * cs,const char * ct)26 int osal_strcmp(const char *cs, const char *ct)
27 {
28 return strcmp(cs, ct);
29 }
osal_strncmp(const char * s1,const char * s2,unsigned long size)30 int osal_strncmp(const char *s1, const char *s2, unsigned long size)
31 {
32 return strncmp(s1, s2, (size_t)size);
33 }
34
osal_strcasecmp(const char * s1,const char * s2)35 int osal_strcasecmp(const char *s1, const char *s2)
36 {
37 return strcasecmp(s1, s2);
38 }
osal_strncasecmp(const char * s1,const char * s2,unsigned long size)39 int osal_strncasecmp(const char *s1, const char *s2, unsigned long size)
40 {
41 return strncasecmp(s1, s2, (size_t)size);
42 }
43
osal_strchr(const char * s,int c)44 char *osal_strchr(const char *s, int c)
45 {
46 return strchr(s, c);
47 }
osal_strnchr(const char * s,int count,int c)48 char *osal_strnchr(const char *s, int count, int c)
49 {
50 if (s == NULL || count <= 0) {
51 return NULL;
52 }
53
54 while ((count-- != 0) && (*s != '\0')) {
55 if (*s == (char)c) {
56 return (char *)s;
57 }
58 ++s;
59 }
60 return NULL;
61 }
62
osal_strrchr(const char * s,int c)63 char *osal_strrchr(const char *s, int c)
64 {
65 return strrchr(s, c);
66 }
67
osal_strstr(const char * s1,const char * s2)68 char *osal_strstr(const char *s1, const char *s2)
69 {
70 return strstr(s1, s2);
71 }
osal_strnstr(const char * s1,const char * s2,int len)72 char *osal_strnstr(const char *s1, const char *s2, int len)
73 {
74 size_t len1, len2, slen_tmp;
75 if (s1 == NULL || s2 == NULL) {
76 return NULL;
77 }
78 len2 = strlen(s2);
79 if (len2 == 0) {
80 return (char *)s1;
81 }
82 if (len < len2) {
83 return NULL;
84 }
85 len1 = strlen(s1);
86 slen_tmp = len > len1 ? len1 : len;
87
88 for (; slen_tmp >= len2; slen_tmp--) {
89 if (!strncmp(s1, s2, len2)) {
90 return (char *)s1;
91 }
92 s1++;
93 }
94
95 return NULL;
96 }
osal_strlen(const char * s)97 unsigned int osal_strlen(const char *s)
98 {
99 return strlen(s);
100 }
osal_strnlen(const char * s,unsigned int count)101 unsigned int osal_strnlen(const char *s, unsigned int count)
102 {
103 return strnlen(s, count);
104 }
osal_strpbrk(const char * cs,const char * ct)105 char *osal_strpbrk(const char *cs, const char *ct)
106 {
107 return strpbrk(cs, ct);
108 }
osal_strsep(char ** s,const char * ct)109 char *osal_strsep(char **s, const char *ct)
110 {
111 return strsep(s, ct);
112 }
osal_strspn(const char * s,const char * accept)113 unsigned int osal_strspn(const char *s, const char *accept)
114 {
115 return strspn(s, accept);
116 }
osal_strcspn(const char * s,const char * reject)117 unsigned int osal_strcspn(const char *s, const char *reject)
118 {
119 return strcspn(s, reject);
120 }
osal_memscan(void * addr,int c,int size)121 void *osal_memscan(void *addr, int c, int size)
122 {
123 return NULL;
124 }
osal_memcmp(const void * cs,const void * ct,int count)125 int osal_memcmp(const void *cs, const void *ct, int count)
126 {
127 return memcmp(cs, ct, (size_t)count);
128 }
osal_memchr(const void * s,int c,int n)129 void *osal_memchr(const void *s, int c, int n)
130 {
131 return memchr(s, c, n);
132 }
osal_memchr_inv(const void * start,int c,int bytes)133 void *osal_memchr_inv(const void *start, int c, int bytes)
134 {
135 osal_unused(start, c, bytes);
136 return NULL;
137 }
osal_strtoull(const char * cp,char ** endp,unsigned int base)138 unsigned long long osal_strtoull(const char *cp, char **endp, unsigned int base)
139 {
140 osal_unused(cp, endp, (int)base);
141 return 0;
142 }
osal_strtoul(const char * cp,char ** endp,unsigned int base)143 unsigned long osal_strtoul(const char *cp, char **endp, unsigned int base)
144 {
145 return strtoul(cp, endp, (int)base);
146 }
osal_strtol(const char * cp,char ** endp,unsigned int base)147 long osal_strtol(const char *cp, char **endp, unsigned int base)
148 {
149 return simple_strtol(cp, endp, base);
150 }
osal_strtoll(const char * cp,char ** endp,unsigned int base)151 long long osal_strtoll(const char *cp, char **endp, unsigned int base)
152 {
153 osal_unused(cp, endp, base);
154 return 0;
155 }
156