diff --git a/osscan.cc b/osscan.cc index 49dc1d219..6af913496 100644 --- a/osscan.cc +++ b/osscan.cc @@ -973,7 +973,7 @@ FingerPrint *parse_single_fingerprint(const FingerPrintDB *DB, const char *fprin } -FingerPrintDB *parse_fingerprint_file(const char *fname) { +FingerPrintDB *parse_fingerprint_file(const char *fname, bool points_only) { FingerPrintDB *DB = NULL; FingerPrint *current; FILE *fp; @@ -999,6 +999,8 @@ top: fparse: if (strncmp(line, "Fingerprint", 11) == 0) { parsingMatchPoints = false; + if (points_only) + break; current = new FingerPrint; } else if (strncmp(line, "MatchPoints", 11) == 0) { if (DB->MatchPoints) @@ -1089,5 +1091,5 @@ FingerPrintDB *parse_fingerprint_reference_file(const char *dbname) { /* Record where this data file was found. */ o.loaded_data_files[dbname] = filename; - return parse_fingerprint_file(filename); + return parse_fingerprint_file(filename, false); } diff --git a/osscan.h b/osscan.h index a71867998..75edd8c25 100644 --- a/osscan.h +++ b/osscan.h @@ -245,7 +245,7 @@ FingerPrint *parse_single_fingerprint(const char *fprint_orig); /* These functions take a file/db name and open+parse it, returning an (allocated) FingerPrintDB containing the results. They exit with an error message in the case of error. */ -FingerPrintDB *parse_fingerprint_file(const char *fname); +FingerPrintDB *parse_fingerprint_file(const char *fname, bool points_only); FingerPrintDB *parse_fingerprint_reference_file(const char *dbname); void free_fingerprint_file(FingerPrintDB *DB);