00001
00002
00003 #include "../../include/system.h"
00004 #include "../../include/string.h"
00005
00006 int strcmp(const char *s1, const char *s2)
00007 {
00008 int i;
00009 int retorno=-1;
00010
00011 for ( i=0; (*s1 == *s2); i++, s1++, s2++) {
00012 if ( ( *s1 == '\0' ) | ( *s1 == '\n' ) ) {
00013 retorno=0;
00014 break;
00015 }
00016 }
00017
00018 return retorno;
00019 }
00020
00021
00022 size_t strlen(const char *s)
00023 {
00024 size_t cantidad = 0;
00025
00026 for ( cantidad=0; *(s+cantidad) ; cantidad++) ;
00027
00028 return cantidad;
00029 }
00030
00031 char *strcat(char *dest, char *src)
00032 {
00033 char *dest_aux = dest + strlen(dest);
00034
00035 while (*src)
00036 *dest_aux++ = *src++;
00037
00038 return dest;
00039 }
00040
00041
00042 char *strcpy (char *dest, const char *src)
00043 {
00044 while ( *src) {
00045 *dest++=*src++;
00046 }
00047 *dest='\0';
00048 return dest;
00049 }
00050
00051 char *strncpy (char *dest, const char *src, size_t nbytes)
00052 {
00053 while ( *src && nbytes) {
00054 *dest++=*src++;
00055 nbytes--;
00056 }
00057 *dest='\0';
00058 return dest;
00059 }
00060
00061
00063
00065 char *str_to_upper (char *str)
00066 {
00067 char *str_ret = str;
00068 while ( *str ) {
00069 if ( (*str >= 'a') && (*str <= 'z') )
00070 *str-=32;
00071
00072 str++;
00073 }
00074 return str_ret;
00075 }
00076
00077 int memcmp( const void *s1, const void *s2, dword n)
00078 {
00079 byte *s22 = (byte *) s2;
00080 byte *s11 = (byte *) s1;
00081
00082 while (n--) {
00083 if ( *s11 != *s22 )
00084 return (int) (s11-s22);
00085 s22++;s11++;
00086 }
00087
00088 return 0;
00089 }
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109 void *memcpy( void *dest, const void *src, dword n)
00110 {
00111 __asm__("push %%ecx; push %%edi ; push %%esi ;cld ; rep ; movsb ; pop %%esi ; pop %%edi ; pop %%ecx" \
00112 : : "c" ((word) n), "S" (src), "D" (dest));
00113
00114 return dest;
00115 }
00116
00117
00118