diff options
Diffstat (limited to 'src/utils')
-rw-r--r-- | src/utils/file.c | 27 | ||||
-rw-r--r-- | src/utils/file.h | 3 | ||||
-rw-r--r-- | src/utils/log.c | 15 | ||||
-rw-r--r-- | src/utils/log.h | 5 | ||||
-rw-r--r-- | src/utils/memory.c | 31 | ||||
-rw-r--r-- | src/utils/memory.h | 7 | ||||
-rw-r--r-- | src/utils/string.c | 14 | ||||
-rw-r--r-- | src/utils/string.h | 6 |
8 files changed, 108 insertions, 0 deletions
diff --git a/src/utils/file.c b/src/utils/file.c new file mode 100644 index 0000000..c2dd614 --- /dev/null +++ b/src/utils/file.c @@ -0,0 +1,27 @@ +#include "file.h" + +#include "utils/log.h" +#include "utils/memory.h" +#include <stddef.h> +#include <stdio.h> + +char *readWholeFile(const char *filePath) { + FILE *file = fopen(filePath, "r"); + + if (!file) { + printLog("Can't open file '%s'", filePath); + return NULL; + } + fseek(file, 0, SEEK_END); + const size_t file_size = ftell(file); + fseek(file, 0, SEEK_SET); + + char *str = a404m_malloc((file_size + 1) * sizeof(char)); + + fread(str, file_size, 1, file); + str[file_size] = '\0'; + + fclose(file); + + return str; +} diff --git a/src/utils/file.h b/src/utils/file.h new file mode 100644 index 0000000..6f9753f --- /dev/null +++ b/src/utils/file.h @@ -0,0 +1,3 @@ +#pragma once + +char *readWholeFile(const char *filePath); diff --git a/src/utils/log.c b/src/utils/log.c new file mode 100644 index 0000000..f54394a --- /dev/null +++ b/src/utils/log.c @@ -0,0 +1,15 @@ +#include "log.h" + +#include <stdarg.h> +#include <stdio.h> +#include <stdlib.h> + +void _printLogBack(const char *format, const char *file, int line, ...) { + va_list args; + va_start(args, end); + char *errorStr; + vasprintf(&errorStr, format, args); + + printf("\e[0;31mError: %s at compiler %s:%d\e[0m\n", errorStr, file, line); + free(errorStr); +} diff --git a/src/utils/log.h b/src/utils/log.h new file mode 100644 index 0000000..32f6a8f --- /dev/null +++ b/src/utils/log.h @@ -0,0 +1,5 @@ +#pragma once + +#define printLog(format,...) _printLogBack(format, __FILE_NAME__, __LINE__, ## __VA_ARGS__) + +extern void _printLogBack(const char *format, const char *file, int line, ...); diff --git a/src/utils/memory.c b/src/utils/memory.c new file mode 100644 index 0000000..cde2995 --- /dev/null +++ b/src/utils/memory.c @@ -0,0 +1,31 @@ +#include "memory.h" + +#include <stdlib.h> +#include <malloc.h> + +void *a404m_malloc(size_t size) { + if (size == 0) { + return NULL; + } else { + return malloc(size); + } +} + +void *a404m_realloc(void *restrict pointer, size_t size) { + if (size == 0) { + free(pointer); + return NULL; + } else if (pointer != NULL) { + return realloc(pointer, size); + } else { + return malloc(size); + } +} + +size_t a404m_malloc_usable_size(void *pointer) { + if (pointer == NULL) { + return 0; + } else { + return malloc_usable_size(pointer); + } +} diff --git a/src/utils/memory.h b/src/utils/memory.h new file mode 100644 index 0000000..29bd3db --- /dev/null +++ b/src/utils/memory.h @@ -0,0 +1,7 @@ +#pragma once + +#include <stddef.h> + +extern void *a404m_malloc(size_t size); +extern void *a404m_realloc(void *restrict pointer, size_t size); +extern size_t a404m_malloc_usable_size(void *pointer); diff --git a/src/utils/string.c b/src/utils/string.c new file mode 100644 index 0000000..81be415 --- /dev/null +++ b/src/utils/string.c @@ -0,0 +1,14 @@ +#include "string.h" + +#include <string.h> + +size_t searchInStringArray(const char *array[], size_t array_size, + const char *str, size_t str_size) { + for (size_t i = 0; i < array_size; ++i) { + const size_t el_size = strlen(array[i]); + if (el_size == str_size && strncmp(array[i], str, str_size) == 0) { + return i; + } + } + return array_size; +} diff --git a/src/utils/string.h b/src/utils/string.h new file mode 100644 index 0000000..79af8a9 --- /dev/null +++ b/src/utils/string.h @@ -0,0 +1,6 @@ +#pragma once + +#include <stddef.h> + +size_t searchInStringArray(const char *array[], size_t array_size, const char *str, + size_t str_size); |