1extern void abort (void); 2extern int inside_main; 3 4typedef __SIZE_TYPE__ size_t; 5 6int 7strncmp(const char *s1, const char *s2, size_t n) 8{ 9 const unsigned char *u1 = (const unsigned char *)s1; 10 const unsigned char *u2 = (const unsigned char *)s2; 11 unsigned char c1, c2; 12 13#ifdef __OPTIMIZE__ 14 if (inside_main) 15 abort(); 16#endif 17 18 while (n > 0) 19 { 20 c1 = *u1++, c2 = *u2++; 21 if (c1 == '\0' || c1 != c2) 22 return c1 - c2; 23 n--; 24 } 25 return c1 - c2; 26} 27