summaryrefslogtreecommitdiff
path: root/src/utils
diff options
context:
space:
mode:
Diffstat (limited to 'src/utils')
-rw-r--r--src/utils/file.c27
-rw-r--r--src/utils/file.h3
-rw-r--r--src/utils/log.c15
-rw-r--r--src/utils/log.h5
-rw-r--r--src/utils/memory.c31
-rw-r--r--src/utils/memory.h7
-rw-r--r--src/utils/string.c14
-rw-r--r--src/utils/string.h6
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);