diff options
Diffstat (limited to 'comp/lucas-standen-NEA/code/tokenizer/util.c')
-rw-r--r-- | comp/lucas-standen-NEA/code/tokenizer/util.c | 65 |
1 files changed, 0 insertions, 65 deletions
diff --git a/comp/lucas-standen-NEA/code/tokenizer/util.c b/comp/lucas-standen-NEA/code/tokenizer/util.c deleted file mode 100644 index 46deba8..0000000 --- a/comp/lucas-standen-NEA/code/tokenizer/util.c +++ /dev/null @@ -1,65 +0,0 @@ -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <errno.h> -#include <error.h> - -void Die(); // brings down the program -void *CheckedMalloc(long size); // malloc checked -void *CheckedRealloc(void *out, long size); // realloc checked -char **Split(char *s, char c); // splits a string into an array of strings around c - -void Die(){ - perror("zpy parser"); - exit(errno); -} - -void *CheckedMalloc(long size){ - void *out = malloc(size); - if (out == NULL) - Die(); - return out; -} - -void *CheckedRealloc(void *orig, long size){ - void *out = realloc(orig, size); - if (out == NULL) - Die(); - return out; -} - -static size_t countSegment(char const *s, char c){ - size_t counter = 0; - int i = 0; - while (s[i]){ - if (s[i] == c){ - i++; - continue; - } - counter++; - while (s[i] && s[i] != c) i++; - } - return counter; -} - -char **Split(char *s, char c){ - char **strs; - size_t tab_counter; - size_t i; - size_t j; - - if (s == NULL) return NULL; - tab_counter = countSegment(s, c); - if ((strs = (char**)CheckedMalloc(sizeof(char*) * (tab_counter + 1))) == NULL) return NULL; - tab_counter = 0; - j = -1; - while (s[++j]) { - if (s[j] == c) continue; - i = 0; - while (s[j + i] && s[j + i] != c) i++; - if ((strs[tab_counter++] = strndup(&s[j], i)) == NULL) return NULL; - j += i - 1; - } - strs[tab_counter] = NULL; - return strs; -} |