- if (!mapfp) {
- mapfp = fopen(mapfile, "w");
- if (!mapfp)
- bail_syserr(errno, "failed to open bad-sector map file `%s'",
- optarg);
- fprintf(mapfp, "## bad sector map\n\n");
- }
- fprintf(mapfp, "%"PRIuSEC" %"PRIuSEC"\n", bad_lo, bad_hi);
- fflush(mapfp);
- if (ferror(mapfp))
- bail_syserr(errno, "error writing bad-sector map file");
+ open_file_on_demand(mapfile, &mapfp, "bad-sector region map");
+ fprintf(mapfp, "%"PRIuSEC" %"PRIuSEC"", bad_lo, bad_hi);
+ if (file && id_kind(file->id) != RAW)
+ fprintf(mapfp, " # %s #%d %"PRIuSEC"..%"PRIuSEC" of %"PRIuSEC" (%.1f%%)",
+ id_part(file->id) ? "title" : "menu",
+ id_title(file->id),
+ bad_lo - file->start, bad_hi - file->start,
+ file->end - file->start,
+ (bad_lo - file->start)*100.0/(file->end - file->start));
+ fputc('\n', mapfp);
+ check_write(mapfp, "bad-sector region map");