diff options
Diffstat (limited to 'menu/string.c')
-rw-r--r-- | menu/string.c | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/menu/string.c b/menu/string.c new file mode 100644 index 00000000..9d90b5b9 --- /dev/null +++ b/menu/string.c @@ -0,0 +1,73 @@ +/* -*- c -*- ------------------------------------------------------------- * + * + * Copyright 2004 Murali Krishnan Ganapathy - All Rights Reserved + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, Inc., 53 Temple Place Ste 330, + * Bostom MA 02111-1307, USA; either version 2 of the License, or + * (at your option) any later version; incorporated herein by reference. + * + * ----------------------------------------------------------------------- */ + +#include "string.h" + +/* String routines */ +void *memset(void *buf, int chr, unsigned int len) +{ + asm("cld ; rep ; stosb" : "+D" (buf), "+c" (len) : "a" (chr)); + return buf; +} + +char *strcpy(char *dst, const char *src) +{ + char *r = dst; + char c; + + do { + c = *src++; + *dst++ = c; + } while ( c ); + + return r; +} + +char *strcat(char *dst, const char * src) +{ + char *r = dst; + + while (*dst++); // Find end of string + dst--; + while (*src) *dst++ = *src++; // Append + *dst = '\0'; // Terminate string + + return r; +} + +void dstrcpy(char *dst, const char *src) // DOS strcpy: Make it $ terminated and null terminated +{ + while ( *src ) + *dst++ = *src++; + + *dst++ = '$'; + *dst = '\0'; +} + +int strcmp(const char *a, const char*b) +{ + while (*a) + { + if (*a < *b) return -1; + if (*a++ > *b++) return 1; + } + if (*b) return 1; else return 0; +} + +int strlen(const char *a) +{ + int ans = 0; + + while (*a++) ans++; + return ans; +} + |