+// Convert a "room" record to a record on disk. (Source string is unusable after this function is called.)
+int convert_room(char *line, DBT *out_key, DBT *out_data) {
+ char *token;
+ struct ctdlroom *r = malloc(sizeof(struct ctdlroom));
+
+ memset(r, 0, sizeof(struct ctdlroom));
+ char *p = line;
+
+ for (int i=0; (token = strsep(&p, "|")); ++i) {
+ switch(i) {
+ case 1:
+ strncpy(r->QRname, token, sizeof(r->QRname));
+ break;
+ case 2:
+ strncpy(r->QRpasswd, token, sizeof (r->QRpasswd));
+ break;
+ case 3:
+ r->QRroomaide = atol(token);
+ break;
+ case 4:
+ r->QRhighest = atol(token);
+ break;
+ case 5:
+ r->QRgen = atol(token);
+ break;
+ case 6:
+ r->QRflags = atoi(token);
+ break;
+ case 7:
+ strncpy(r->QRdirname, token, sizeof(r->QRdirname));
+ break;
+ case 8:
+ r->msgnum_info = atol(token);
+ break;
+ case 9:
+ r->QRfloor = atoi(token);
+ break;
+ case 10:
+ r->QRmtime = atol(token);
+ break;
+ case 11:
+ r->QRep.expire_mode = atoi(token);
+ break;
+ case 12:
+ r->QRep.expire_value = atoi(token);
+ break;
+ case 13:
+ r->QRnumber = atol(token);
+ break;
+ case 14:
+ r->QRorder = atoi(token);
+ break;
+ case 15:
+ r->QRflags2 = atoi(token);
+ break;
+ case 16:
+ r->QRdefaultview = atoi(token);
+ break;
+ case 17:
+ r->msgnum_pic = atol(token);
+ break;
+ }
+ }
+
+ // The key is the room name in all lower case
+ out_key->size = strlen(r->QRname);
+ out_key->data = strdup(r->QRname);
+ char *k = (char *)out_key->data;
+ for (int i=0; i<=out_key->size; ++i) {
+ k[i] = tolower(k[i]);
+ }
+
+ out_data->size = sizeof(struct ctdlroom);
+ out_data->data = r;
+ return(1);
+}
+
+
+#if 0
+// Convert a "foo" record to a record on disk.
+int convert_oom(char *line, DBT *out_key, DBT *out_data) {
+ char *token;
+ struct ctdloom *r = malloc(sizeof(struct ctdloom));
+
+ memset(r, 0, sizeof(struct ctdloom));
+ char *p = line;
+
+ for (int i=0; (token = strsep(&p, "|")); ++i) {
+ switch(i) {
+ }
+ }
+
+ out_key->size = strlen(r->QRname);
+ out_key->data = strdup(r->QRname);
+ out_data->size = sizeof(struct ctdloom);
+ out_data->data = r;
+ return(0);
+}
+#endif
+
+