From a05fd9b8185b59b53fe4b3dc61269182da3b5446 Mon Sep 17 00:00:00 2001 From: dbrotz <43593771+dbrotz@users.noreply.github.com> Date: Thu, 6 Dec 2018 22:59:24 -0800 Subject: [PATCH] Print full file path in error messages --- include/asm/fstack.h | 2 +- src/asm/fstack.c | 10 +++++++--- src/asm/output.c | 4 ++-- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/include/asm/fstack.h b/include/asm/fstack.h index 23dc30a2..0c0c74c2 100644 --- a/include/asm/fstack.h +++ b/include/asm/fstack.h @@ -42,7 +42,7 @@ void fstk_Dump(void); 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 */ diff --git a/src/asm/fstack.c b/src/asm/fstack.c index 638644fe..2d5d4cc2 100644 --- a/src/asm/fstack.c +++ b/src/asm/fstack.c @@ -234,7 +234,7 @@ void fstk_AddIncludePath(char *s) 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 @@ FILE *fstk_FindFile(char *fname) fprintf(dependfile, "%s: %s\n", tzObjectname, path); } + if (incPathUsed) + *incPathUsed = IncludePaths[i]; return f; } } @@ -288,7 +290,8 @@ FILE *fstk_FindFile(char *fname) */ 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 @@ void fstk_RunInclude(char *tzFileName) 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); diff --git a/src/asm/output.c b/src/asm/output.c index 0059fe60..ed0ae51a 100644 --- a/src/asm/output.c +++ b/src/asm/output.c @@ -902,7 +902,7 @@ void out_BinaryFile(char *s) { 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 @@ void out_BinaryFileSlice(char *s, int32_t start_pos, int32_t length) 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);