diff --git a/src/main.c b/src/main.c index 20a488f..f040c08 100644 --- a/src/main.c +++ b/src/main.c @@ -35,8 +35,13 @@ int db_search(db_t *db, rec_t *sample, float tresh, match_t **matches) blk.start = 1; blk.records = blk_size; - if (db_rd_rec(db, sample) != 1) + if (db_rd_rec(db, sample) < 1) return -1; + + if (!sample->data[0]) { + puts("Sample not exists"); + return 0; + } /* TODO: expand matches */ while (db_rd_blk(db, &blk) > 0) { @@ -65,9 +70,14 @@ int rec_bitmap(db_t *db, rec_t *sample) assert(db != NULL); assert(sample != NULL); - if (db_rd_rec(db, sample) != 1) + if (db_rd_rec(db, sample) < 1) return -1; + if (!sample->data[0]) { + puts("Sample not exists"); + return 0; + } + for (i = 0; i < 16; i++) { row = *(((uint16_t *) sample->data) + i); for (j = 0; j < 16; j++) { @@ -84,6 +94,7 @@ int main(int argc, char **argv) { db_t db; rec_t sample; + float tresh; if (argc < 3) { printf( @@ -96,8 +107,8 @@ int main(int argc, char **argv) memset(&db, 0x0, sizeof(db_t)); memset(&sample, 0x0, sizeof(rec_t)); - sample.num = atoll(argv[2]); + sample.num = atoll(argv[2]); assert(sample.num > 0); if (db_open(&db, "test.db") == -1) { @@ -105,11 +116,14 @@ int main(int argc, char **argv) exit(EXIT_FAILURE); } - if (strcmp(argv[1], "search") == 0) - db_search(&db, &sample, 0.15, NULL); + if (strcmp(argv[1], "search") == 0) { + tresh = (argc > 3) ? atof(argv[3]) : 0.15; + db_search(&db, &sample, tresh, NULL); + } - if (strcmp(argv[1], "bitmap") == 0) + if (strcmp(argv[1], "bitmap") == 0) { rec_bitmap(&db, &sample); + } db_close(&db);