ctdlload: import floor table
authorArt Cancro <ajc@citadel.org>
Mon, 17 Jul 2023 03:11:05 +0000 (18:11 -0900)
committerArt Cancro <ajc@citadel.org>
Mon, 17 Jul 2023 03:11:05 +0000 (18:11 -0900)
citadel/utils/ctdlload.c

index e4b67762714197b0f059ce8af19b4b96fdb19ca6..97f3a0d4d888d8905a9023a88dcfb037e0dba7f1 100644 (file)
@@ -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);