From: Art Cancro Date: Mon, 17 Jul 2023 19:44:25 +0000 (-0900) Subject: ctdlload: import visits X-Git-Tag: v981~9 X-Git-Url: https://code.citadel.org/?a=commitdiff_plain;h=a9dbeb5155dbf34c53b84e5fdb866c2ccba0c99f;p=citadel.git ctdlload: import visits --- diff --git a/citadel/utils/ctdlload.c b/citadel/utils/ctdlload.c index 979419d10..b948d5a3f 100644 --- a/citadel/utils/ctdlload.c +++ b/citadel/utils/ctdlload.c @@ -388,6 +388,54 @@ int convert_msglist(char *line, DBT *out_key, DBT *out_data) { } +// Convert a "visit" record to a record on disk. +int convert_visit(char *line, DBT *out_key, DBT *out_data) { + char *token; + struct visit *v = malloc(sizeof(struct visit)); + + memset(v, 0, sizeof(struct visit)); + char *p = line; + + for (int i=0; (token = strsep(&p, "|")); ++i) { + switch(i) { + case 1: + v->v_roomnum = atol(token); + break; + case 2: + v->v_roomgen = atol(token); + break; + case 3: + v->v_usernum = atol(token); + break; + case 4: + v->v_lastseen = atoi(token); + break; + case 5: + v->v_flags = atoi(token); + break; + case 6: + strncpy(v->v_seen, token, sizeof(v->v_seen)); + break; + case 7: + strncpy(v->v_answered, token, sizeof(v->v_answered)); + break; + case 8: + v->v_view = atoi(token); + break; + } + } + + // The key is the same as the first three data members (3 x long) + out_key->size = sizeof(long) * 3; + out_key->data = reallok(NULL, out_key->size); + memcpy(out_key->data, v, out_key->size); + + out_data->size = sizeof(struct visit); + out_data->data = v; + return(1); +} + + #if 0 // Convert a "foo" record to a record on disk. int convert_foo(char *line, DBT *out_key, DBT *out_data) { @@ -496,7 +544,7 @@ void ingest_one(char *line, DB_ENV *dst_dbenv) { 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_floor(line, &out_key, &out_data); else if (!strcasecmp(record_type, "msglist")) row_was_good = convert_msglist(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, "visit")) row_was_good = convert_visit(line, &out_key, &out_data); else if (!strcasecmp(record_type, "dir")) row_was_good = convert_foo(line, &out_key, &out_data); else if (!strcasecmp(record_type, "use")) row_was_good = convert_foo(line, &out_key, &out_data); else if (!strcasecmp(record_type, "bigmsg")) row_was_good = convert_foo(line, &out_key, &out_data);