diff options
author | Aleksey Veresov <aleksey@veresov.pro> | 2020-02-06 19:43:57 +0300 |
---|---|---|
committer | Aleksey Veresov <aleksey@veresov.pro> | 2020-02-06 19:43:57 +0300 |
commit | 83cd2267b309fa7411acaed356f88101196bb2ad (patch) | |
tree | 8ab5f2ebdfbbc5020f13329858d6364d82beabd9 /src/tools.c | |
parent | 37cd01d27efc7988548dbfde307e41be7d4f41a9 (diff) | |
download | magi-83cd2267b309fa7411acaed356f88101196bb2ad.tar magi-83cd2267b309fa7411acaed356f88101196bb2ad.tar.xz magi-83cd2267b309fa7411acaed356f88101196bb2ad.zip |
[magi] Broken to become better.
Diffstat (limited to 'src/tools.c')
-rw-r--r-- | src/tools.c | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/src/tools.c b/src/tools.c new file mode 100644 index 0000000..d958851 --- /dev/null +++ b/src/tools.c @@ -0,0 +1,51 @@ +#include "inner_tools.h" + +#include <ctype.h> +#include <stdlib.h> +#include <string.h> + + +void magi_str_lowercase(char *str) +{ + if (!str) { + return; + } + for (; *str; ++str) { + *str = tolower(*str); + } +} + +char *magi_str_create_copy(const char *first, int len) +{ + char *copy = magi_str_create(len); + if (copy) { + memcpy(copy, first, len); + } + return copy; +} + +char *magi_str_create(int len) +{ + char *str = malloc(len + 1); + if (str) { + str[len] = 0; + } + return str; +} + +int magi_str_add(char **dest, int *len, int *size, char c) +{ + if (!*dest) { + *dest = magi_str_create(1); + } else if (*len + 1 == *size) { + *size *= 2; + *dest = realloc(*dest, *size); + } + if (!*dest) { + return 0; + } + (*dest)[*len] = c; + ++*len; + (*dest)[*len] = 0; + return 1; +} |