diff options
Diffstat (limited to 'debian/pilot-link/pilot-link-0.12.5-dfsg/tests/versamail-test.c')
-rw-r--r-- | debian/pilot-link/pilot-link-0.12.5-dfsg/tests/versamail-test.c | 222 |
1 files changed, 222 insertions, 0 deletions
diff --git a/debian/pilot-link/pilot-link-0.12.5-dfsg/tests/versamail-test.c b/debian/pilot-link/pilot-link-0.12.5-dfsg/tests/versamail-test.c new file mode 100644 index 00000000..4e1ce265 --- /dev/null +++ b/debian/pilot-link/pilot-link-0.12.5-dfsg/tests/versamail-test.c @@ -0,0 +1,222 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <ctype.h> + +#include "pi-file.h" +#include "pi-versamail.h" + +size_t palm_strftime(char *s, size_t max, const char *fmt, const struct tm *tm); + +void hex_dump(unsigned char *buf, int size) +{ + char text[18]; + int i; + + bzero(text, 17); + + for (i = 0; i < size; i++) { + printf("%02x ", buf[i]); + text[i % 16] = (isprint(buf[i]) ? buf[i] : '.'); + if ((i + 1) % 16 == 0) { + printf("%s\n", text); + bzero(text, 17); + } + } + printf("\n"); +} + +int print_cat_info(struct CategoryAppInfo *ai) +{ + int i; + + printf("Category Info Start\n"); + printf("renamed="); + for (i = 0; i < 16; i++) { + printf("%d", ai->renamed[i]); + } + printf("\n"); + for (i = 0; i < 16; i++) { + printf("Index %02d ID %03d %s\n", i, ai->ID[i], + ai->name[i]); + } + printf("lastUniqueID = %d\n", ai->lastUniqueID); + printf("Category Info End\n"); + return 0; +} + +int print_versamail_app_info(int db, void *record, int size) +{ + struct VersaMailAppInfo ai; + + printf("Category app info\n"); //undo + //hex_dump(record, size);//undo + unpack_VersaMailAppInfo(&ai, record, size); + print_cat_info(&(ai.category)); + + return 0; +} + + +void print_versamail_record(void *record, int size, int attr, int idx) +{ + struct VersaMail mail; + char datestr[255]; + + unpack_VersaMail(&mail, record, size); + + printf("----\n"); + printf("version: %lu\n", mail.imapuid); + palm_strftime(datestr, 254, "%c", &(mail.date)); + //printf("date: %s\n", datestr); + //printf("category: %d\n", mail.category); + //printf("account: %d\n", mail.accountNo); + printf("unknown1: %d\n", mail.unknown1); + printf("unknown2: %d\n", mail.unknown2); + printf("reserved1: %d\n", mail.reserved1); + printf("reserved2: %d\n", mail.reserved2); + printf("download: %d\n", mail.download); + printf("mark: %d\n", mail.mark); + printf("read: %d\n", mail.read); + printf("body: %s\n", mail.body); + //printf("to: %s\n", mail.to); + //printf("from: %s\n", mail.from); + //printf("cc: %s\n", mail.cc); + //printf("bcc: %s\n", mail.bcc); + printf("subject: %s\n", mail.subject); + //printf("dateString: %s\n", mail.dateString); + //printf("replyTo: %s\n", mail.replyTo); + + free_VersaMail(&mail); +} + +void validate_versamail_packer(void *record, int size, int attr, int idx) +{ + struct VersaMail mail; + char *buffer; + int len; + int i; + + unpack_VersaMail(&mail, record, size); + len = pack_VersaMail(&mail, NULL, 0); + buffer = malloc(len); + pack_VersaMail(&mail, buffer, len); + + /* printf("-------------\n"); */ + if (size - len != 0) { + printf + ("on-disk size is %d, pack asked for %d to repack, wrong by %d.\n", + size, len, size - len); + } + printf("subject: %s\n", mail.subject); + printf(" attachment count: %d\n", mail.attachmentCount); + + if (0) { + printf("uid: %d\n", (int) mail.imapuid); + printf("size: %d\n", mail.msgSize); + printf("unknown1: %d\n", mail.unknown1); + printf("unknown2: %d\n", mail.unknown2); + printf("reserved1: %d\n", mail.reserved1); + printf("reserved2: %d\n", mail.reserved2); + printf("download: %d\n", mail.download); + printf("mark: %d\n", mail.mark); + /* + printf("body: %s\n", mail.body); + printf("dateString: %s\n", mail.dateString); + printf("replyTo: %s\n", mail.replyTo); + */ + } + + if (0) { + if (mail.unknown3length > 0) { + for (i = 0; i < mail.unknown3length; i++) { + printf + ("unknown attachment system Byte %3d: 0x%10x | %c | %6d\n", + i, ((char *) mail.unknown3)[i], + (isprint(((char *) mail.unknown3)[i]) + ? ((char *) mail.unknown3)[i] : '.'), + ((char *) mail.unknown3)[i]); + } + } + } + + + for (i = 0; i < ((size) > (len) ? (size) : (len)); i++) { + if ((i < len) && (i < size)) { + if (!((char *) record)[i] == buffer[i]) { + printf + ("WRONG Byte %3d: 0x%10x (%c) vs. 0x%10x (%c)\n", + i, ((char *) record)[i], + (isprint(((char *) record)[i]) + ? ((char *) record)[i] : '.'), + buffer[i], + (isprint(buffer[i]) ? buffer[i] : + '.')); + } else { + if (0) { + printf + (" OK Byte %3d: 0x%10x (%c) vs. 0x%10x (%c)\n", + i, ((char *) record)[i], + (isprint(((char *) record)[i]) + ? ((char *) record)[i] : + '.'), buffer[i], + (isprint(buffer[i]) ? + buffer[i] : '.')); + } + } + } else if (i < len) { + printf + ("WRONG Byte %3d: ----------- vs. 0x%10x (%c)\n", + i, buffer[i], + (isprint(buffer[i]) ? buffer[i] : '.')); + } else if (i < size) { + printf + ("WRONG Byte %3d: 0x%10x (%c) vs. -----------\n", + i + 1, ((char *) record)[i], + (isprint(((char *) record)[i]) + ? ((char *) record)[i] : '.')); + } + } + free(buffer); + free_VersaMail(&mail); + +} + +int main(int argc, char *argv[]) +{ + struct pi_file *pi_fp; + char *DBname; + int r; + int idx; + size_t size; + int attr; + int cat; + recordid_t uid; + void *record; + + DBname = "MultiMail Messages.pdb"; + + pi_fp = pi_file_open(DBname); + if (pi_fp == 0) { + printf("Unable to open '%s'!\n", DBname); + return -1; + } + + pi_file_get_app_info PI_ARGS((pi_fp, &record, &size)); + + print_versamail_app_info(r, record, size); + printf("----------\n"); + + for (idx = 0;; idx++) { + r = pi_file_read_record(pi_fp, idx, &record, &size, &attr, + &cat, &uid); + if (r < 0) + break; + //print_versamail_record(record, size, attr, idx); + validate_versamail_packer(record, size, attr, idx); + } + + pi_file_close(pi_fp); + + return 0; +} |