123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239 |
- #include <stdio.h>
- #include <string.h>
- #include "jam.h"
- #include "structrw.h"
- uint16_t jamgetuword(unsigned char *buf,uint32_t offset)
- {
- return (uint16_t) buf[offset]+
- buf[offset+1]*256;
- }
- void jamputuword(unsigned char *buf,uint32_t offset,uint16_t num)
- {
- buf[offset]=num%256;
- buf[offset+1]=num/256;
- }
- void jamputuint32_t(unsigned char *buf,uint32_t offset,uint32_t num)
- {
- buf[offset]=num%256;
- buf[offset+1]=(num / 256) % 256;
- buf[offset+2]=(num / 256 / 256) % 256;
- buf[offset+3]=(num / 256 / 256 / 256) % 256;
- }
- uint32_t jamgetuint32_t(unsigned char *buf,uint32_t offset)
- {
- return (uint32_t) buf[offset]+
- buf[offset+1]*256+
- buf[offset+2]*256*256+
- buf[offset+3]*256*256*256;
- }
- int freadjambaseheader(FILE *fp,s_JamBaseHeader *s_JamBaseHeader)
- {
- unsigned char buf[SIZE_JAMBASEHEADER];
- if(fread(buf,SIZE_JAMBASEHEADER,1,fp) != 1)
- return 0;
- memcpy(s_JamBaseHeader->Signature,&buf[JAMBASEHEADER_SIGNATURE],4);
- s_JamBaseHeader->DateCreated = jamgetuint32_t(buf,JAMBASEHEADER_DATECREATED);
- s_JamBaseHeader->ModCounter = jamgetuint32_t(buf,JAMBASEHEADER_MODCOUNTER);
- s_JamBaseHeader->ActiveMsgs = jamgetuint32_t(buf,JAMBASEHEADER_ACTIVEMSGS);
- s_JamBaseHeader->PasswordCRC = jamgetuint32_t(buf,JAMBASEHEADER_PASSWORDCRC);
- s_JamBaseHeader->BaseMsgNum = jamgetuint32_t(buf,JAMBASEHEADER_BASEMSGNUM);
- memcpy(s_JamBaseHeader->RSRVD,&buf[JAMBASEHEADER_RSRVD],1000);
- return 1;
- }
- int fwritejambaseheader(FILE *fp,s_JamBaseHeader *s_JamBaseHeader)
- {
- unsigned char buf[SIZE_JAMBASEHEADER];
- memcpy(&buf[JAMBASEHEADER_SIGNATURE],s_JamBaseHeader->Signature,4);
- jamputuint32_t(buf,JAMBASEHEADER_DATECREATED, s_JamBaseHeader->DateCreated);
- jamputuint32_t(buf,JAMBASEHEADER_MODCOUNTER, s_JamBaseHeader->ModCounter);
- jamputuint32_t(buf,JAMBASEHEADER_ACTIVEMSGS, s_JamBaseHeader->ActiveMsgs);
- jamputuint32_t(buf,JAMBASEHEADER_PASSWORDCRC, s_JamBaseHeader->PasswordCRC );
- jamputuint32_t(buf,JAMBASEHEADER_BASEMSGNUM, s_JamBaseHeader->BaseMsgNum);
- memcpy(&buf[JAMBASEHEADER_RSRVD],s_JamBaseHeader->RSRVD,1000);
- if(fwrite(buf,SIZE_JAMBASEHEADER,1,fp) != 1)
- return 0;
- return 1;
- }
- int freadjammsgheader(FILE *fp,s_JamMsgHeader *s_JamMsgHeader)
- {
- unsigned char buf[SIZE_JAMMSGHEADER];
- if(fread(buf,SIZE_JAMMSGHEADER,1,fp) != 1)
- return 0;
- memcpy(s_JamMsgHeader->Signature,&buf[JAMMSGHEADER_SIGNATURE],4);
- s_JamMsgHeader->Revision = jamgetuword(buf,JAMMSGHEADER_REVISION);
- s_JamMsgHeader->ReservedWord = jamgetuword(buf,JAMMSGHEADER_RESERVEDWORD);
- s_JamMsgHeader->SubfieldLen = jamgetuint32_t(buf,JAMMSGHEADER_SUBFIELDLEN);
- s_JamMsgHeader->TimesRead = jamgetuint32_t(buf,JAMMSGHEADER_TIMESREAD);
- s_JamMsgHeader->MsgIdCRC = jamgetuint32_t(buf,JAMMSGHEADER_MSGIDCRC);
- s_JamMsgHeader->ReplyCRC = jamgetuint32_t(buf,JAMMSGHEADER_REPLYCRC);
- s_JamMsgHeader->ReplyTo = jamgetuint32_t(buf,JAMMSGHEADER_REPLYTO);
- s_JamMsgHeader->Reply1st = jamgetuint32_t(buf,JAMMSGHEADER_REPLY1ST);
- s_JamMsgHeader->ReplyNext = jamgetuint32_t(buf,JAMMSGHEADER_REPLYNEXT);
- s_JamMsgHeader->DateWritten = jamgetuint32_t(buf,JAMMSGHEADER_DATEWRITTEN);
- s_JamMsgHeader->DateReceived = jamgetuint32_t(buf,JAMMSGHEADER_DATERECEIVED);
- s_JamMsgHeader->DateProcessed = jamgetuint32_t(buf,JAMMSGHEADER_DATEPROCESSED);
- s_JamMsgHeader->MsgNum = jamgetuint32_t(buf,JAMMSGHEADER_MSGNUM);
- s_JamMsgHeader->Attribute = jamgetuint32_t(buf,JAMMSGHEADER_ATTRIBUTE);
- s_JamMsgHeader->Attribute2 = jamgetuint32_t(buf,JAMMSGHEADER_ATTRIBUTE2);
- s_JamMsgHeader->TxtOffset = jamgetuint32_t(buf,JAMMSGHEADER_TXTOFFSET);
- s_JamMsgHeader->TxtLen = jamgetuint32_t(buf,JAMMSGHEADER_TXTLEN);
- s_JamMsgHeader->PasswordCRC = jamgetuint32_t(buf,JAMMSGHEADER_PASSWORDCRC);
- s_JamMsgHeader->Cost = jamgetuint32_t(buf,JAMMSGHEADER_COST);
- return 1;
- }
- int fwritejammsgheader(FILE *fp,s_JamMsgHeader *s_JamMsgHeader)
- {
- unsigned char buf[SIZE_JAMMSGHEADER];
- memcpy(&buf[JAMMSGHEADER_SIGNATURE],s_JamMsgHeader->Signature,4);
- jamputuword(buf,JAMMSGHEADER_REVISION, s_JamMsgHeader->Revision);
- jamputuword(buf,JAMMSGHEADER_RESERVEDWORD, s_JamMsgHeader->ReservedWord);
- jamputuint32_t(buf,JAMMSGHEADER_SUBFIELDLEN, s_JamMsgHeader->SubfieldLen);
- jamputuint32_t(buf,JAMMSGHEADER_TIMESREAD, s_JamMsgHeader->TimesRead);
- jamputuint32_t(buf,JAMMSGHEADER_MSGIDCRC, s_JamMsgHeader->MsgIdCRC);
- jamputuint32_t(buf,JAMMSGHEADER_REPLYCRC, s_JamMsgHeader->ReplyCRC );
- jamputuint32_t(buf,JAMMSGHEADER_REPLYTO, s_JamMsgHeader->ReplyTo);
- jamputuint32_t(buf,JAMMSGHEADER_REPLY1ST, s_JamMsgHeader->Reply1st);
- jamputuint32_t(buf,JAMMSGHEADER_REPLYNEXT, s_JamMsgHeader->ReplyNext);
- jamputuint32_t(buf,JAMMSGHEADER_DATEWRITTEN, s_JamMsgHeader->DateWritten);
- jamputuint32_t(buf,JAMMSGHEADER_DATERECEIVED, s_JamMsgHeader->DateReceived );
- jamputuint32_t(buf,JAMMSGHEADER_DATEPROCESSED, s_JamMsgHeader->DateProcessed);
- jamputuint32_t(buf,JAMMSGHEADER_MSGNUM, s_JamMsgHeader->MsgNum);
- jamputuint32_t(buf,JAMMSGHEADER_ATTRIBUTE, s_JamMsgHeader->Attribute);
- jamputuint32_t(buf,JAMMSGHEADER_ATTRIBUTE2, s_JamMsgHeader->Attribute2);
- jamputuint32_t(buf,JAMMSGHEADER_TXTOFFSET, s_JamMsgHeader->TxtOffset);
- jamputuint32_t(buf,JAMMSGHEADER_TXTLEN, s_JamMsgHeader->TxtLen);
- jamputuint32_t(buf,JAMMSGHEADER_PASSWORDCRC, s_JamMsgHeader->PasswordCRC);
- jamputuint32_t(buf,JAMMSGHEADER_COST, s_JamMsgHeader->Cost);
- if(fwrite(buf,SIZE_JAMMSGHEADER,1,fp) != 1)
- return 0;
- return 1;
- }
- int freadjamindex(FILE *fp,s_JamIndex *s_JamIndex)
- {
- unsigned char buf[SIZE_JAMINDEX];
- if(fread(buf,SIZE_JAMINDEX,1,fp) != 1)
- return 0;
- s_JamIndex->UserCRC = jamgetuint32_t(buf,JAMINDEX_USERCRC);
- s_JamIndex->HdrOffset = jamgetuint32_t(buf,JAMINDEX_HDROFFSET);
- return 1;
- }
- int fwritejamindex(FILE *fp,s_JamIndex *s_JamIndex)
- {
- unsigned char buf[SIZE_JAMINDEX];
- jamputuint32_t(buf,JAMINDEX_USERCRC, s_JamIndex->UserCRC);
- jamputuint32_t(buf,JAMINDEX_HDROFFSET, s_JamIndex->HdrOffset);
- if(fwrite(buf,SIZE_JAMINDEX,1,fp) != 1)
- return 0;
- return 1;
- }
- int freadjamlastread(FILE *fp,s_JamLastRead *s_JamLastRead)
- {
- unsigned char buf[SIZE_JAMLASTREAD];
- if(fread(buf,SIZE_JAMLASTREAD,1,fp) != 1)
- return 0;
- s_JamLastRead->UserCRC = jamgetuint32_t(buf,JAMLASTREAD_USERCRC);
- s_JamLastRead->UserID = jamgetuint32_t(buf,JAMLASTREAD_USERID);
- s_JamLastRead->LastReadMsg = jamgetuint32_t(buf,JAMLASTREAD_LASTREADMSG);
- s_JamLastRead->HighReadMsg = jamgetuint32_t(buf,JAMLASTREAD_HIGHREADMSG);
- return 1;
- }
- int fwritejamlastread(FILE *fp,s_JamLastRead *s_JamLastRead)
- {
- unsigned char buf[SIZE_JAMLASTREAD];
- jamputuint32_t(buf,JAMLASTREAD_USERCRC,s_JamLastRead->UserCRC);
- jamputuint32_t(buf,JAMLASTREAD_USERID,s_JamLastRead->UserID);
- jamputuint32_t(buf,JAMLASTREAD_LASTREADMSG,s_JamLastRead->LastReadMsg);
- jamputuint32_t(buf,JAMLASTREAD_HIGHREADMSG,s_JamLastRead->HighReadMsg);
- if(fwrite(buf,SIZE_JAMLASTREAD,1,fp) != 1)
- return 0;
- return 1;
- }
- int fwritejamsavesubfield(FILE *fp,s_JamSaveSubfield *s_JamSaveSubfield)
- {
- unsigned char buf[SIZE_JAMLASTREAD];
- jamputuword(buf,JAMSAVESUBFIELD_LOID, s_JamSaveSubfield->LoID);
- jamputuword(buf,JAMSAVESUBFIELD_HIID, s_JamSaveSubfield->HiID);
- jamputuint32_t(buf,JAMSAVESUBFIELD_DATLEN, s_JamSaveSubfield->DatLen);
- if(fwrite(buf,SIZE_JAMSAVESUBFIELD,1,fp) != 1)
- return 0;
- return 1;
- }
- void getjamsubfield(unsigned char *buf,s_JamSubfield *Subfield_S)
- {
- Subfield_S->LoID = jamgetuword(buf,JAMSAVESUBFIELD_LOID);
- Subfield_S->HiID = jamgetuword(buf,JAMSAVESUBFIELD_HIID);
- Subfield_S->DatLen = jamgetuint32_t(buf,JAMSAVESUBFIELD_DATLEN);
- Subfield_S->Buffer = (char *) buf + SIZE_JAMSAVESUBFIELD;
- }
|