ctdlload: usersbynumber
authorArt Cancro <ajc@citadel.org>
Tue, 25 Jul 2023 15:17:47 +0000 (06:17 -0900)
committerArt Cancro <ajc@citadel.org>
Tue, 25 Jul 2023 15:17:47 +0000 (06:17 -0900)
citadel/utils/ctdlload.c

index 1dec33878f4f1d172a5f7995bf15a879cbdce3e3..80aa53eeb9aa5164d2a0bc51dda704bccddcbd2b 100644 (file)
@@ -529,8 +529,26 @@ int import_euidindex(char *line, DBT *out_key, DBT *out_data) {
 // Import a "users by number" (secondary index) record
 // The key is a "long"
 int import_usersbynumber(char *line, DBT *out_key, DBT *out_data) {
-       // FIXME
-       return(0);
+       char *token;
+       long usernum;
+
+       char *p = line;
+       for (int i=0; (token = strsep(&p, "|")); ++i) {
+               switch(i) {
+                       case 1:
+                               usernum = atol(token);
+                               break;
+                       case 2:
+                               out_key->size = sizeof(long);
+                               out_key->data = reallok(NULL, sizeof(long));
+                               memcpy(out_key->data, &usernum, out_key->size);
+                               out_data->data = strdup(token);
+                               out_data->size = strlen(out_data->data) + 1;
+                               return(1);
+               }
+       }
+
+       return(0);              // should never get here unless it's a bad record
 }