shithub: rgbds

Download patch

ref: a05fd9b8185b59b53fe4b3dc61269182da3b5446
parent: e25a4b0abc29eb82842b4d79b4586989c172045e
author: dbrotz <43593771+dbrotz@users.noreply.github.com>
date: Thu Dec 6 17:59:24 EST 2018

Print full file path in error messages

--- a/include/asm/fstack.h
+++ b/include/asm/fstack.h
@@ -42,7 +42,7 @@
 void fstk_AddIncludePath(char *s);
 uint32_t fstk_RunMacro(char *s);
 void fstk_RunRept(uint32_t count);
-FILE *fstk_FindFile(char *fname);
+FILE *fstk_FindFile(char *fname, char **incPathUsed);
 int32_t fstk_GetLine(void);
 
 #endif /* RGBDS_ASM_FSTACK_H */
--- a/src/asm/fstack.c
+++ b/src/asm/fstack.c
@@ -234,7 +234,7 @@
 		fatalerror("Include path too long '%s'", s);
 }
 
-FILE *fstk_FindFile(char *fname)
+FILE *fstk_FindFile(char *fname, char **incPathUsed)
 {
 	char path[_MAX_PATH];
 	int32_t i;
@@ -275,6 +275,8 @@
 				fprintf(dependfile, "%s: %s\n", tzObjectname,
 					path);
 			}
+			if (incPathUsed)
+				*incPathUsed = IncludePaths[i];
 			return f;
 		}
 	}
@@ -288,7 +290,8 @@
  */
 void fstk_RunInclude(char *tzFileName)
 {
-	FILE *f = fstk_FindFile(tzFileName);
+	char *incPathUsed = "";
+	FILE *f = fstk_FindFile(tzFileName, &incPathUsed);
 
 	if (f == NULL)
 		err(1, "Unable to open included file '%s'", tzFileName);
@@ -296,7 +299,8 @@
 	pushcontext();
 	nLineNo = 1;
 	nCurrentStatus = STAT_isInclude;
-	strcpy(tzCurrentFileName, tzFileName);
+	snprintf(tzCurrentFileName, sizeof(tzCurrentFileName), "%s%s",
+		 incPathUsed, tzFileName);
 	pCurrentFile = f;
 	CurrentFlexHandle = yy_create_buffer(pCurrentFile);
 	yy_switch_to_buffer(CurrentFlexHandle);
--- a/src/asm/output.c
+++ b/src/asm/output.c
@@ -902,7 +902,7 @@
 {
 	FILE *f;
 
-	f = fstk_FindFile(s);
+	f = fstk_FindFile(s, NULL);
 	if (f == NULL)
 		err(1, "Unable to open incbin file '%s'", s);
 
@@ -938,7 +938,7 @@
 	if (length < 0)
 		fatalerror("Number of bytes to read must be greater than zero");
 
-	f = fstk_FindFile(s);
+	f = fstk_FindFile(s, NULL);
 	if (f == NULL)
 		err(1, "Unable to open included file '%s'", s);