From 55d4d6adc4c7e9e849229b24bcf75910d548ff44 Mon Sep 17 00:00:00 2001 From: Thorsten Töpper Date: Sat, 28 Feb 2026 22:01:40 +0100 Subject: dump: fullpath and fileinfos --- src/database_interaction.c | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) (limited to 'src/database_interaction.c') diff --git a/src/database_interaction.c b/src/database_interaction.c index 3acc81c..2b5a3f8 100644 --- a/src/database_interaction.c +++ b/src/database_interaction.c @@ -74,6 +74,8 @@ sqlite3_stmt *select_filename_by_id, *select_fileinfo_complete_table, *select_fileinfo_complete_table_resolved; +sqlite3_stmt *select_full_path; + sqlite3_stmt *insert_filename, *insert_pathname, *insert_hashes, @@ -159,6 +161,7 @@ void dbi_close() { LOCAL_FINALIZE(select_fileinfo_complete_table); LOCAL_FINALIZE(select_fileinfo_complete_table_resolved); + LOCAL_FINALIZE(select_full_path); LOCAL_FINALIZE(insert_filename); LOCAL_FINALIZE(insert_pathname); LOCAL_FINALIZE(insert_hashes); @@ -260,6 +263,7 @@ int prepare_statements() { LOCAL_PREP_STMT("SELECT paths.pathname, filenames.name, hashes.blake2, hashes.sha256, hashes.sha512, fileinfo.size, fileinfo.last_seen, fileinfo.stat_struct FROM fileinfo INNER JOIN paths ON fileinfo.p_id = paths.id INNER JOIN filenames ON fileinfo.fn_id = filenames.id INNER JOIN hashes ON fileinfo.h_id = hashes.id WHERE fileinfo.fn_id = ?;", &select_fileinfo_by_filename_id_resolved); LOCAL_PREP_STMT("SELECT p_id, fn_id, h_id, size, last_seen, stat_struct FROM fileinfo ;", &select_fileinfo_complete_table); + LOCAL_PREP_STMT("SELECT paths.pathname, filenames.name FROM fileinfo INNER JOIN paths ON fileinfo.p_id = paths.id INNER JOIN filenames ON fileinfo.fn_id = filenames.id ;", &select_full_path); /* INSERT */ LOCAL_PREP_STMT("INSERT INTO filenames (name) VALUES (?);", &insert_filename); @@ -1281,7 +1285,44 @@ int dbi_print_identical_filenames(FILE *out) { return rc; } +int dbi_print_fullpaths(FILE *out) { + int rc = 0; + int strc = 0; + FILE *fd = out; + const unsigned char *txt = NULL; + sqlite3_stmt *st = select_full_path; + + DBCONN_CHECK(-1); + + if (fd == NULL) { fd = stdout; } + sqlite3_clear_bindings(st); + sqlite3_reset(st); + do { + strc = sqlite3_step(st); + + if (strc == SQLITE_DONE) { + break; + } + + if (strc != SQLITE_ROW) { + LOGERR("ERROR: Failed step to get fileinfo content: %s\n", sqlite3_errmsg(dbconn)); + return -1; /* drop-it */ + } + + txt = sqlite3_column_text(st, 0); /* paths.pathname */ + fprintf(fd, "%s/", txt); + txt = sqlite3_column_text(st, 1); /* filenames.name */ + fprintf(fd, "%s\n", txt); + } while (strc == SQLITE_ROW); + + + sqlite3_clear_bindings(st); + sqlite3_reset(st); + + return rc; + +} #if 0 *select_fileinfo_by_id, -- cgit v1.3