WIP: path resolution for include and incbin
authorLukas Krickl <lukas@krickl.dev>
Wed, 6 Dec 2023 14:14:35 +0000 (15:14 +0100)
committerLukas Krickl <lukas@krickl.dev>
Wed, 6 Dec 2023 14:14:35 +0000 (15:14 +0100)
include/ulas.h
src/ulas.c

index ba27aeea6e43ccb5f81c1541efbb66abc22858fc..48ea0ea7caffbf74ffad49dae4c624a24dc081bf 100644 (file)
@@ -230,6 +230,10 @@ struct ulas {
   // internal counter
   // used whenever a new unique number might be needed
   int icntr;
+
+  // all include search paths
+  char **include_paths;
+  int include_paths_len;
 };
 
 extern struct ulas ulas;
@@ -407,6 +411,8 @@ extern struct ulas_config ulascfg;
 struct ulas_config ulas_cfg_from_env(void);
 void ulas_init(struct ulas_config cfg);
 void ulas_free(void);
+void ulas_pushincpath(const char *path);
+FILE* ulas_incpathfopen(const char *path, const char *mode);
 
 int ulas_main(struct ulas_config cfg);
 
index ea96dc823daa9f7d52b5c6acc9a36e5b1baa672c..47c322732d3291b0fdcc0b78aff05599b169f49c 100644 (file)
@@ -60,6 +60,18 @@ void ulas_free(void) {
   ulas_exprbuffree(&ulas.exprs);
   ulas_symbuffree(&ulas.syms);
   ulas_preprocfree(&ulas.pp);
+
+  if (ulas.include_paths) {
+    for (int i = 0; i < ulas.include_paths_len; i++) {
+      free(ulas.include_paths[i]);
+    }
+    free(ulas.include_paths);
+  }
+}
+
+void ulas_pushincpath(const char *path) {}
+FILE* ulas_incpathfopen(const char *path, const char *mode) {
+  return NULL;
 }
 
 int ulas_icntr(void) { return ulas.icntr++; }