#include "iq-msgparse.h"
#include <stdio.h>
#include <string.h>
#include <time.h>

void printHeader(tMsgHeaderRec hdr);
void printMsg(tMsgHeaderRec hdr, FILE *fp);

void main(int argc, char *argv[]) {
	
	FILE *fpHdr = NULL;
	FILE *fpDat = NULL;
	char hdrFile[13];
	char datFile[13];
	char *p = NULL;

	if (argc < 2) {
		printf("usage: iq-msgpares <message area name>\n");
		return;
	}

	memset(hdrFile,0,13);
	strncpy(hdrFile,argv[1],12);

	memset(datFile,0,13);
	strncpy(datFile,hdrFile,13);
	p = strchr(datFile,'.');

	if(!p) {
		printf("failed to find '.' in file name\n");
		return;
	}

	p[1] = 'D';
	p[2] = 'A';
	p[3] = 'T';

	fpHdr = fopen(hdrFile,"r+b");
	if(!fpHdr) {
		printf("failed to open %s\n",hdrFile);
		return;
	}	

	fpDat = fopen(datFile,"r+b");
	if(!fpDat) {
		printf("failed to open %s\n",datFile);
		return;
	}	

	while(!feof(fpHdr)) {
		tMsgHeaderRec header;
		fread(&header,sizeof(tMsgHeaderRec), 1, fpHdr);
		printHeader(header);
		printMsg(header, fpDat);
	}

	fclose(fpHdr);
	fclose(fpDat);
}

void printHeader(tMsgHeaderRec hdr) {
      char *p;
      long t;
	printf("From: %s\nTo: %s\n", hdr.fromInfo.name, hdr.toInfo.name);
	printf("Subject : %s\n", hdr.subject);
      t = hdr.date + 315360000; /* plues 10 years */
      p = ctime(&t);
      printf("date: %s\n", p);
}

void printMsg(tMsgHeaderRec hdr, FILE *fp) {
	char line[81];
	unsigned char len;
	int x = 0;

	memset(line,0,81);
	printf("seeking to %d\n",hdr.pos);
	fseek(fp,hdr.pos - 1,SEEK_SET);

	printf("printing %d lines\n",hdr.size);
	for(x = 0; x < hdr.size; x++) {	
		fread(&len,1,1,fp);
		//printf("len : %d\n",len); 
		if(len == 0) {
			printf("\n");
		} else {
			if(len > 80) {
				printf("len %d, reseting to 80\n", len);
				len = 80;
			}
			fread(line,1,len,fp);
			line[len] = '\0';
			printf("%s\n",line);
		}
	}
	printf("\n");
}
