From 75ad704490f402406e0e59ebb9173245d785710a Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Thu, 13 Dec 2001 00:44:09 +0000 Subject: [PATCH] Implement strlen strdup strcmp git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1446 91177308-0d34-0410-b5e6-96231b3b80d8 --- tools/lli/RuntimeLib.lc | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/tools/lli/RuntimeLib.lc b/tools/lli/RuntimeLib.lc index 6a02c238772..24922c65d86 100644 --- a/tools/lli/RuntimeLib.lc +++ b/tools/lli/RuntimeLib.lc @@ -141,6 +141,41 @@ long int atol(const char *nptr) { } +unsigned strlen(const char *Str) { + int Count = 0; + while (*Str) { ++Count; ++Str; } + return Count; +} + +char *strdup(const char *str) { + int Len = strlen(str); + char *Result = (char*)malloc((Len+1)*sizeof(char)); + memcpy(Result, str, Len+1); + return Result; +} + + +/* Compare S1 and S2, returning less than, equal to or + greater than zero if S1 is lexicographically less than, + equal to or greater than S2. */ +int strcmp (const char *p1, const char *p2) { + register const unsigned char *s1 = (const unsigned char *) p1; + register const unsigned char *s2 = (const unsigned char *) p2; + unsigned char c1, c2; + + do + { + c1 = (unsigned char) *s1++; + c2 = (unsigned char) *s2++; + if (c1 == '\0') + return c1 - c2; + } + while (c1 == c2); + + return c1 - c2; +} + + //===----------------------------------------------------------------------===// // memory stuff... //===----------------------------------------------------------------------===// -- 2.34.1