From cc4547810f0f18a7fa0c16e6c2602ece0cc79bf7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Lesimple?= Date: Tue, 26 Jan 2021 19:32:32 +0100 Subject: [PATCH] enh: more logs around exhaustive RS03 search in verbose --- src/rs03-recognize.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/rs03-recognize.c b/src/rs03-recognize.c index b7081a8..773d27c 100644 --- a/src/rs03-recognize.c +++ b/src/rs03-recognize.c @@ -364,7 +364,8 @@ int RS03RecognizeImage(Image *image) { recognize_context *rc = g_malloc0(sizeof(recognize_context)); guint64 image_sectors; guint64 layer_size; - gint64 triesleft = -1; /* infinity */ + gint64 trynumber; + gint64 maxtries; int untested_layers; int layer, layer_sector; int i; @@ -426,11 +427,13 @@ int RS03RecognizeImage(Image *image) */ if(!Closure->examineRS03 && image->type == IMAGE_MEDIUM) - { triesleft = 3; /* no exhaustive search asked and reading from optical drive */ - Verbose("RS03RecognizeImage: quick RS03 search, attempting up to %" PRId64" sector reads max\n", triesleft); + { maxtries = 3; /* no exhaustive search asked and reading from optical drive */ + Verbose("RS03RecognizeImage: quick RS03 search, attempting up to %" PRId64" sector reads max\n", maxtries); } else + { maxtries = -1; /* infinity */ Verbose("RS03RecognizeImage: No EH, entering exhaustive search\n"); + } /* Determine image size in augmented case. */ @@ -480,6 +483,7 @@ int RS03RecognizeImage(Image *image) lay->target = ECC_IMAGE; } untested_layers = 247-84+1; + trynumber = 0; rc->ab = CreateAlignedBuffer(2048); @@ -498,11 +502,17 @@ int RS03RecognizeImage(Image *image) if(sector >= image_sectors) goto mark_invalid_layer; - if (triesleft-- == 0) { + if (++trynumber > maxtries && maxtries > 0) { + Verbose("RS03: max tries reached, stopping search\n"); free_recognize_context(rc); return FALSE; } + Verbose("RS03: %s = %" PRId64 ", reading sector %" PRId64 "\n", + maxtries < 0 ? "try number" : "tries left", + maxtries < 0 ? trynumber : maxtries - trynumber, + sector); + switch(image->type) { case IMAGE_FILE: RS03ReadSectors(image, rc->layout[layer], rc->ab->buf,