From fe4cf7b218974a05af58851878ba65d5f0e1f348 Mon Sep 17 00:00:00 2001 From: Aldrik Ramaekers Date: Sat, 16 Mar 2024 10:45:11 +0100 Subject: csv import work --- src/export.cpp | 4 ++-- src/import.cpp | 26 ++++++++++++++++---------- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/src/export.cpp b/src/export.cpp index 9b7cf9b..fea14af 100644 --- a/src/export.cpp +++ b/src/export.cpp @@ -132,12 +132,12 @@ static bool _ts_export_csv(ts_search_result* result, const utf8_int8_t* path) { fprintf(write_file, "VERSION,1\n"); fprintf(write_file, "PATH,%s\n", result->directory_to_search); - fprintf(write_file, "FILTER,%s\n", result->file_filter); - fprintf(write_file, "QUERY,%s\n", result->search_text); fprintf(write_file, "CASESENSITIVE,%u\n", result->respect_capitalization); fprintf(write_file, "MATCH_COUNT,%u\n", result->match_count); fprintf(write_file, "FILE_COUNT,%u\n", result->file_count); fprintf(write_file, "TIMESTAMP,%" PRId64 "\n", result->timestamp); + fprintf(write_file, "QUERY,%s\n", result->search_text); + fprintf(write_file, "FILTER,%s\n", result->file_filter); // Empty files. for (uint32_t i = 0; i < result->files.length; i++) { diff --git a/src/import.cpp b/src/import.cpp index 0eec700..89a0f8f 100644 --- a/src/import.cpp +++ b/src/import.cpp @@ -25,23 +25,16 @@ static utf8_int8_t* _ts_str_find(utf8_int8_t* text, utf8_int8_t token) { if (fscanf(_file, _format, __VA_ARGS__) != _expect) { return IMPORT_INVALID_DATA; } static import_result _ts_import_csv_v1(ts_search_result* result, FILE *read_file) { - // Read setup info. + // Required query info. fscanf_required(read_file, "PATH,%s\n", 1, (char*)result->directory_to_search); - fscanf_required(read_file, "FILTER,%s\n", 1, (char*)result->file_filter); - fscanf_required(read_file, "QUERY,%s\n", 1, (char*)result->search_text); fscanf_required(read_file, "CASESENSITIVE,%d\n", 1, (int*)&result->respect_capitalization); fscanf_required(read_file, "MATCH_COUNT,%u\n", 1, &result->match_count); fscanf_required(read_file, "FILE_COUNT,%u\n", 1, &result->file_count); fscanf_required(read_file, "TIMESTAMP,%" PRId64 "\n", 1, &result->timestamp); utf8ncpy(path_buffer, result->directory_to_search, MAX_INPUT_LENGTH); - utf8ncpy(filter_buffer, result->file_filter, MAX_INPUT_LENGTH); - utf8ncpy(query_buffer, result->search_text, MAX_INPUT_LENGTH); - - result->filters = ts_get_filters(result->file_filter); - if (utf8len(result->search_text) == 0) { - result->search_text = NULL; - } + utf8ncpy(filter_buffer, "", MAX_INPUT_LENGTH); + utf8ncpy(query_buffer, "", MAX_INPUT_LENGTH); // Read results ts_found_file* current_file = 0; @@ -55,6 +48,17 @@ static import_result _ts_import_csv_v1(ts_search_result* result, FILE *read_file utf8_int8_t line_buffer[MAX_INPUT_LENGTH]; while(fgets(line_buffer, MAX_INPUT_LENGTH, read_file)) { + // Optional query info. + if (sscanf(line_buffer, "FILTER,%s", (char*)result->file_filter) == 1) { + utf8ncpy(filter_buffer, result->file_filter, MAX_INPUT_LENGTH); + if (utf8len(result->search_text) == 0) { + result->search_text = NULL; + } + } + if (sscanf(line_buffer, "QUERY,%s", (char*)result->search_text) == 1) { + utf8ncpy(query_buffer, result->search_text, MAX_INPUT_LENGTH); + } + // New file start. if (sscanf(line_buffer, "FILE,%s", (char*)next_file->path) == 1) { current_file = next_file; @@ -92,6 +96,8 @@ static import_result _ts_import_csv_v1(ts_search_result* result, FILE *read_file } } + result->filters = ts_get_filters(result->file_filter); + return IMPORT_NONE; } -- cgit v1.2.3-70-g09d2