X-Git-Url: https://jxself.org/git/?p=inform.git;a=blobdiff_plain;f=src%2Ferrors.c;fp=src%2Ferrors.c;h=195bfe9f90948bee4ef85c2cec4df79979630d11;hp=08dd87efa21a698074499f4fe492b907a668e59e;hb=d8d68d0bd4c45af6f0dc69b4fc33d37d961aca85;hpb=c881aa3386c00d7021ffabf2f66275d6c110c1c1 diff --git a/src/errors.c b/src/errors.c index 08dd87e..195bfe9 100644 --- a/src/errors.c +++ b/src/errors.c @@ -56,6 +56,7 @@ static void print_preamble(void) if (!(ErrorReport.main_flag)) printf("\"%s\", ", p); printf("line %d: ", ErrorReport.line_number); + if (ErrorReport.orig_file) { char *op; if (ErrorReport.orig_file <= 0 || ErrorReport.orig_file > total_files) @@ -81,12 +82,48 @@ static void print_preamble(void) } printf("%s", p); if (with_extension_flag) printf("%s", Source_Extension); - printf("(%d): ", ErrorReport.line_number); + printf("(%d)", ErrorReport.line_number); + + if (ErrorReport.orig_file) { + char *op; + if (ErrorReport.orig_file <= 0 || ErrorReport.orig_file > total_files) + op = ErrorReport.orig_source; + else + op = InputFiles[ErrorReport.orig_file-1].filename; + printf("|%s", op); + if (ErrorReport.orig_line) { + printf("(%d", ErrorReport.orig_line); + if (ErrorReport.orig_char) { + printf(":%d", ErrorReport.orig_char); + } + printf(")"); + } + } + + printf(": "); break; case 2: /* Macintosh Programmer's Workshop error message format */ - printf("File \"%s\"; Line %d\t# ", p, ErrorReport.line_number); + printf("File \"%s\"; Line %d", p, ErrorReport.line_number); + + if (ErrorReport.orig_file) { + char *op; + if (ErrorReport.orig_file <= 0 || ErrorReport.orig_file > total_files) + op = ErrorReport.orig_source; + else + op = InputFiles[ErrorReport.orig_file-1].filename; + printf(": (\"%s\"", op); + if (ErrorReport.orig_line) { + printf("; Line %d", ErrorReport.orig_line); + if (ErrorReport.orig_char) { + printf("; Char %d", ErrorReport.orig_char); + } + } + printf(")"); + } + + printf("\t# "); break; } } @@ -113,6 +150,12 @@ static char *location_text(brief_location report_line) if (j <= 0 || j > total_files) p = errpos.source; else p = InputFiles[j-1].filename; + if (!p && errpos.line_number == 0) { + /* Special case */ + strcpy(other_pos_buff, "compiler setup"); + return other_pos_buff; + } + if (!p) p = ""; len = 0;