summaryrefslogtreecommitdiffstats
path: root/debian/pilot-link/pilot-link-0.12.5-dfsg/tests/versamail-test.c
diff options
context:
space:
mode:
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.c222
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;
+}