diff --git a/src/database/database.c b/src/database/database.c index 96d9502..26122c0 100644 --- a/src/database/database.c +++ b/src/database/database.c @@ -114,7 +114,7 @@ void save_current_job_info(sqlite3_context *ctx, int argc, sqlite3_value **argv) char buf[PATH_MAX]; strcpy(buf, current_job); - strcpy(ipc_ctx->current_job[ProcData.thread_id], current_job); + SET_CURRENT_JOB(ipc_ctx, current_job); sqlite3_result_text(ctx, "ok", -1, SQLITE_STATIC); } diff --git a/src/database/database.h b/src/database/database.h index 151bc5f..644bcf6 100644 --- a/src/database/database.h +++ b/src/database/database.h @@ -64,6 +64,8 @@ typedef struct { char current_job[MAX_THREADS][PATH_MAX * 2]; } database_ipc_ctx_t; +#define SET_CURRENT_JOB(ctx, job) (strcpy((ctx)->current_job[ProcData.thread_id], job)) + typedef struct { double date_min; double date_max; diff --git a/src/parsing/parse.c b/src/parsing/parse.c index 138e01e..d061a14 100644 --- a/src/parsing/parse.c +++ b/src/parsing/parse.c @@ -142,6 +142,10 @@ void parse(parse_job_t *job) { job->vfile.calculate_checksum = ScanCtx.calculate_checksums; } + if (IS_SUB_JOB(job)) { + SET_CURRENT_JOB(ProcData.ipc_db->ipc_ctx, job->filepath); + } + document_t *doc = malloc(sizeof(document_t)); strcpy(doc->filepath, job->filepath); diff --git a/third-party/libscan/libscan/scan.h b/third-party/libscan/libscan/scan.h index 5bce878..1b73f84 100644 --- a/third-party/libscan/libscan/scan.h +++ b/third-party/libscan/libscan/scan.h @@ -172,6 +172,8 @@ typedef struct { char filepath[PATH_MAX * 2 + 1]; } parse_job_t; +#define IS_SUB_JOB(job) ((job)->parent[0] != '\0') + #include "util.h"