ctdldump: export usersbynumber (secondary index)
authorArt Cancro <ajc@citadel.org>
Wed, 12 Jul 2023 02:04:26 +0000 (17:04 -0900)
committerArt Cancro <ajc@citadel.org>
Wed, 12 Jul 2023 02:04:26 +0000 (17:04 -0900)
citadel/utils/ctdldump.c

index 4a548c41019370556c52653fe9584d4685f8218b..ae884a1e59e55b5fc5804eba124ed07ffa47f215 100644 (file)
@@ -142,17 +142,12 @@ void close_dbenv(DB_ENV *dbenv) {
 void export_msgmain(int which_cdb, DBT *in_key, DBT *in_data) {
        long in_msgnum;
 
-       if (in_key->size != sizeof(long)) {
-               fprintf(stderr, "\033[31m\033[1m *** BAD DATA *** ABORTING *** \033[0m\n");
-               abort();
-       }
-
        memcpy(&in_msgnum, in_key->data, sizeof(in_msgnum));
 
        // If the msgnum is negative, we are looking at METADATA
        if (in_msgnum < 0) {
                struct MetaData *meta = (struct MetaData *)in_data->data;
-               printf("msgmeta|%ld|%d|%s|%ld\n",
+               printf("msgmeta|%ld|%d|%s|%ld|\n",
                        meta->meta_msgnum,
                        meta->meta_refcount,
                        meta->meta_content_type,
@@ -162,7 +157,7 @@ void export_msgmain(int which_cdb, DBT *in_key, DBT *in_data) {
 
        // If the msgnum is positive, we are looking at a MESSAGE
        else if (in_msgnum > 0) {
-               printf("msgtext|%ld|%s\n", in_msgnum, hexout(in_data->data, in_data->size));
+               printf("msgtext|%ld|%s|\n", in_msgnum, hexout(in_data->data, in_data->size));
        }
 
        // If the msgnum is 0 it's probably not a valid record.
@@ -174,7 +169,7 @@ void export_user(int which_cdb, DBT *in_key, DBT *in_data) {
 
        struct ctdluser *user = (struct ctdluser *)in_data->data;
 
-       printf("user|%d|%d|%s|%u|%d|%ld|%ld|%d|%s|%ld|%ld|%s|%ld|%ld\n",
+       printf("user|%d|%d|%s|%u|%d|%ld|%ld|%d|%s|%ld|%ld|%s|%ld|%ld|\n",
                user->version,
                user->uid,
                user->password,
@@ -198,7 +193,7 @@ void export_room(int which_cdb, DBT *in_key, DBT *in_data) {
 
        struct ctdlroom *room = (struct ctdlroom *)in_data->data;
 
-       printf("room|%s|%s|%ld|%ld|%ld|%u|%s|%ld|%d|%ld|%d|%d|%ld|%d|%u|%d|%ld\n",
+       printf("room|%s|%s|%ld|%ld|%ld|%u|%s|%ld|%d|%ld|%d|%d|%ld|%d|%u|%d|%ld|\n",
                room->QRname,
                room->QRpasswd,
                room->QRroomaide,
@@ -228,7 +223,7 @@ void export_floor(int which_cdb, DBT *in_key, DBT *in_data) {
 
        struct floor *floor = (struct floor *)in_data->data;
 
-       printf("floor|%d|%u|%s|%d|%d|%d\n",
+       printf("floor|%d|%u|%s|%d|%d|%d|\n",
                floor_num,
                floor->f_flags,
                floor->f_name,
@@ -262,14 +257,14 @@ void export_msglist(int which_cdb, DBT *in_key, DBT *in_data) {
                        printf("%ld", msg);
                }
        }
-       printf("\n");
+       printf("|\n");
 }
 
 
 // export function for a visit record
 void export_visit(int which_cdb, DBT *in_key, DBT *in_data) {
        struct visit *visit = (struct visit *)in_data->data;
-       printf("visit|%ld|%ld|%ld|%ld|%u|%s|%s|%d\n",
+       printf("visit|%ld|%ld|%ld|%ld|%u|%s|%s|%d|\n",
                visit->v_roomnum,
                visit->v_roomgen,
                visit->v_usernum,
@@ -287,14 +282,14 @@ void export_visit(int which_cdb, DBT *in_key, DBT *in_data) {
 void export_dir(int which_cdb, DBT *in_key, DBT *in_data) {
        printf("dir|");
        fwrite(in_key->data, in_key->size, 1, stdout);
-       printf("|%s\n", (char *)in_data->data);
+       printf("|%s|\n", (char *)in_data->data);
 }
 
 
 // export function for a use table record
 void export_usetable(int which_cdb, DBT *in_key, DBT *in_data) {
        struct UseTable *u = (struct UseTable *)in_data->data;
-       printf("use|%d|%ld\n", u->hash, u->timestamp);
+       printf("use|%d|%ld|\n", u->hash, u->timestamp);
 }
 
 
@@ -303,7 +298,7 @@ void export_bigmsg(int which_cdb, DBT *in_key, DBT *in_data) {
        long msgnum;
 
        memcpy(&msgnum, in_key->data, sizeof(msgnum));
-       printf("bigmsg|%ld|%s\n", msgnum, hexout(in_data->data, in_data->size));
+       printf("bigmsg|%ld|%s|\n", msgnum, hexout(in_data->data, in_data->size));
 }
 
 
@@ -325,39 +320,21 @@ void export_euidindex(int which_cdb, DBT *in_key, DBT *in_data) {
        memcpy(&roomnum, in_data->data+sizeof(long), sizeof(msgnum));
        euid = in_data->data+(sizeof(long)*2);
 
-       printf("euidindex|%ld|%ld|%s\n", msgnum, roomnum, euid);
+       printf("euidindex|%ld|%ld|%s|\n", msgnum, roomnum, euid);
 }
 
 
-#if 0
 // export users-by-number records
 // (This is a secondary index -- should we just regenerate the data after import?)
-void export_usersbynumber(int which_cdb, DBT *in_key, DBT *in_data, DBT *out_key, DBT *out_data) {
+void export_usersbynumber(int which_cdb, DBT *in_key, DBT *in_data) {
 
        // key is a long
-       // and remember ... "long" is int32_t on the source system
-       int32_t in_usernum;
-       long out_usernum;
-       memcpy(&in_usernum, in_key->data, sizeof(in_usernum));
-       out_usernum = (long) in_usernum;
-
-       if (in_key->size != 4) {
-               fprintf(stderr, "\033[31m\033[1m *** SOURCE DATABASE IS NOT 32-BIT *** ABORTING *** \033[0m\n");
-               abort();
-       }
-
-       out_key->size = sizeof(out_usernum);
-       out_key->data = realloc(out_key->data, out_key->size);
-       memcpy(out_key->data, &out_usernum, sizeof(out_usernum));
+       long usernum;
+       memcpy(&usernum, in_key->data, sizeof(usernum));
 
        // value is a string
-       out_data->size = in_data->size;
-       out_data->data = realloc(out_data->data, out_data->size);
-       memcpy(out_data->data, in_data->data, in_data->size);
-
-       // printf("usersbynumber: %ld --> %s\n", out_usernum, (char *)out_data->data);
+       printf("usersbynumber|%ld|%s|\n", usernum, (char *)in_data->data);
 }
-#endif
 
 
 #if 0
@@ -402,7 +379,7 @@ void (*export_functions[])(int which_cdb, DBT *in_key, DBT *in_data) = {
        export_bigmsg,          // CDB_BIGMSGS
        zero_function,          // CDB_FULLTEXT (regenerate this on the server)
        export_euidindex,       // CDB_EUIDINDEX
-       zero_function,          // CDB_USERSBYNUMBER
+       export_usersbynumber,   // CDB_USERSBYNUMBER
        zero_function,          // CDB_UNUSED1 (obsolete)
        zero_function           // CDB_CONFIG
 };