00001 #ifndef __STRNCMP_H_ 00002 #define __STRNCMP_H_ 00003 00004 #include <nlibc.h> 00005 #include <string/stringexpand.h> 00006 00036 #ifndef __HAS_MAIN 00037 extern int strncmp(const char *s1, const char *s2, size_t n); 00038 #else 00039 #if !defined(__cflow_processed) || defined(_uses_strncmp_strncmp_h) 00040 int strncmp(const char *s1, const char *s2, size_t n) { 00041 int l1 = strlen(s1); 00042 int l2 = strlen(s2); 00043 int *a1 = (int *)stringexpand(s1, l1); 00044 int *a2 = (int *)stringexpand(s2, l2); 00045 00046 if( n==0 ) 00047 return 0; 00048 do { 00049 if (*a1 != *a2++) 00050 return (*a1 - *(--a2)); 00051 if (*a1++ == 0) 00052 break; 00053 } while (--n != 0); 00054 return (0); 00055 } 00056 #endif // _uses_strncmp 00057 #endif // Has Main 00058 00059 #endif // __STRNCMP_H_