diff options
author | Aleksey Veresov <aleksey@veresov.pro> | 2020-02-03 19:43:53 +0300 |
---|---|---|
committer | Aleksey Veresov <aleksey@veresov.pro> | 2020-02-03 19:43:53 +0300 |
commit | c299128eaefc813d1a6acdca8a9c724145686177 (patch) | |
tree | 3c0131fa32fe6f29acc88c5b0d934eb76fadd2a3 /src/inner_tools.c | |
parent | 26405332102756912ab2c175874555d6eb8c332f (diff) | |
download | magi-c299128eaefc813d1a6acdca8a9c724145686177.tar magi-c299128eaefc813d1a6acdca8a9c724145686177.tar.xz magi-c299128eaefc813d1a6acdca8a9c724145686177.zip |
[magi] Readme added + fixes.
Diffstat (limited to 'src/inner_tools.c')
-rw-r--r-- | src/inner_tools.c | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/src/inner_tools.c b/src/inner_tools.c new file mode 100644 index 0000000..d958851 --- /dev/null +++ b/src/inner_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; +} |