/****************************************************************************/ /* strlen */ /****************************************************************************/ size_t strlen(const char *s) { const char *r = s - 1;
while (*++r); return r - s; }
/****************************************************************************/ /* strcpy */ /****************************************************************************/ char *strcpy(char *s1, const char *s2) { char *result = s1;
while (*s1++ = *s2++); return result; }
/****************************************************************************/ /* strncpy */ /****************************************************************************/ char *strncpy(char *s1, const char *s2, size_t n) { char *result = s1;
if (n == 0) return result; while ((*s1++ = *s2++) && --n != 0); if (n > 1) { --n; do *s1++ = 0; while (--n); } return result; }
/****************************************************************************/ /* strcat */ /****************************************************************************/ char *strcat(char *s1, const char *s2) { char *result = s1;
while (*s1++); --s1; while (*s1++ = *s2++); return result; }
/****************************************************************************/ /* strncat */ /****************************************************************************/ char *strncat(char *s1, const char *s2, size_t n) { char *result = s1;
while (*s1++); --s1; while (n-- != 0) if (!(*s1++ = *s2++)) return result; *s1 = 0; return result; }
/****************************************************************************/ /* strchr */ /****************************************************************************/ char *strchr(const char *s, int c) { do if (*s == c) return (char *)s; while (*s++); return NULL; }
/****************************************************************************/ /* strrchr */ /****************************************************************************/ char *strrchr(const char *s, int c) { char *result = NULL; do if (*s == c) result = (char *)s; while (*s++); return(result); }
/****************************************************************************/ /* memchr */ /****************************************************************************/ void *memchr(const void *s, int c, size_t n) { const unsigned char *st = (unsigned char *)s; unsigned char ch = c;
while (n-- != 0) if (*st++ == ch) { return (void *)--st; } return NULL; }
/****************************************************************************/ /* memset */ /****************************************************************************/ void *memset(void *s, int c, size_t n) { unsigned char *st = (unsigned char *)s; unsigned char ch = c;
while (n-- > 0) *st++ = ch; return s; }