dmose%mozilla.org 9fc7780ead updating license boilerplate to xPL v1.1
git-svn-id: svn://10.0.0.236/trunk@52523 18797224-902f-48f8-a5cc-f745e15eee43
1999-11-02 06:20:05 +00:00

233 lines
7.5 KiB
C

/*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is the Netscape Messaging Access SDK Version 3.5 code,
* released on or about June 15, 1998. *
* The Initial Developer of the Original Code is Netscape Communications
* Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s): ______________________________________.
*/
/*
* Copyright (c) 1997 and 1998 Netscape Communications Corporation
* (http://home.netscape.com/misc/trademarks.html)
*/
/**** mime_internal.h ****/
#ifndef MIME_INTERNAL_H
#define MIME_INTERNAL_H
#include "nsmail.h"
#ifdef __cplusplus
extern "C" {
#endif
#define MIME_INFO 1
#define MIME_HEADER 2
#define MIME_XHEADER 3
#define MIME_MESSAGE_DATA 4
#define MIME_PARAM 5
#define MIME_BOUNDARY 6
#define MIME_CRLF 7
#define MIME_MESSAGE 20
#define MIME_BASICPART MIME_CONTENT_TEXT
#define MIME_MULTIPART MIME_CONTENT_MULTIPART
#define MIME_MESSAGEPART MIME_CONTENT_MESSAGEPART
#define MIME_PARSE_ALL 30
#define MIME_MP_MAX_PARTS 50 /* Max 50 parts in a multi-part */
#define BUFFER_INCREMENT 1024 /* buffer increases by this when it runs out of space */
/* used by parser to store general message information */
typedef struct mimeInfo
{
int nType; /* mimeInfo type */
int nContentType; /* current message content type */
char *szName; /* name */
char *szValue; /* value */
Vector *pVectorParam; /* extra parameters */
} mimeInfo_t;
typedef struct mime_mp_partInfo
{
mime_content_type nContentType; /* content type of the part */
char *contentID; /* content ID */
void *pThePart; /* pointer to actual part */
} mime_mp_partInfo_t;
typedef struct mime_basicPart_internal
{
nsmail_inputstream_t *pTheDataStream; /* pointer to bodydata STREAM! */
char *szMessageBody; /* message body data */
long nMessageSize; /* size of decoded message body data */
long nRawMessageSize; /* size of raw message body data */
int nStartMessageDataIndex; /* start of message vector index */
int nEndMessageDataIndex; /* end of message vector index */
BOOLEAN bDecodedData; /* TRUE if data has been decoded */
int nDynamicBufferSize; /* dynamic buffer size, only 4 callbacks */
void *pUserObject; /* user object */
} mime_basicPart_internal_t;
typedef struct mime_multiPart_internal
{
int nPartCount;
mime_mp_partInfo_t partInfo [MIME_MP_MAX_PARTS];
char *szBoundary;
void *pUserObject;
BOOLEAN fParsedPart;
} mime_multiPart_internal_t;
typedef struct mime_messagePart_internal
{
struct mime_message *pTheMessage;
void *pUserObject;
} mime_messagePart_internal_t;
typedef struct mime_message_internal
{
mime_basicPart_t *pMimeBasicPart;
mime_multiPart_t *pMimeMultiPart;
mime_messagePart_t *pMimeMessagePart;
/* callback support */
void *pUserObject; /* user object */
struct mimeDataSink *pDataSink; /* user's datasink. NULL if not using dynamic parsing */
} mime_message_internal_t;
/* ---------------- BasicPart ---------------- */
struct mime_basicPart * mime_basicPart_new();
int mime_basicPart_free (struct mime_basicPart *p);
struct mime_basicPart * mime_basicPart_clone (struct mime_basicPart *p);
mime_basicPart_internal_t * mime_basicPart_internal_new();
int mime_basicPart_internal_free (mime_basicPart_internal_t *p);
mime_basicPart_internal_t * mime_basicPart_internal_clone (mime_basicPart_internal_t *p);
/* ---------------- Multi-part ---------------- */
struct mime_multiPart * mime_multiPart_new();
int mime_multiPart_free (struct mime_multiPart *p);
struct mime_multiPart * mime_multiPart_clone (struct mime_multiPart *p);
int mime_multiPart_addPart (struct mime_multiPart *pMultiPart,
void *pMessage,
mime_content_type nContentType,
int *index_assigned );
int mime_multiPart_addPart_clonable( struct mime_multiPart *pMultiPart,
void * pMessage,
mime_content_type nContentType,
BOOLEAN clone,
int * pIndex_assigned);
int mime_multiPart_getPart2 (struct mime_multiPart *pMultiPart,
int index,
char *contentID,
mime_content_type *pContentType,
void **ppTheBodyPart );
mime_multiPart_internal_t * mime_multiPart_internal_new();
int mime_multiPart_internal_free (mime_multiPart_internal_t *p);
mime_multiPart_internal_t * mime_multiPart_internal_clone (mime_multiPart_internal_t *p);
/* ---------------- MessagePart ---------------- */
struct mime_messagePart * mime_messagePart_new();
int mime_messagePart_free (struct mime_messagePart *p);
struct mime_messagePart * mime_messagePart_clone (struct mime_messagePart *p);
BOOLEAN mime_messagePart_isEmpty (struct mime_messagePart *pMessage);
mime_messagePart_internal_t * mime_messagePart_internal_new();
int mime_messagePart_internal_free (mime_messagePart_internal_t *p);
mime_messagePart_internal_t * mime_messagePart_internal_clone (mime_messagePart_internal_t *p);
/* ---------------- Message ---------------- */
mime_message_internal_t * mime_message_internal_new();
int mime_message_internal_free (mime_message_internal_t *p);
mime_message_internal_t * mime_message_internal_clone (mime_message_internal_t *p);
/* common constructor for both regular and dynamic parsing versions
* pass in a NULL parameter means regular parsing
* pass in a proper datasink to turn on dynamic parsing
*/
mime_message_t * mime_message_new (struct mimeDataSink *pDataSink);
int mime_message_free (struct mime_message *p);
struct mime_message * mime_message_clone (struct mime_message *p );
int mime_message_addBasicPart_clonable (struct mime_message * pMessage,
struct mime_basicPart * pBasicPart,
BOOLEAN clone );
int mime_message_addMultiPart_clonable (struct mime_message * pMessage,
struct mime_multiPart * pMultiPart,
BOOLEAN clone );
int mime_message_addMessagePart_clonable (struct mime_message * pMessage,
struct mime_messagePart * pMessagePart,
BOOLEAN clone );
BOOLEAN mime_message_isEmpty (struct mime_message *pMessage);
/* ---------------- Header ---------------- */
/*struct mime_header * mime_header_new (char *szName, char *szValue); */
int mime_header_add (struct mime_header *pStart, char *szName, char *szValue);
int mime_header_apend( mime_header_t *pStart, char *szName, char *szValue );
/*int mime_header_free (struct mime_header *p); */
int mime_header_freeAll (struct mime_header *pStart);
struct mime_header * mime_header_clone (struct mime_header *pMimeHeader);
/* -------------- Generic -------------- */
int mime_getStructType (void *pStruct);
void * mime_clone_any_part (void * pThePart, mime_content_type nContentType);
int mime_translateMimeInfo (char *name, char *value);
int mime_translateMimeEncodingType (char *s);
int mime_translateDispType (char *s, char **ppParam);
struct mimeInfo *mimeInfo_new();
int mimeInfo_free (struct mimeInfo *p);
int mimeInfo_init (struct mimeInfo *p, int nType1, char *szName1);
int mimeInfo_init2 (struct mimeInfo *p, int nType1, char *szName1, char *szValue1);
struct mimeInfo *mimeInfo_clone (struct mimeInfo *p);
#ifdef __cplusplus
}
#endif
#endif /* MIME_INTERNAL_H */