diff --git a/output/codeview.c b/output/codeview.c index f9750bfc..571cbabe 100644 --- a/output/codeview.c +++ b/output/codeview.c @@ -44,6 +44,7 @@ #include "nasm.h" #include "nasmlib.h" +#include "preproc.h" #include "saa.h" #include "output/outlib.h" #include "output/pecoff.h" @@ -308,7 +309,7 @@ static void calc_md5(const char *const filename, FILE *f; MD5_CTX ctx; - f = fopen(filename, "r"); + f = pp_input_fopen(filename); if (!f) goto done; diff --git a/preproc.c b/preproc.c index e33a6d7d..78263fb3 100644 --- a/preproc.c +++ b/preproc.c @@ -1559,6 +1559,23 @@ static FILE *inc_fopen(const char *file, StrList **dhead, StrList ***dtail, return NULL; } +/* + * Opens an include or input file. Public version, for use by modules + * that get a file:lineno pair and need to look at the file again + * (e.g. the CodeView debug backend). Returns NULL on failure. + */ +FILE *pp_input_fopen(const char *filename) +{ + FILE *fp; + StrList *xsl = NULL; + StrList **xst = &xsl; + + fp = inc_fopen(filename, &xsl, &xst, true); + if (xsl) + nasm_free(xsl); + return fp; +} + /* * Determine if we should warn on defining a single-line macro of * name `name', with `nparam' parameters. If nparam is 0 or -1, will diff --git a/preproc.h b/preproc.h index fdda37ce..3dee45f2 100644 --- a/preproc.h +++ b/preproc.h @@ -48,4 +48,7 @@ typedef const unsigned char macros_t; enum preproc_token pp_token_hash(const char *token); +/* Opens an include file or input file. This uses the include path. */ +FILE *pp_input_fopen(const char *filename); + #endif