X-Git-Url: http://git.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/blobdiff_plain/555fa197730c061bbf0ab01334e99bc47fb3dc06..ad326d84ade428fdd41ea8e3de7e8705e1db2277:/bootrom/string.c diff --git a/bootrom/string.c b/bootrom/string.c new file mode 100644 index 00000000..b2710d07 --- /dev/null +++ b/bootrom/string.c @@ -0,0 +1,104 @@ +//----------------------------------------------------------------------------- +// Jonathan Westhues, Sept 2005 +// +// This code is licensed to you under the terms of the GNU GPL, version 2 or, +// at your option, any later version. See the LICENSE.txt file for the text of +// the license. +//----------------------------------------------------------------------------- +// Common string.h functions +//----------------------------------------------------------------------------- + +#include "string.h" +#include + +void *memcpy(void *dest, const void *src, size_t len) { + uint8_t *d = dest; + const uint8_t *s = src; + while((len--) > 0) { + *d = *s; + d++; + s++; + } + return dest; +} + + +void *memset(void *dest, int c, size_t len) { + uint8_t *d = dest; + while((len--) > 0) { + *d = c; + d++; + } + return dest; +} + + +void *memmove(void *dest, const void *src, size_t len) { + uint8_t *d = dest; + const uint8_t *s = src; + if (dest <= src) { + while((len--) > 0) { + *d = *s; + d++; + s++; + } + } else { + d = d + len - 1; + s = s + len - 1; + while((len--) > 0) { + *d = *s; + d--; + s--; + } + } + return dest; +} + + +int memcmp(const void *av, const void *bv, size_t len) { + const uint8_t *a = av; + const uint8_t *b = bv; + + while((len--) > 0) { + if(*a != *b) { + return *a - *b; + } + a++; + b++; + } + return 0; +} + + +size_t strlen(const char *str) { + int l = 0; + while(*str) { + l++; + str++; + } + return l; +} + + +char* strncat(char *dest, const char *src, size_t n) { + unsigned int dest_len = strlen(dest); + unsigned int i; + + for (i = 0 ; i < n && src[i] != '\0' ; i++) + dest[dest_len + i] = src[i]; + dest[dest_len + i] = '\0'; + + return dest; +} + + +char* strcat(char *dest, const char *src) { + unsigned int dest_len = strlen(dest); + unsigned int i; + + for (i = 0 ; src[i] != '\0' ; i++) + dest[dest_len + i] = src[i]; + dest[dest_len + i] = '\0'; + + return dest; +}