From 118afb6b54e47515cc1f21208a53de16381fffe6 Mon Sep 17 00:00:00 2001 From: Art Cancro Date: Sun, 16 Jul 2023 18:11:05 -0900 Subject: [PATCH] ctdlload: import floor table --- citadel/utils/ctdlload.c | 52 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 47 insertions(+), 5 deletions(-) diff --git a/citadel/utils/ctdlload.c b/citadel/utils/ctdlload.c index e4b677627..97f3a0d4d 100644 --- a/citadel/utils/ctdlload.c +++ b/citadel/utils/ctdlload.c @@ -310,13 +310,55 @@ int convert_room(char *line, DBT *out_key, DBT *out_data) { } +// Convert a floor record to a record on disk. +int convert_floor(char *line, DBT *out_key, DBT *out_data) { + char *token; + struct floor *f = malloc(sizeof(struct floor)); + int floor_num; + + memset(f, 0, sizeof(struct floor)); + char *p = line; + + for (int i=0; (token = strsep(&p, "|")); ++i) { + switch(i) { + case 1: + floor_num = atoi(token); + break; + case 2: + f->f_flags = atoi(token); + break; + case 3: + strncpy(f->f_name, token, sizeof(f->f_name)); + break; + case 4: + f->f_ref_count = atoi(token); + break; + case 5: + f->f_ep.expire_mode = atoi(token); + break; + case 6: + f->f_ep.expire_value = atoi(token); + break; + } + } + + out_key->size = sizeof(int); + out_key->data = malloc(out_key->size); + memcpy(out_key->data, &floor_num, out_key->size); + + out_data->size = sizeof(struct floor); + out_data->data = f; + return(1); +} + + #if 0 // Convert a "foo" record to a record on disk. -int convert_oom(char *line, DBT *out_key, DBT *out_data) { +int convert_foo(char *line, DBT *out_key, DBT *out_data) { char *token; - struct ctdloom *r = malloc(sizeof(struct ctdloom)); + struct ctdlfoo *r = malloc(sizeof(struct ctdlfoo)); - memset(r, 0, sizeof(struct ctdloom)); + memset(r, 0, sizeof(struct ctdlfoo)); char *p = line; for (int i=0; (token = strsep(&p, "|")); ++i) { @@ -326,7 +368,7 @@ int convert_oom(char *line, DBT *out_key, DBT *out_data) { out_key->size = strlen(r->QRname); out_key->data = strdup(r->QRname); - out_data->size = sizeof(struct ctdloom); + out_data->size = sizeof(struct ctdlfoo); out_data->data = r; return(0); } @@ -416,7 +458,7 @@ void ingest_one(char *line, DB_ENV *dst_dbenv) { else if (!strcasecmp(record_type, "msgmeta")) row_was_good = convert_msgmeta(line, &out_key, &out_data); else if (!strcasecmp(record_type, "user")) row_was_good = convert_user(line, &out_key, &out_data); else if (!strcasecmp(record_type, "room")) row_was_good = convert_room(line, &out_key, &out_data); - else if (!strcasecmp(record_type, "floor")) row_was_good = convert_foo(line, &out_key, &out_data); + else if (!strcasecmp(record_type, "floor")) row_was_good = convert_floor(line, &out_key, &out_data); else if (!strcasecmp(record_type, "msglist")) row_was_good = convert_foo(line, &out_key, &out_data); else if (!strcasecmp(record_type, "visit")) row_was_good = convert_foo(line, &out_key, &out_data); else if (!strcasecmp(record_type, "dir")) row_was_good = convert_foo(line, &out_key, &out_data); -- 2.39.2