00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #include <lib/string.h>
00031
00032 char *
00033 strcpy(char * dst, const char * src) {
00034 char * tmp = dst;
00035 do {
00036 *dst = *src;
00037 dst++;
00038 } while (*src++ != '\0');
00039 return tmp;
00040 }
00041
00042 int strcmp(const char *str1,const char *str2) {
00043 while ((*str1 == *str2) && (*str1 != 0x0) && (*str2 != 0x0)) {
00044 str1++;
00045 str2++;
00046 }
00047 if (*str1 == *str2) {
00048 return(0);
00049 }
00050 else if (*str1 > *str2) {
00051 return(1);
00052 }
00053 else {
00054 return(-1);
00055 }
00056 }
00057
00058 int strncmp(const char * a, const char * b, size_t c) {
00059 int i = 0;
00060 while (i < c) {
00061 if ((a[i] != b[i]) || (a[i] == '\0') || (b[i] == '\0'))
00062 return a[i] - b[i];
00063 i++;
00064 }
00065 return 0;
00066 }
00067
00068
00069
00070 void *memcpy(const void *dst, const void * src, size_t length) {
00071 size_t x = length >> 2;
00072 size_t y = length & 0xf;
00073 size_t i;
00074
00075 for (i = 0; i < x; i++) {
00076 ((unsigned long *)dst)[i] = ((unsigned long *)src)[i];
00077 }
00078
00079 for (i = 0; i < y; i++) {
00080 ((char *) dst)[length-y+i] = ((char *) src)[length-y+i];
00081 }
00082
00083 return((void *)dst);
00084 }
00085
00086
00087 int strlen(const char * string) {
00088 int i = 0;
00089
00090 while (1) {
00091 if (string[i] == '\0')
00092 return i;
00093 i++;
00094 }
00095 return 0;
00096 }
00097
00098 int memcmp(const void * dst, const void * src, size_t length)
00099 {
00100 size_t x = length >> 2;
00101 size_t y = length & 0xf;
00102 size_t i;
00103
00104 for (i = 0; i < x; i++)
00105 {
00106 if (((unsigned long *)dst)[i] > ((unsigned long *)src)[i])
00107 return 1;
00108 if (((unsigned long *)dst)[i] < ((unsigned long *)src)[i])
00109 return -1;
00110 }
00111
00112 for (i = 0; i < y; i++)
00113 {
00114 if (((char *) dst)[length-y+i] > ((char *) src)[length-y+i])
00115 return 1;
00116 if (((char *) dst)[length-y+i] < ((char *) src)[length-y+i])
00117 return -1;
00118 }
00119
00120 return 0;
00121 }
00122
00123 void strncpy(char * dest, const char * src, size_t size)
00124 {
00125 if (size == 0)
00126 return;
00127 do
00128 {
00129 *dest = *src;
00130 dest++; src++;
00131 size--;
00132 }
00133 while(('\0' != *(src-1)) && (size));
00134 }
00135
00136 char *strstr(const char *s,char *find) {
00137 char c, sc;
00138 size_t len;
00139
00140 if ((c = *find++) != 0) {
00141 len = strlen(find);
00142 do {
00143 do {
00144 if ((sc = *s++) == 0)
00145 return (NULL);
00146 } while (sc != c);
00147 } while (strncmp(s, find, len) != 0);
00148 s--;
00149 }
00150 return ((char *)s);
00151 }
00152
00153
00154
00155
00156
00157
00158
00159
00160
00161
00162
00163
00164
00165
00166
00167
00168
00169
00170
00171
00172
00173
00174
00175
00176
00177
00178
00179
00180
00181
00182
00183
00184
00185
00186
00187
00188
00189
00190
00191
00192