Files
bongo/src/agents/imap/fetch.h
T
pfelt 2b417a9c7d -- remove BongoArray and replace it with GArray
-- StrictCompile antispam and fix all the accompanying warnings
2009-07-18 18:09:53 +00:00

133 lines
3.8 KiB
C

/****************************************************************************
* <Novell-copyright>
* Copyright (c) 2001 Novell, Inc. All Rights Reserved.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of version 2 of the GNU General Public License
* as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, contact Novell, Inc.
*
* To contact Novell about this file by physical or electronic mail, you
* may find current contact information at www.novell.com.
* </Novell-copyright>
****************************************************************************/
#define F_UID (1<<0)
#define F_FLAGS (1<<1)
#define F_ENVELOPE (1<<2)
#define F_XSENDER (1<<3)
#define F_INTERNALDATE (1<<4)
#define F_BODYSTRUCTURE (1<<5)
#define F_RFC822_TEXT (1<<6)
#define F_RFC822_SIZE (1<<7)
#define F_RFC822_HEADER (1<<8)
#define F_RFC822_BOTH (1<<9)
#define F_BODY (1<<10)
#define F_BODY_HEADER (1<<11)
#define F_BODY_HEADER_PARTIAL (1<<12)
#define F_BODY_TEXT (1<<13)
#define F_BODY_TEXT_PARTIAL (1<<14)
#define F_BODY_BOTH (1<<15)
#define F_BODY_BOTH_PARTIAL (1<<16)
#define F_BODY_MIME (1<<17)
#define F_BODY_MIME_PARTIAL (1<<18)
#define F_BODY_HEADER_FIELDS (1<<19)
#define F_BODY_HEADER_FIELDS_NOT (1<<20)
#define F_BODY_PART (1<<21)
#define F_BODY_SEEN (1<<22)
#define F_PARSE_ERROR (1<<30)
#define F_SYSTEM_ERROR (1<<31)
#define F_NEED_HEADER (F_BODY_HEADER | F_BODY_HEADER_PARTIAL | F_RFC822_HEADER | F_RFC822_BOTH | F_ENVELOPE | F_BODY_HEADER_FIELDS | F_BODY_HEADER_FIELDS_NOT | F_BODY_MIME | F_BODY_MIME_PARTIAL)
#define F_NEED_MIME (F_BODY_PART | F_BODYSTRUCTURE | F_BODY)
#define F_ERROR (F_PARSE_ERROR | F_SYSTEM_ERROR)
#define ALLOCATED_FLAGS 1 << 0
#define ALLOCATED_PART_NUMBERS 1 << 1
#define ALLOCATED_FIELD_POINTERS 1 << 2
#define ALLOCATED_FIELDS 1 << 3
typedef struct {
unsigned long start;
unsigned long len;
} PartialRequestStruct;
#define FETCH_FIELD_ALLOC_THRESHOLD 3
typedef struct {
unsigned long count;
unsigned char **field;
unsigned char *fieldEmbedded[FETCH_FIELD_ALLOC_THRESHOLD];
unsigned char *fieldRequest;
BOOL skip;
} HeaderFieldStruct;
typedef long (* FetchResponder)(void *param1, void *param2, void *param3);
#define PART_DEPTH_ALLOC_THRESHOLD 5
typedef struct {
unsigned long depth;
unsigned long *part;
unsigned long partEmbedded[PART_DEPTH_ALLOC_THRESHOLD];
long mimeOffset;
unsigned long mimeLen;
unsigned long partOffset;
unsigned long partLen;
BOOL isMessage;
unsigned long messageHeaderLen;
FetchResponder responder;
} BodyPartRequestStruct;
typedef struct {
unsigned long sequenceNumber;
unsigned char *header;
GArray *mimeInfo;
} MessageDetail;
typedef struct {
FetchResponder responder;
unsigned long hasAllocated;
BOOL isPartial;
PartialRequestStruct partial;
HeaderFieldStruct fieldList;
BodyPartRequestStruct bodyPart;
} FetchFlagStruct;
#define FETCH_FLAG_ALLOC_THRESHOLD 12
typedef struct {
unsigned long flags;
unsigned char *messageSet;
unsigned long flagCount;
FetchFlagStruct *flag;
FetchFlagStruct flagEmbedded[FETCH_FLAG_ALLOC_THRESHOLD];
unsigned long hasAllocated;
MessageInformation *message;
MessageDetail messageDetail;
} FetchStruct;
typedef unsigned long (* FetchFlagParser)(unsigned char **ptr, FetchFlagStruct *flag);
typedef struct {
unsigned char *name;
unsigned long nameLen;
unsigned long value;
FetchFlagParser parser;
FetchResponder responder;
} FetchFlag;