}
+// 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) {
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);
}
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);