aboutsummaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2001-12-13 00:44:09 +0000
committerChris Lattner <sabre@nondot.org>2001-12-13 00:44:09 +0000
commit75ad704490f402406e0e59ebb9173245d785710a (patch)
treebbd863166aaa150f3db26b1bf42871a9d63a2ea7 /tools
parente7c6f726c8d18ff8803d9b3dc3a8443496002044 (diff)
Implement strlen strdup strcmp
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1446 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools')
-rw-r--r--tools/lli/RuntimeLib.lc35
1 files changed, 35 insertions, 0 deletions
diff --git a/tools/lli/RuntimeLib.lc b/tools/lli/RuntimeLib.lc
index 6a02c23877..24922c65d8 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...
//===----------------------------------------------------------------------===//