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 } |