kern

annotate src/klibc/string.c @ 1:ebe5e0e44a9d

pretty much finished the code for article 1, might do minor adjustments though
author John Tsiombikas <nuclear@member.fsf.org>
date Thu, 02 Dec 2010 08:45:41 +0200
parents 662ff2170531
children 86781ef20689
rev   line source
nuclear@0 1 #include <string.h>
nuclear@0 2
nuclear@1 3 void memset(void *s, int c, size_t n)
nuclear@0 4 {
nuclear@0 5 char *ptr = s;
nuclear@1 6 while(n--) {
nuclear@0 7 *ptr++ = c;
nuclear@0 8 }
nuclear@0 9 }
nuclear@1 10
nuclear@1 11 void *memcpy(void *dest, const void *src, size_t n)
nuclear@1 12 {
nuclear@1 13 char *dptr = dest;
nuclear@1 14 const char *sptr = src;
nuclear@1 15
nuclear@1 16 while(n--) {
nuclear@1 17 *dptr++ = *sptr++;
nuclear@1 18 }
nuclear@1 19 return dest;
nuclear@1 20 }
nuclear@1 21
nuclear@1 22 void *memmove(void *dest, const void *src, size_t n)
nuclear@1 23 {
nuclear@1 24 int i;
nuclear@1 25 char *dptr;
nuclear@1 26 const char *sptr;
nuclear@1 27
nuclear@1 28 if(dest <= src) {
nuclear@1 29 /* forward copy */
nuclear@1 30 dptr = dest;
nuclear@1 31 sptr = src;
nuclear@1 32 for(i=0; i<n; i++) {
nuclear@1 33 *dptr++ = *sptr++;
nuclear@1 34 }
nuclear@1 35 } else {
nuclear@1 36 /* backwards copy */
nuclear@1 37 dptr = dest + n - 1;
nuclear@1 38 sptr = src + n - 1;
nuclear@1 39 for(i=0; i<n; i++) {
nuclear@1 40 *dptr-- = *sptr--;
nuclear@1 41 }
nuclear@1 42 }
nuclear@1 43
nuclear@1 44 return dest;
nuclear@1 45 }