diff options
Diffstat (limited to 'strings.c')
-rw-r--r-- | strings.c | 119 |
1 files changed, 0 insertions, 119 deletions
diff --git a/strings.c b/strings.c deleted file mode 100644 index 368d7dc..0000000 --- a/strings.c +++ /dev/null @@ -1,119 +0,0 @@ -#include "strings.h" - -void uint32_to_dec(uint32_t number, char buf[10]) -{ - for (int i = 0; i < 10; i++) - { - buf[10 - 1 - i] = '0' + (number % 10); - number /= 10; - } -} - -void uint32_to_hex(uint32_t number, char buf[8]) -{ - for (int i = 0; i < 8; i++) - { - unsigned char quadbit = (number >> ((8 - i - 1) * 4)) & 0xf; - buf[i] = quadbit > 9 ? quadbit - 10 + 'a' : quadbit + '0'; - } -} - -void uint32_to_bin(uint32_t number, char buf[32]) -{ - for (int i = 0; i < 32; i++) - buf[i] = ((number >> (32 - i - 1)) & 1) ? '1' : '0'; -} - -void uint32_to_decstring(uint32_t number, char buf[11]) -{ - uint32_to_dec(number, buf); - buf[10] = '\0'; -} - -void uint32_to_hexstring(uint32_t number, char buf[9]) -{ - uint32_to_hex(number, buf); - buf[8] = '\0'; -} - -void uint32_to_binstring(uint32_t number, char buf[33]) -{ - uint32_to_bin(number, buf); - buf[32] = '\0'; -} - -void trim_0s(char string[]) -{ - size_t i; - for (i = 0; string[i] == '0'; i++); - - size_t j = 0; - - if (!string[i]) - string[j++] = string[--i]; - - do - string[j] = string[i + j]; - while (string[j++]); -} - -void uint32_to_decstringt(uint32_t number, char buf[11]) -{ - uint32_to_decstring(number, buf); - trim_0s(buf); -} - -void uint32_to_hexstringt(uint32_t number, char buf[9]) -{ - uint32_to_hexstring(number, buf); - trim_0s(buf); -} - -size_t strlen(char string[]) -{ - size_t len; - - for (len = 0; string[len]; len++); - - return len; -} - -void memcpy(void *dst, void *src, size_t nbytes) -{ - size_t iter; - - // copying by word is faster than by byte, - // but can easily cause alignment faults, so we resign from it... - for (iter = 0; iter < nbytes ; iter++) - ((volatile uint8_t*) dst)[iter] = ((uint8_t*) src)[iter]; -} - -// keep in mind memset is also needed for array initialization, like -// uint32_t buf[16] = {0}; -// gcc compiles this to memset call - -void *memset(void *s, int c, size_t n) -{ - volatile char *mem = s; - - for (size_t i = 0; i < n; i++) - mem[i] = c; - - return s; -} - -char *strcat(char *dst, const char *src) -{ - char *where_to_append; - - for (where_to_append = dst; *where_to_append; where_to_append++); - - size_t i; - - for (i = 0; src[i]; i++) - ((char volatile*) where_to_append)[i] = src[i]; - - ((char volatile*) where_to_append)[i] = '\0'; - - return dst; -} |