xref: /DragonOS/kernel/src/common/string.h (revision 4fda81ce81939d83b74c8042d6fb4223deff3685)
12813126eSlogin #pragma once
22813126eSlogin #include "glib.h"
32813126eSlogin /**
42813126eSlogin  * @brief 拷贝整个字符串
52813126eSlogin  *
62813126eSlogin  * @param dst 目标地址
72813126eSlogin  * @param src 源地址
82813126eSlogin  * @return char* 目标字符串
92813126eSlogin  */
102813126eSlogin char *strcpy(char *dst, const char *src);
112813126eSlogin 
122813126eSlogin //计算字符串的长度(经过测试,该版本比采用repne/scasb汇编的运行速度快16.8%左右)
strlen(const char * s)132813126eSlogin static inline int strlen(const char *s)
142813126eSlogin {
152813126eSlogin     if (s == NULL)
162813126eSlogin         return 0;
172813126eSlogin     register int __res = 0;
182813126eSlogin     while (s[__res] != '\0')
192813126eSlogin     {
202813126eSlogin         ++__res;
212813126eSlogin     }
222813126eSlogin     return __res;
232813126eSlogin }
242813126eSlogin 
252813126eSlogin /**
262813126eSlogin  * @brief 测量字符串的长度
272813126eSlogin  *
282813126eSlogin  * @param src 字符串
292813126eSlogin  * @param maxlen 最大长度
302813126eSlogin  * @return long
312813126eSlogin  */
322813126eSlogin long strnlen(const char *src, unsigned long maxlen);
332813126eSlogin 
342813126eSlogin /*
352813126eSlogin         比较字符串 FirstPart and SecondPart
362813126eSlogin         FirstPart = SecondPart =>  0
372813126eSlogin         FirstPart > SecondPart =>  1
382813126eSlogin         FirstPart < SecondPart => -1
392813126eSlogin */
402813126eSlogin 
412813126eSlogin int strcmp(const char *FirstPart, const char *SecondPart);
422813126eSlogin 
43*4fda81ceSLoGin char *strncpy(char *restrict d, const char *restrict s, size_t n);
442813126eSlogin 
452813126eSlogin long strncpy_from_user(char *dst, const char *src, unsigned long size);
462813126eSlogin 
472813126eSlogin /**
482813126eSlogin  * @brief 测量来自用户空间的字符串的长度,会检验地址空间是否属于用户空间
492813126eSlogin  * @param src
502813126eSlogin  * @param maxlen
512813126eSlogin  * @return long
522813126eSlogin  */
532813126eSlogin long strnlen_user(const char *src, unsigned long maxlen);
542813126eSlogin 
552813126eSlogin /**
5627a97abdSDaJiYuQia  * @brief 拼接两个字符串(将src接到dest末尾)
5727a97abdSDaJiYuQia  *
5827a97abdSDaJiYuQia  * @param dest 目标串
5927a97abdSDaJiYuQia  * @param src 源串
6027a97abdSDaJiYuQia  * @return char*
6127a97abdSDaJiYuQia  */
6227a97abdSDaJiYuQia char *strcat(char *dest, const char *src);