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