#include "string.h" void *memset( void *s, int c, size_t n ) { for( size_t i = 0; i < n; i++ ) { ((char *)s)[i] = c; } return s; } void *memmove( void *d, const void *s, size_t n ) { const char *ss = (const char *)s; char *dd = (char *)d; if( dd == ss ) return d; if( dd <= ss ) { while( n > 0 ) { *dd++ = *ss++; n--; } } else { dd += n; ss += n; while( n > 0 ) { *--dd = *--ss; n--; } } return d; } void *memcpy( void *d, const void *s, size_t n ) { const char *ss = (const char *)s; char *dd = (char *)d; if( dd == ss ) return d; while( n > 0 ) { *dd++ = *ss++; n--; } return d; } size_t strlen( const char *s ) { size_t len; const char *p = s; for( len = 0; *p; len++, p++ ); return len; } int strcmp( const char *s1, const char *s2 ) { while( *s1 && *s2 && *s1 == *s2 ) { s1++; s2++; } return *s1 - *s2; } size_t strlcpy( char *d, const char *s, size_t n ) { size_t len = 0; while( len < n && s[len] != '\0' ) { d[len] = s[len]; len++; } d[len] = '\0'; while( s[len] != '\0' ) { len++; } if( len >= n ) { d[n-1] = '\0'; } return len; } size_t strlcat( char *d, const char *s, size_t n ) { size_t len = 0; const char *ss = s; char *dd = d; while( len < n && *dd != '\0' ) { len++; dd++; } if( len == n ) { return len + strlen( s ); } while( len + 1 < n && ( *dd++ = *ss++ ) ) { len++; } *dd = '\0'; return len; }