diff options
Diffstat (limited to 'listamsb.c')
-rw-r--r-- | listamsb.c | 18 |
1 files changed, 15 insertions, 3 deletions
@@ -102,6 +102,8 @@ void die_with(const char *msg, int status) { /* post-processing: print "summary", exit. called by either read_byte() (on 'unexpected EOF'), or main() (on normal exit). */ void finish(int rv, const char *msg) { + int progsize; + if(msg) fprintf(stderr, "%s: %s\n", self, msg); if(verbose) { @@ -114,12 +116,21 @@ void finish(int rv, const char *msg) { warnings++; } - if(proglen == (bytes_read - 3)) { + progsize = bytes_read - 3; + if(proglen == progsize) { if(verbose) fprintf(stderr, "file size matches proglen\n"); } else { - fprintf(stderr, "%s: actual program size doesn't match program size in header\n", self); warnings++; + fprintf(stderr, "%s: actual program size %d " + "doesn't match program size %d in header,\n" + " ", + self, progsize, proglen); + if(proglen > progsize) { + fprintf(stderr, "AMSB will give #136 ERROR and fail to LOAD this file\n"); + } else { + fprintf(stderr, "AMSB will stop LOADing before the end of this file\n"); + } } if(fgetc(infile) != EOF) { @@ -128,7 +139,8 @@ void finish(int rv, const char *msg) { } if(warnings) { - fprintf(stderr, "%s: file has %d warnings\n", self, warnings); + fprintf(stderr, "%s: file has %d warning%s\n", + self, warnings, (warnings == 1 ? "" : "s")); rv = 2; } |