2 * AcessOS Basic C Library
11 * \fn EXPORT int strcmp(const char *s1, const char *s2)
12 * \brief Compare two strings
14 EXPORT int strcmp(const char *s1, const char *s2)
16 while(*s1 == *s2 && *s1 != '\0' && *s2 != '\0') {
19 return (int)*s1 - (int)*s2;
23 * \fn EXPORT char *strcpy(char *dst, const char *src)
24 * \brief Copy a string to another
26 EXPORT char *strcpy(char *dst, const char *src)
38 * \fn EXPORT int strlen(const char *str)
39 * \brief Get the length of a string
41 EXPORT int strlen(const char *str)
44 for(retval = 0; *str != '\0'; str++)
50 * \fn EXPORT int strncmp(const char *s1, const char *s2, size_t len)
51 * \brief Compare two strings with a limit
53 EXPORT int strncmp(const char *s1, const char *s2, size_t len)
55 while(--len && *s1 == *s2 && *s1 != '\0' && *s2 != '\0') {
58 return (int)*s1 - (int)*s2;
62 * \fn EXPORT char *strdup(const char *str)
63 * \brief Duplicate a string using heap memory
64 * \note Defined in POSIX Spec, not C spec
66 EXPORT char *strdup(const char *str)
68 size_t len = strlen(str);
69 char *ret = malloc(len+1);
70 if(ret == NULL) return NULL;
77 * \fn EXPORT void *memset(void *dest, int val, size_t num)
78 * \brief Clear memory with the specified value
80 EXPORT void *memset(void *dest, int val, size_t num)
82 unsigned char *p = dest;
83 while(num--) *p++ = val;
88 * \fn EXPORT void *memcpy(void *dest, const void *src, size_t count)
89 * \brief Copy one memory area to another
91 EXPORT void *memcpy(void *dest, const void *src, size_t count)
93 char *sp = (char *)src;
94 char *dp = (char *)dest;
95 for(;count--;) *dp++ = *sp++;
100 * \fn EXPORT void *memmove(void *dest, const void *src, size_t count)
101 * \brief Copy data in memory, avoiding overlap problems
103 EXPORT void *memmove(void *dest, const void *src, size_t count)
105 char *sp = (char *)src;
106 char *dp = (char *)dest;
107 // Check if corruption will happen
108 if( (unsigned int)dest > (unsigned int)src && (unsigned int)dest < (unsigned int)src+count )
109 for(;count--;) dp[count] = sp[count];
111 for(;count--;) *dp++ = *sp++;