aboutsummaryrefslogtreecommitdiff
path: root/reloc.h
diff options
context:
space:
mode:
Diffstat (limited to 'reloc.h')
-rw-r--r--reloc.h47
1 files changed, 47 insertions, 0 deletions
diff --git a/reloc.h b/reloc.h
new file mode 100644
index 0000000..bebd8bb
--- /dev/null
+++ b/reloc.h
@@ -0,0 +1,47 @@
+//
+// Created by jhunk on 11/7/2019.
+//
+
+#ifndef RELOC_RELOC_H
+#define RELOC_RELOC_H
+
+#define _GNU_SOURCE 1
+
+#include <ctype.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#if defined(_WIN32) || defined(_WIN64)
+#define DIRSEP '\\'
+#elif defined(__linux__) || defined(__unix__) || defined(__APPLE__) || defined(__MACH__)
+#define DIRSEP '/'
+#endif
+
+
+typedef struct {
+ size_t size;
+ char *path;
+ char *data;
+} RelocData;
+
+
+typedef struct {
+ char *begin;
+ char *end;
+ char *post;
+ size_t length;
+ size_t post_length;
+ size_t total_length;
+} RelocMatch;
+
+
+RelocMatch *reloc_match(char *haystack, const char *needle);
+char *reloc_find_null(char *s);
+RelocData *reloc_read(const char *filename);
+size_t reloc_write(RelocData *finfo, const char *filename);
+void reloc_deinit_data(RelocData *finfo);
+void reloc_replace(RelocMatch *match, const char *rstr);
+
+
+#endif //RELOC_RELOC_H