// If the msgnum is positive, we are looking at a MESSAGE
else if (in_msgnum > 0) {
- printf("msgtext|%s\n", 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.
void export_dir(int which_cdb, DBT *in_key, DBT *in_data) {
printf("dir|");
fwrite(in_key->data, in_key->size, 1, stdout);
- printf("|");
- fwrite(in_data->data, in_data->size, 1, stdout);
- printf("\n");
+ printf("|%s\n", (char *)in_data->data);
}
}
-#if 0
// export function for large message texts
-void export_bigmsgs(int which_cdb, DBT *in_key, DBT *in_data, DBT *out_key, DBT *out_data) {
-
- // The key is a packed long
- int32_t in_msgnum;
- long out_msgnum;
- memcpy(&in_msgnum, in_key->data, sizeof(in_msgnum));
- out_msgnum = (long)in_msgnum;
-
- 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(long);
- out_key->data = realloc(out_key->data, out_key->size);
- memcpy(out_key->data, &out_msgnum, sizeof(long));
+void export_bigmsg(int which_cdb, DBT *in_key, DBT *in_data) {
+ long msgnum;
- // the data is binary-ish but has no packed integers
- 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("\033[32m\033[1mBigmsg %ld , length %d\033[0m\n", out_msgnum, out_data->size);
+ memcpy(&msgnum, in_key->data, sizeof(msgnum));
+ printf("bigmsg|%ld|%s\n", msgnum, hexout(in_data->data, in_data->size));
}
-#endif
-#if 0
// export function for EUID Index records
-void export_euidindex(int which_cdb, DBT *in_key, DBT *in_data, DBT *out_key, DBT *out_data) {
+void export_euidindex(int which_cdb, DBT *in_key, DBT *in_data) {
// The structure of an euidindex record *key* is:
// |----room_number----|----------EUID-------------|
// |-----msg_number----|----room_number----|----------EUID-------------|
// (sizeof long) (sizeof long) (actual length of euid)
- int32_t in_msgnum = 0;
- int32_t in_roomnum = 0;
- char euid[SIZ];
- long out_msgnum = 0;
- long out_roomnum = 0;
+ long msgnum, roomnum;
+ char *euid;
- memcpy(&in_msgnum, in_data->data, sizeof(in_msgnum));
- memcpy(&in_roomnum, in_data->data+sizeof(int32_t), sizeof(in_msgnum));
- strcpy(euid, in_data->data+(sizeof(int32_t)*2));
+ memcpy(&msgnum, in_data->data, sizeof(long));
+ memcpy(&roomnum, in_data->data+sizeof(long), sizeof(msgnum));
+ euid = in_data->data+(sizeof(long)*2);
- out_msgnum = (long) in_msgnum;
- out_roomnum = (long) in_roomnum;
- // printf("euidindex: msgnum=%ld, roomnum=%ld, euid=\"%s\"\n", out_msgnum, out_roomnum, euid);
-
- out_key->size = sizeof(long) + strlen(euid) + 1;
- out_key->data = realloc(out_key->data, out_key->size);
- memcpy(out_key->data, &out_roomnum, sizeof(out_roomnum));
- strcpy(out_key->data+sizeof(out_roomnum), euid);
-
- out_data->size = sizeof(long) + sizeof(long) + strlen(euid) + 1;
- out_data->data = realloc(out_data->data, out_data->size);
- memcpy(out_data->data, &out_msgnum, sizeof(out_msgnum));
- memcpy(out_data->data+sizeof(out_msgnum), &out_roomnum, sizeof(out_roomnum));
- strcpy(out_data->data+sizeof(out_msgnum)+sizeof(out_roomnum), euid);
+ printf("euidindex|%ld|%ld|%s\n", msgnum, roomnum, euid);
}
-#endif
#if 0
export_visit, // CDB_VISIT
export_dir, // CDB_DIRECTORY
export_usetable, // CDB_USETABLE
- zero_function, // CDB_BIGMSGS
- zero_function, // CDB_FULLTEXT
- zero_function, // CDB_EUIDINDEX
+ export_bigmsg, // CDB_BIGMSGS
+ zero_function, // CDB_FULLTEXT (regenerate this on the server)
+ export_euidindex, // CDB_EUIDINDEX
zero_function, // CDB_USERSBYNUMBER
zero_function, // CDB_UNUSED1 (obsolete)
zero_function // CDB_CONFIG