Linux Headquarters
[ Register ]
[ About us ] [ Home Page ]

Advertisement
[ Kernel ] [ Documentation ] [ Links ] [ Books ]

Advertisement

Kernel v1.1.75 /lib/string.c

Filename:/lib/string.c
Lines Added:191
Lines Deleted:3
Also changed in: (Previous) 1.1.8  1.1.0  1.0.0 
(Following) 1.1.77  1.1.80  1.1.82  1.1.83  1.1.84  1.1.95 

Location
[  1.1.75
  [  lib
     o  string.c

Patch

diff -u --recursive --new-file v1.1.74/linux/lib/string.c linux/lib/string.c
--- v1.1.74/linux/lib/string.c   Thu Apr 21 10:48:12 1994
+++ linux/lib/string.c   Wed Dec 28 18:34:49 1994
@@ -4,8 +4,196 @@
  *  Copyright (C) 1991, 1992  Linus Torvalds
  */
 
-#include <linux/string.h>
-
-/* all the actual functions should be inline anyway, so.. */
+/*
+ * stupid library routines.. The optimized versions should generally be found
+ * as inline code in <asm-xx/string.h>
+ *
+ * These are buggy as well..
+ */
+ 
+#include <linux/types.h>
 
 char * ___strtok = NULL;
+
+char * strcpy(char * dest,const char *src)
+{
+   char *tmp = dest;
+
+   while ((*dest++ = *src++) != '\0')
+      /* nothing */;
+   return tmp;
+}
+
+char * strncpy(char * dest,const char *src,size_t count)
+{
+   char *tmp = dest;
+
+   while ((*dest++ = *src++) != '\0' && --count)
+      /* nothing */;
+
+   return tmp;
+}
+
+char * strcat(char * dest, const char * src)
+{
+   char *tmp = dest;
+
+   while (*dest)
+      dest++;
+   while ((*dest++ = *src++) != '\0')
+      ;
+
+   return tmp;
+}
+
+char * strncat(char *dest, const char *src, size_t count)
+{
+   char *tmp = dest;
+
+   if (count) {
+      while (*dest)
+         dest++;
+      while ((*dest++ = *src++)) {
+         if (--count == 0)
+            break;
+      }
+   }
+
+   return tmp;
+}
+
+int strcmp(const char * cs,const char * ct)
+{
+   register char __res;
+
+   while (1) {
+      if ((__res = *cs - *ct++) != 0 && *cs++)
+         break;
+   }
+
+   return __res;
+}
+
+int strncmp(const char * cs,const char * ct,size_t count)
+{
+   register char __res = 0;
+
+   while (count) {
+      if ((__res = *cs - *ct++) != 0 || !*cs++)
+         break;
+      count--;
+   }
+
+   return __res;
+}
+
+char * strchr(const char * s,char c)
+{
+   const char ch = c;
+
+   for(; *s != ch; ++s)
+      if (*s == '\0')
+         return NULL;
+   return (char *) s;
+}
+
+size_t strlen(const char * s)
+{
+   const char *sc;
+
+   for (sc = s; *sc != '\0'; ++sc)
+      /* nothing */;
+   return sc - s;
+}
+
+size_t strspn(const char *s, const char *accept)
+{
+   const char *p;
+   const char *a;
+   size_t count = 0;
+
+   for (p = s; *p != '\0'; ++p) {
+      for (a = accept; *a != '\0'; ++a) {
+         if (*p == *a)
+            break;
+      }
+      if (*a == '\0')
+         return count;
+      ++count;
+   }
+
+   return count;
+}
+
+char * strpbrk(const char * cs,const char * ct)
+{
+   const char *sc1,*sc2;
+
+   for( sc1 = cs; *sc1 != '\0'; ++sc1) {
+      for( sc2 = ct; *sc2 != '\0'; ++sc2) {
+         if (*sc1 == *sc2)
+            return (char *) sc1;
+      }
+   }
+   return NULL;
+}
+
+char * strtok(char * s,const char * ct)
+{
+   char *sbegin, *send;
+
+   sbegin  = s ? s : ___strtok;
+   if (!sbegin) {
+      return NULL;
+   }
+   sbegin += strspn(sbegin,ct);
+   if (*sbegin == '\0') {
+      ___strtok = NULL;
+      return( NULL );
+   }
+   send = strpbrk( sbegin, ct);
+   if (send && *send != '\0')
+      *send++ = '\0';
+   ___strtok = send;
+   return (sbegin);
+}
+
+void * memset(void * s,char c,size_t count)
+{
+   char *xs = (char *) s;
+
+   while (count--)
+      *xs++ = c;
+
+   return s;
+}
+
+void * memcpy(void * dest,const void *src,size_t count)
+{
+   char *tmp = (char *) dest, *s = (char *) src;
+
+   while (count--)
+      *tmp++ = *s++;
+
+   return dest;
+}
+
+void * memmove(void * dest,const void *src,size_t count)
+{
+   char *tmp = (char *) dest, *s = (char *) src;
+
+   while (count--)
+      *tmp++ = *s++;
+
+   return dest;
+}
+
+int memcmp(const void * cs,const void * ct,size_t count)
+{
+   const unsigned char *su1, *su2;
+
+   for( su1 = cs, su2 = ct; 0 < count; ++su1, ++su2, count--)
+      if (*su1 != *su2)
+         return((*su1 < *su2) ? -1 : +1);
+   return(0);
+}


Comments: webmaster (at) linuxhq.com.
Advertising: banners (at) linuxhq.com.
Compilation ©1998-2008 Linux Headquarters, Inc.