summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAldrik Ramaekers <aldrikboy@gmail.com>2024-03-16 10:45:11 +0100
committerAldrik Ramaekers <aldrikboy@gmail.com>2024-03-16 10:45:11 +0100
commitfe4cf7b218974a05af58851878ba65d5f0e1f348 (patch)
treedb556b82b8566b0feed02cd9568e105e0eae6f93 /src
parentfd60e2241af0ebcb190a751a8be9699cbb87156b (diff)
csv import work
Diffstat (limited to 'src')
-rw-r--r--src/export.cpp4
-rw-r--r--src/import.cpp26
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;
}