/* Slooow, but small string operations, so that we don't have to link libc5/glibc in. These are needed before the second part is uncompressed. Originally from linux/lib/string.c, which is Copyright (C) 1991, 1992 Linus Torvalds */ #include char *strcpy(char *dest, const char *src) { char *tmp = dest; while ((*dest++ = *src++) != '\0'); return tmp; } int strcmp(const char *cs,const char *ct) { register signed char __res; while (1) if ((__res = *cs - *ct++) != 0 || !*cs++) break; return __res; } void *memset(void *s,int c,size_t count) { char *xs = (char *) s; while (count--) *xs++ = c; return s; } void __bzero(void *s,size_t count) { memset(s,0,count); } void *memcpy(void *dest,const void *src,size_t count) { char *tmp = (char *) dest, *s = (char *) src; while (count--) *tmp++ = *s++; return dest; } void *memmove(void *dest,const void *src,size_t count) { char *d, *s; if (dest <= src) { d = (char *) dest; s = (char *) src; while (count--) *d++ = *s++; } else { d = (char *) dest + count; s = (char *) src + count; while (count--) *--d = *--s; } return dest; } char *strchr(const char *s, int c) { for(; *s != (char) c; ++s) if (*s == '\0') return 0; return (char *) s; } int strlen(const char *s) { const char *sc; for (sc = s; *sc != '\0'; ++sc); return sc - s; } int strncmp(const char *cs, const char *ct, size_t count) { register signed char __res = 0; while (count) { if ((__res = *cs - *ct++) != 0 || !*cs++) break; count--; } return __res; } int memcmp(const void *cs, const void *ct, size_t count) { const unsigned char *su1, *su2; signed char res = 0; for( su1 = cs, su2 = ct; 0 < count; ++su1, ++su2, count--) if ((res = *su1 - *su2) != 0) break; return res; } .