-static void recovered(secaddr bad_lo, secaddr bad_hi)
-{
- char fn[MAXFNSZ];
-
- progress_clear(&progress);
-
- if (!file || id_kind(file->id) == RAW)
- moan("skipping %"PRIuSEC" bad sectors (%"PRIuSEC" .. %"PRIuSEC")",
- bad_hi - bad_lo, bad_lo, bad_hi);
- else {
- store_filename(fn, file->id);
- moan("skipping %"PRIuSEC" bad sectors (%"PRIuSEC" .. %"PRIuSEC"; "
- "`%s' %"PRIuSEC" .. %"PRIuSEC" of %"PRIuSEC")",
- bad_hi - bad_lo, bad_lo, bad_hi,
- fn, bad_lo - file->start, bad_hi - file->start,
- file->end - file->start);
- }
-
- if (mapfile) {
- open_file_on_demand(mapfile, &mapfp, "bad-sector region map");
- fprintf(mapfp, "%"PRIuSEC" %"PRIuSEC" # %"PRIuSEC" sectors",
- bad_lo, bad_hi, bad_hi - bad_lo);
-
- if (file && id_kind(file->id) != RAW)
- fprintf(mapfp, "; `%s' %"PRIuSEC" .. %"PRIuSEC" of %"PRIuSEC"",
- fn, bad_lo - file->start, bad_hi - file->start,
- file->end - file->start);
-
- fputc('\n', mapfp);
- check_write(mapfp, "bad-sector region map");
- }
-
- if (lseek(outfd, (off_t)(bad_hi - bad_lo)*SECTORSZ, SEEK_CUR) < 0)
- bail_syserr(errno, "failed to seek past bad sectors");
-
- progress_removeitem(&progress, &badblock_progress);
- progress_update(&progress);
-}
-