summaryrefslogtreecommitdiffstats
path: root/mdk-stage1/dietlibc/lib/strncmp.c
diff options
context:
space:
mode:
Diffstat (limited to 'mdk-stage1/dietlibc/lib/strncmp.c')
-rw-r--r--mdk-stage1/dietlibc/lib/strncmp.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/mdk-stage1/dietlibc/lib/strncmp.c b/mdk-stage1/dietlibc/lib/strncmp.c
index 7c08c0fa7..b3b56cfbb 100644
--- a/mdk-stage1/dietlibc/lib/strncmp.c
+++ b/mdk-stage1/dietlibc/lib/strncmp.c
@@ -1,6 +1,17 @@
#include <sys/types.h>
#include <string.h>
+/* gcc is broken and has a non-SUSv2 compliant internal prototype.
+ * This causes it to warn about a type mismatch here. Ignore it. */
int strncmp(const char *s1, const char *s2, size_t n) {
- return memccmp(s1,s2,0,n);
+ register const char* a=s1;
+ register const char* b=s2;
+ register const char* fini=a+n;
+ while (a<fini) {
+ register int res=*a-*b;
+ if (res) return res;
+ if (!*a) return 0;
+ ++a; ++b;
+ }
+ return 0;
}