Implement strlen strdup strcmp
authorChris Lattner <sabre@nondot.org>
Thu, 13 Dec 2001 00:44:09 +0000 (00:44 +0000)
committerChris Lattner <sabre@nondot.org>
Thu, 13 Dec 2001 00:44:09 +0000 (00:44 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1446 91177308-0d34-0410-b5e6-96231b3b80d8

tools/lli/RuntimeLib.lc

index 6a02c238772f91baf46640e355c1fb6d246251c8..24922c65d86ab2668df83cb337125d0d8505b9da 100644 (file)
@@ -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...
 //===----------------------------------------------------------------------===//