-\r
-//printf\r
-EXPORT int printf(const char *format, ...)\r
-{\r
- int size;\r
- char *buf;\r
- va_list args;\r
- \r
- va_start(args, format);\r
- size = ssprintfv((char*)format, args);\r
- va_end(args);\r
- \r
- buf = (char*)malloc(size+1);\r
- buf[size] = '\0';\r
- \r
- va_start(args, format);\r
- sprintfv(buf, (char*)format, args);\r
- va_end(args);\r
- \r
- \r
- write(_stdout, size+1, buf);\r
- \r
- free(buf);\r
- return size;\r
-}\r
-\r
-EXPORT int sprintf(const char *buf, char *format, ...)\r
-{\r
- va_list args;\r
- va_start(args, format);\r
- sprintfv((char*)buf, (char*)format, args);\r
- va_end(args);\r
- return 1;\r
-}\r
-\r
-\r
-//MEMORY\r
-EXPORT int strcmp(char *s1, char *s2)\r
-{\r
- while(*s1 == *s2 && *s1 != '\0' && *s2 != '\0') {\r
- s1++; s2++;\r
- }\r
- return (int)*s1 - (int)*s2;\r
-}\r
-EXPORT char *strcpy(char *dst, const char *src)\r
-{\r
- char *_dst = dst;\r
- while(*src) {\r
- *dst = *src;\r
- src++; dst++;\r
- }\r
- *dst = '\0';\r
- return _dst;\r
-}\r
-EXPORT int strlen(const char *str)\r
-{\r
- int retval;\r
- for(retval = 0; *str != '\0'; str++)\r
- retval++;\r
- return retval;\r
-}\r
-\r
-EXPORT int strncmp(char *s1, char *s2, size_t len)\r
-{\r
- while(--len && *s1 == *s2 && *s1 != '\0' && *s2 != '\0') {\r
- s1++; s2++;\r
- }\r
- return (int)*s1 - (int)*s2;\r
-}\r
-\r
-EXPORT void *memcpy(void *dest, void *src, unsigned int count)\r
-{\r
- char *sp = (char *)src;\r
- char *dp = (char *)dest;\r
- for(;count--;) *dp++ = *sp++;\r
- return dest;\r
-}\r
-\r
-EXPORT void *memmove(void *dest, void *src, unsigned int count)\r
-{\r
- char *sp = (char *)src;\r
- char *dp = (char *)dest;\r
- // Check if corruption will happen\r
- if( (unsigned int)dest > (unsigned int)src && (unsigned int)dest < (unsigned int)src+count )\r
- for(;count--;) dp[count] = sp[count];\r
- else\r
- for(;count--;) *dp++ = *sp++;\r
- return dest;\r
-}\r