#include /* Compare two strings */ int strcmp(const char *s1, const char *s2) { for (; *s1 == *s2 && *s1 && *s2; s1++, s2++); return *(unsigned char *) s1 - *(unsigned char *) s2; } /* Compare two limited strings */ int strncmp(const char *s1, const char *s2, size_t n) { if (!n--) return 0; for (; *s1 == *s2 && *s1 && *s2 && n; s1++, s2++, n--); return *(unsigned char *) s1 - *(unsigned char *) s2; } /* Copy a string */ char * strcpy(char *dest, const char *src) { char *ret = dest; while (*src) *dest++ = *src++; *dest = '\0'; return ret; } /* Copy a limited string */ char * strncpy(char *dest, const char *src, size_t n) { char *ret = dest; while (*src && n--) *dest++ = *src++; *dest = '\0'; return ret; } /* Find length of a string */ size_t strlen(const char *str) { if (!str) return 0; size_t i; for (i = 0; str[i]; i++); return i; } /* Find length of a limited string */ size_t strnlen(const char *str, size_t n) { if (!str) return 0; size_t i; for (i = 0; str[i] && i <= n; i++); return i; }