1 /**
2 * @file lv_string.c
3 */
4
5 /*********************
6 * INCLUDES
7 *********************/
8 #include "../../lv_conf_internal.h"
9 #if LV_USE_STDLIB_STRING == LV_STDLIB_CLIB
10 #include "../lv_string.h"
11 #include "../lv_mem.h" /*Need lv_malloc*/
12 #include <string.h>
13
14 /*********************
15 * DEFINES
16 *********************/
17
18 /**********************
19 * TYPEDEFS
20 **********************/
21
22 /**********************
23 * STATIC PROTOTYPES
24 **********************/
25
26 /**********************
27 * STATIC VARIABLES
28 **********************/
29
30 /**********************
31 * MACROS
32 **********************/
33
34 /**********************
35 * GLOBAL FUNCTIONS
36 **********************/
37
lv_memcpy(void * dst,const void * src,size_t len)38 void * LV_ATTRIBUTE_FAST_MEM lv_memcpy(void * dst, const void * src, size_t len)
39 {
40 return memcpy(dst, src, len);
41 }
42
lv_memset(void * dst,uint8_t v,size_t len)43 void LV_ATTRIBUTE_FAST_MEM lv_memset(void * dst, uint8_t v, size_t len)
44 {
45 memset(dst, v, len);
46 }
47
lv_memmove(void * dst,const void * src,size_t len)48 void * LV_ATTRIBUTE_FAST_MEM lv_memmove(void * dst, const void * src, size_t len)
49 {
50 return memmove(dst, src, len);
51 }
52
lv_memcmp(const void * p1,const void * p2,size_t len)53 int lv_memcmp(const void * p1, const void * p2, size_t len)
54 {
55 return memcmp(p1, p2, len);
56 }
57
lv_strlen(const char * str)58 size_t lv_strlen(const char * str)
59 {
60 return strlen(str);
61 }
62
lv_strlcpy(char * dst,const char * src,size_t dst_size)63 size_t lv_strlcpy(char * dst, const char * src, size_t dst_size)
64 {
65 size_t src_len = strlen(src);
66 if(dst_size > 0) {
67 size_t copy_size = src_len < dst_size ? src_len : dst_size - 1;
68 memcpy(dst, src, copy_size);
69 dst[copy_size] = '\0';
70 }
71 return src_len;
72 }
73
lv_strncpy(char * dst,const char * src,size_t dest_size)74 char * lv_strncpy(char * dst, const char * src, size_t dest_size)
75 {
76 return strncpy(dst, src, dest_size);
77 }
78
lv_strcpy(char * dst,const char * src)79 char * lv_strcpy(char * dst, const char * src)
80 {
81 return strcpy(dst, src);
82 }
83
lv_strcmp(const char * s1,const char * s2)84 int lv_strcmp(const char * s1, const char * s2)
85 {
86 return strcmp(s1, s2);
87 }
88
lv_strncmp(const char * s1,const char * s2,size_t len)89 int lv_strncmp(const char * s1, const char * s2, size_t len)
90 {
91 return strncmp(s1, s2, len);
92 }
93
lv_strdup(const char * src)94 char * lv_strdup(const char * src)
95 {
96 /*strdup uses malloc, so use the lv_malloc when LV_USE_STDLIB_MALLOC is not LV_STDLIB_CLIB */
97 size_t len = lv_strlen(src) + 1;
98 char * dst = lv_malloc(len);
99 if(dst == NULL) return NULL;
100
101 lv_memcpy(dst, src, len); /*do memcpy is faster than strncpy when length is known*/
102 return dst;
103 }
104
lv_strcat(char * dst,const char * src)105 char * lv_strcat(char * dst, const char * src)
106 {
107 return strcat(dst, src);
108 }
109
lv_strncat(char * dst,const char * src,size_t src_len)110 char * lv_strncat(char * dst, const char * src, size_t src_len)
111 {
112 return strncat(dst, src, src_len);
113 }
114
lv_strchr(const char * str,int c)115 char * lv_strchr(const char * str, int c)
116 {
117 return strchr(str, c);
118 }
119
120 /**********************
121 * STATIC FUNCTIONS
122 **********************/
123
124 #endif /*LV_STDLIB_CLIB*/
125