static void vmoan(const char *fmt, va_list ap)
{ fprintf(stderr, "%s: ", prog); vfprintf(stderr, fmt, ap); }
+
+__attribute__((format(printf, 1, 2)))
+static void moan(const char *fmt, ...)
+{
+ va_list ap;
+
+ va_start(ap, fmt); vmoan(fmt, ap); va_end(ap);
+ fputc('\n', stderr);
+}
+
__attribute__((noreturn, format(printf, 1, 2)))
static void bail(const char *fmt, ...)
{
fputc('\n', stderr);
exit(2);
}
+
__attribute__((noreturn, format(printf, 2, 3)))
static void bail_syserr(int err, const char *fmt, ...)
{
n = read_sectors(src, pos, buf, 1);
if (n > 0) {
clear_progress();
- fprintf(stderr, "%s: sector %"PRIuSEC" read ok after retry\n",
- prog, pos);
+ moan("sector %"PRIuSEC" read ok after retry", pos);
bad_lo = bad_hi = pos;
goto recovered;
}
report_bad_blocks_progress(src, bad_lo, bad_hi, errno);
if (bad_hi >= end) {
clear_progress();
- fprintf(stderr, "%s: giving up on this extent\n", prog);
+ moan("giving up on this extent");
n = 0; goto recovered;
}
step *= 2;
recovered:
if (bad_hi > bad_lo) {
clear_progress();
- fprintf(stderr, "%s: skipping %"PRIuSEC" bad sectors "
- "(%"PRIuSEC" .. %"PRIuSEC")\n",
- prog, bad_hi - bad_lo, bad_lo, bad_hi);
+ moan("skipping %"PRIuSEC" bad sectors (%"PRIuSEC" .. %"PRIuSEC")",
+ bad_hi - bad_lo, bad_lo, bad_hi);
if (src->mapfile) {
if (!src->mapfp) {
src->mapfp = fopen(src->mapfile, "w");