00001
00002
00003 #include "routix/system.h"
00004 #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 *strcpy (char *dest, const char *src)
00032 {
00033 while ( *src) {
00034 *dest++=*src++;
00035 }
00036 *dest='\0';
00037 return dest;
00038 }
00039
00040 char *strncpy (char *dest, const char *src, size_t nbytes)
00041 {
00042 while ( *src && nbytes) {
00043 *dest++=*src++;
00044 nbytes--;
00045 }
00046 *dest='\0';
00047 return dest;
00048 }
00049
00050
00051 char *str_to_upper (char *str)
00052 {
00053 char *str_ret = str;
00054
00055 for ( ; *str ; str++)
00056 *str = (char) toupper(*str);
00057 return str_ret;
00058 }
00059
00060 char *str_to_lower (char *str)
00061 {
00062 char *str_ret = str;
00063
00064 for ( ; *str ; str++)
00065 *str = (char) tolower(*str);
00066 return str_ret;
00067 }
00068
00069
00070 int tolower(int c)
00071 {
00072 if ( (c >= 'A') && (c <= 'Z') )
00073 c+=32;
00074 return c;
00075 }
00076
00077 int toupper(int c)
00078 {
00079 if ( (c >= 'a') && (c <= 'z') )
00080 c-=32;
00081 return c;
00082 }
00083
00084
00085 int memcmp( const void *s1, const void *s2, dword n)
00086 {
00087 byte *s22 = (byte *) s2;
00088 byte *s11 = (byte *) s1;
00089
00090 while (n--) {
00091 if ( *s11 != *s22 )
00092 return (int) (s11-s22);
00093 s22++;s11++;
00094 }
00095
00096 return 0;
00097 }
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117 void *memcpy( void *dest, const void *src, dword n)
00118 {
00119 __asm__("push %%ecx; push %%edi ; push %%esi ;cld ; rep ; movsb ; pop %%esi ; pop %%edi ; pop %%ecx" \
00120 : : "c" ((word) n), "S" (src), "D" (dest));
00121
00122 return dest;
00123 }
00124
00125 void *memset(void *dest, int c, size_t n)
00126 {
00127 size_t i;
00128 char *dst = (char *) dest;
00129 for (i=0 ; i<n ; i++)
00130 dst[i] = c;
00131 return dest;
00132 }
00133
00134
00135