kern

annotate src/klibc/string.c @ 4:0489a34ab348

- reverted the trunk back to hardware scrolling - added a missing include (ctype.h in term.c) - added a comment explaining what memset16 does - beefed up the README file
author John Tsiombikas <nuclear@member.fsf.org>
date Fri, 10 Dec 2010 03:44:34 +0200
parents 86781ef20689
children 633e35c64772
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@4 11 /* Does the same thing as memset only with 16bit values.
nuclear@4 12 * n in this case is the number of values, not the number of bytes.
nuclear@4 13 */
nuclear@2 14 void memset16(void *s, int c, size_t n)
nuclear@2 15 {
nuclear@2 16 short *ptr = s;
nuclear@2 17 while(n--) {
nuclear@2 18 *ptr++ = c;
nuclear@2 19 }
nuclear@2 20 }
nuclear@2 21
nuclear@1 22 void *memcpy(void *dest, const void *src, size_t n)
nuclear@1 23 {
nuclear@1 24 char *dptr = dest;
nuclear@1 25 const char *sptr = src;
nuclear@1 26
nuclear@1 27 while(n--) {
nuclear@1 28 *dptr++ = *sptr++;
nuclear@1 29 }
nuclear@1 30 return dest;
nuclear@1 31 }
nuclear@1 32
nuclear@1 33 void *memmove(void *dest, const void *src, size_t n)
nuclear@1 34 {
nuclear@1 35 int i;
nuclear@1 36 char *dptr;
nuclear@1 37 const char *sptr;
nuclear@1 38
nuclear@1 39 if(dest <= src) {
nuclear@1 40 /* forward copy */
nuclear@1 41 dptr = dest;
nuclear@1 42 sptr = src;
nuclear@1 43 for(i=0; i<n; i++) {
nuclear@1 44 *dptr++ = *sptr++;
nuclear@1 45 }
nuclear@1 46 } else {
nuclear@1 47 /* backwards copy */
nuclear@1 48 dptr = dest + n - 1;
nuclear@1 49 sptr = src + n - 1;
nuclear@1 50 for(i=0; i<n; i++) {
nuclear@1 51 *dptr-- = *sptr--;
nuclear@1 52 }
nuclear@1 53 }
nuclear@1 54
nuclear@1 55 return dest;
nuclear@1 56 }