-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathjam.h
194 lines (179 loc) · 7.03 KB
/
jam.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
/*
** JAM(mbp) - The Joaquim-Andrew-Mats Message Base Proposal
**
** C API
**
** Written by Joaquim Homrighausen.
**
** ----------------------------------------------------------------------
**
** jam.h (JAMmb)
**
** Prototypes and definitions for the JAM message base format
**
** Copyright 1993 Joaquim Homrighausen, Andrew Milner, Mats Birch, and
** Mats Wallin. ALL RIGHTS RESERVED.
**
** 93-06-28 JoHo
** Initial coding.
*/
#ifdef __cplusplus
extern "C" {
#endif
#ifndef __JAM_H__
#define __JAM_H__
#ifndef __JAMSYS_H__
#include "jamsys.h"
#endif
/*
** File extensions
*/
#define EXT_HDRFILE ".jhr"
#define EXT_TXTFILE ".jdt"
#define EXT_IDXFILE ".jdx"
#define EXT_LRDFILE ".jlr"
/*
** Revision level and header signature
*/
#define CURRENTREVLEV 1
#define HEADERSIGNATURE "JAM"
/*
** Header file information block, stored first in all .JHR files
*/
typedef struct
{
CHAR8 Signature[4]; /* <J><A><M> followed by <NUL> */
UINT32 DateCreated; /* Creation date */
UINT32 ModCounter; /* Last processed counter */
UINT32 ActiveMsgs; /* Number of active (not deleted) msgs */
UINT32 PasswordCRC; /* CRC-32 of password to access */
UINT32 BaseMsgNum; /* Lowest message number in index file */
CHAR8 RSRVD[1000]; /* Reserved space */
}
JAMHDRINFO, _JAMDATA * JAMHDRINFOptr;
/*
** Message status bits
*/
#define MSG_LOCAL 0x00000001L /* Msg created locally */
#define MSG_INTRANSIT 0x00000002L /* Msg is in-transit */
#define MSG_PRIVATE 0x00000004L /* Private */
#define MSG_READ 0x00000008L /* Read by addressee */
#define MSG_SENT 0x00000010L /* Sent to remote */
#define MSG_KILLSENT 0x00000020L /* Kill when sent */
#define MSG_ARCHIVESENT 0x00000040L /* Archive when sent */
#define MSG_HOLD 0x00000080L /* Hold for pick-up */
#define MSG_CRASH 0x00000100L /* Crash */
#define MSG_IMMEDIATE 0x00000200L /* Send Msg now, ignore restrictions */
#define MSG_DIRECT 0x00000400L /* Send directly to destination */
#define MSG_GATE 0x00000800L /* Send via gateway */
#define MSG_FILEREQUEST 0x00001000L /* File request */
#define MSG_FILEATTACH 0x00002000L /* File(s) attached to Msg */
#define MSG_TRUNCFILE 0x00004000L /* Truncate file(s) when sent */
#define MSG_KILLFILE 0x00008000L /* Delete file(s) when sent */
#define MSG_RECEIPTREQ 0x00010000L /* Return receipt requested */
#define MSG_CONFIRMREQ 0x00020000L /* Confirmation receipt requested */
#define MSG_ORPHAN 0x00040000L /* Unknown destination */
#define MSG_ENCRYPT 0x00080000L /* Msg text is encrypted */
#define MSG_COMPRESS 0x00100000L /* Msg text is compressed */
#define MSG_ESCAPED 0x00200000L /* Msg text is seven bit ASCII */
#define MSG_FPU 0x00400000L /* Force pickup */
#define MSG_TYPELOCAL 0x00800000L /* Msg is for local use only (not for export) */
#define MSG_TYPEECHO 0x01000000L /* Msg is for conference distribution */
#define MSG_TYPENET 0x02000000L /* Msg is direct network mail */
#define MSG_NODISP 0x20000000L /* Msg may not be displayed to user */
#define MSG_LOCKED 0x40000000L /* Msg is locked, no editing possible */
#define MSG_DELETED 0x80000000L /* Msg is deleted */
/*
** Message header
*/
typedef struct
{
CHAR8 Signature[4]; /* <J><A><M> followed by <NUL> */
UINT16 Revision; /* CURRENTREVLEV */
UINT16 ReservedWord; /* Reserved */
UINT32 SubfieldLen; /* Length of subfields */
UINT32 TimesRead; /* Number of times message read */
UINT32 MsgIdCRC; /* CRC-32 of MSGID line */
UINT32 ReplyCRC; /* CRC-32 of REPLY line */
UINT32 ReplyTo; /* This msg is a reply to.. */
UINT32 Reply1st; /* First reply to this msg */
UINT32 ReplyNext; /* Next msg in reply chain */
UINT32 DateWritten; /* When msg was written */
UINT32 DateReceived; /* When msg was received/read */
UINT32 DateProcessed; /* When msg was processed by packer */
UINT32 MsgNum; /* Message number (1-based) */
UINT32 Attribute; /* Msg attribute, see "Status bits" */
UINT32 Attribute2; /* Reserved for future use */
UINT32 TxtOffset; /* Offset of text in text file */
UINT32 TxtLen; /* Length of message text */
UINT32 PasswordCRC; /* CRC-32 of password to access msg */
UINT32 Cost; /* Cost of message */
}
JAMHDR, _JAMDATA * JAMHDRptr;
/*
** Message header subfield types
*/
#define JAMSFLD_OADDRESS 0
#define JAMSFLD_DADDRESS 1
#define JAMSFLD_SENDERNAME 2
#define JAMSFLD_RECVRNAME 3
#define JAMSFLD_MSGID 4
#define JAMSFLD_REPLYID 5
#define JAMSFLD_SUBJECT 6
#define JAMSFLD_PID 7
#define JAMSFLD_TRACE 8
#define JAMSFLD_ENCLFILE 9
#define JAMSFLD_ENCLFWALIAS 10
#define JAMSFLD_ENCLFREQ 11
#define JAMSFLD_ENCLFILEWC 12
#define JAMSFLD_ENCLINDFILE 13
#define JAMSFLD_EMBINDAT 1000
#define JAMSFLD_FTSKLUDGE 2000
#define JAMSFLD_SEENBY2D 2001
#define JAMSFLD_PATH2D 2002
#define JAMSFLD_FLAGS 2003
#define JAMSFLD_TZUTCINFO 2004
#define JAMSFLD_UNKNOWN 0xffff
/*
** Message header subfield
*/
typedef struct
{
UINT16 LoID; /* Field ID, 0 - 0xffff */
UINT16 HiID; /* Reserved for future use */
UINT32 DatLen; /* Length of buffer that follows */
CHAR8 Buffer[1]; /* DatLen bytes of data */
}
JAMSUBFIELD, _JAMDATA * JAMSUBFIELDptr;
typedef struct
{
UINT16 LoID; /* Field ID, 0 - 0xffff */
UINT16 HiID; /* Reserved for future use */
UINT32 DatLen; /* Length of buffer that follows */
}
JAMBINSUBFIELD, _JAMDATA * JAMBINSUBFIELDptr;
/*
** Message index record
*/
typedef struct
{
UINT32 UserCRC; /* CRC-32 of destination username */
UINT32 HdrOffset; /* Offset of header in .JHR file */
}
JAMIDXREC, _JAMDATA * JAMIDXRECptr;
/*
** Lastread structure, one per user
*/
typedef struct
{
UINT32 UserCRC; /* CRC-32 of user name (lowercase) */
UINT32 UserID; /* Unique UserID */
UINT32 LastReadMsg; /* Last read message number */
UINT32 HighReadMsg; /* Highest read message number */
}
JAMLREAD, _JAMDATA * JAMLREADptr;
#endif /* __JAM_H__ */
#ifdef __cplusplus
}
#endif
/* end of file "jam.h" */