diff --git a/include/rtthread.h b/include/rtthread.h index 1c78cbde43..393b40b1b6 100644 --- a/include/rtthread.h +++ b/include/rtthread.h @@ -601,12 +601,13 @@ void *rt_memcpy(void *dest, const void *src, rt_ubase_t n); char *rt_strdup(const char *s); #ifndef RT_KSERVICE_USING_STDLIB -void *rt_memmove(void *dest, const void *src, rt_ubase_t n); -rt_int32_t rt_memcmp(const void *cs, const void *ct, rt_ubase_t count); +void *rt_memmove(void *dest, const void *src, rt_size_t n); +rt_int32_t rt_memcmp(const void *cs, const void *ct, rt_size_t count); char *rt_strstr(const char *str1, const char *str2); rt_int32_t rt_strcasecmp(const char *a, const char *b); -char *rt_strncpy(char *dest, const char *src, rt_ubase_t n); -rt_int32_t rt_strncmp(const char *cs, const char *ct, rt_ubase_t count); +char *rt_strcpy(char *dst, const char *src); +char *rt_strncpy(char *dest, const char *src, rt_size_t n); +rt_int32_t rt_strncmp(const char *cs, const char *ct, rt_size_t count); rt_int32_t rt_strcmp(const char *cs, const char *ct); rt_size_t rt_strlen(const char *src); #else @@ -615,6 +616,7 @@ rt_size_t rt_strlen(const char *src); #define rt_memcmp(cs, ct, count) memcmp(cs, ct, count) #define rt_strstr(str1, str2) strstr(str1, str2) #define rt_strcasecmp(a, b) strcasecmp(a, b) +#define rt_strcpy(dest, src) strcpy(dest, src) #define rt_strncpy(dest, src, n) strncpy(dest, src, n) #define rt_strncmp(cs, ct, count) strncmp(cs, ct, count) #define rt_strcmp(cs, ct) strcmp(cs, ct) diff --git a/src/kservice.c b/src/kservice.c index a441124816..fa0da4c7c4 100644 --- a/src/kservice.c +++ b/src/kservice.c @@ -18,6 +18,7 @@ * 2013-09-24 aozima make sure the device is in STREAM mode when used by rt_kprintf. * 2015-07-06 Bernard Add rt_assert_handler routine. * 2021-02-28 Meco Man add RT_KSERVICE_USING_STDLIB + * 2021-12-20 Meco Man implement rt_strcpy() */ #include @@ -300,7 +301,7 @@ RTM_EXPORT(rt_memcpy); * * @return The address of destination memory. */ -void *rt_memmove(void *dest, const void *src, rt_ubase_t n) +void *rt_memmove(void *dest, const void *src, rt_size_t n) { char *tmp = (char *)dest, *s = (char *)src; @@ -336,7 +337,7 @@ RTM_EXPORT(rt_memmove); * If the result > 0, cs is greater than ct. * If the result = 0, cs is equal to ct. */ -rt_int32_t rt_memcmp(const void *cs, const void *ct, rt_ubase_t count) +rt_int32_t rt_memcmp(const void *cs, const void *ct, rt_size_t count) { const unsigned char *su1, *su2; int res = 0; @@ -421,7 +422,7 @@ RTM_EXPORT(rt_strcasecmp); * * @return The address where the copied content is stored. */ -char *rt_strncpy(char *dst, const char *src, rt_ubase_t n) +char *rt_strncpy(char *dst, const char *src, rt_size_t n) { if (n != 0) { @@ -444,6 +445,21 @@ char *rt_strncpy(char *dst, const char *src, rt_ubase_t n) } RTM_EXPORT(rt_strncpy); +/** + * This function will copy string. + * + * @param dst points to the address used to store the copied content. + * + * @param src is the string to be copied. + * + * @return The address where the copied content is stored. + */ +char *rt_strcpy(char *dst, const char *src) +{ + return rt_strncpy(dst, src, (rt_size_t)-1); +} +RTM_EXPORT(rt_strcpy); + /** * This function will compare two strings with specified maximum length. * @@ -458,7 +474,7 @@ RTM_EXPORT(rt_strncpy); * If the result > 0, cs is greater than ct. * If the result = 0, cs is equal to ct. */ -rt_int32_t rt_strncmp(const char *cs, const char *ct, rt_ubase_t count) +rt_int32_t rt_strncmp(const char *cs, const char *ct, rt_size_t count) { register signed char __res = 0;