modules/mm/mm.h

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following functions.
  1. MM_header

   1 /***************************************
   2   $Revision: 2.17 $
   3 
   4   mm - MIME Parser module. Functions to parse a mail message,
   5   find if it is MIME-encapsulated, and return the parts of
   6   the message which are supported by the UP module.
   7 
   8   Status: COMPLETE, NOT REVUED, TESTED
   9 
  10   Design and implementation by: daniele@ripe.net
  11 
  12   ******************/ /******************
  13   Copyright (c) 2000,2001,2002                    RIPE NCC
  14  
  15   All Rights Reserved
  16   
  17   Permission to use, copy, modify, and distribute this software and its
  18   documentation for any purpose and without fee is hereby granted,
  19   provided that the above copyright notice appear in all copies and that
  20   both that copyright notice and this permission notice appear in
  21   supporting documentation, and that the name of the author not be
  22   used in advertising or publicity pertaining to distribution of the
  23   software without specific, written prior permission.
  24   
  25   THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
  26   ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS; IN NO EVENT SHALL
  27   AUTHOR BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
  28   DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
  29   AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  30   OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  31   ***************************************/
  32 
  33 #ifndef _MM_H
  34 #define _MM_H
  35 
  36 
  37 /* Included headers: */
  38 
  39 /* These come from c-client */
  40 #include "mail.h"
  41 #include "osdep.h"
  42 /*#include "misc.h"*/
  43 /*#include "rfc822.h"*/
  44 /*#include "smtp.h"*/
  45 /*#include "nntp.h"*/
  46 
  47 /* Other RIP headers */
  48 #include "gpg.h"
  49 #include "mail_parser.h"
  50 #include "memwrap.h"
  51 
  52 /* GLib */
  53 #include "glib.h"
  54 
  55 
  56 
  57 /* String sizes */
  58 #define STR_S   63
  59 #define STR_M   255
  60 #define STR_L   1023
  61 #define STR_XL  4095
  62 #define STR_XXL 16383
  63 
  64 #define LINELENGTH 80
  65 
  66 /* Set this as the max buffer size when you want to
  67    avoid buffer overflows */
  68 #define MAXBUFSIZE 102400
  69 
  70 /* Local #defines */
  71 
  72 #define NO_DEBUG 0
  73 #define DO_DEBUG 1
  74 #define DEFAULT_DEBUG NO_DEBUG
  75 #define TEMPDIR "/tmp"
  76 #define FILENAMELEN STR_L
  77 #define GLOBALPREFIX "mime"
  78 #define MAXSUPPTYPES 50
  79 
  80 
  81 /* Structure definition */
  82 
  83 
  84 
  85 
  86 typedef struct MM_mail_header {
  87   char *from;
  88   char *subject;
  89   char *date;
  90   char *message_id;
  91   char *reply_to;
  92   char *cc;
  93   char *content_type;
  94 } MM_header;
     /* [<][>][^][v][top][bottom][index][help] */
  95 
  96 
  97 /* Needed for dbupdate, written in C++ */
  98 
  99 #ifdef __cplusplus
 100 extern "C" {
 101 #endif
 102 
 103 
 104 /* Function definition */
 105 
 106 /* API functions */
 107 int MM_store (char *source_file, char *destination_file,
 108               long custom_debug, int networkupdate);
 109 int MM_get_msg_headers(const char *mail_file, EP_Mail_Descr *mail_descr, long mesgno, long custom_debug);
 110 #define MM_get_headers(mail_file, mail_descr, custom_debug) MM_get_msg_headers(mail_file, mail_descr, (long) 1, custom_debug)
 111 int MM_extract_mime (const char *sourcefile, char *pfx, EP_mail_node *mailnode, long custom_debug);
 112 
 113 /* Internal support functions */
 114 void status (MAILSTREAM *stream);
 115 Mail_Header_Field *get_mail_hdr_field (MAILSTREAM *stream, long mesgno, STRINGLIST *cur, const char *hdr_title);
 116 char *get_header_line (MAILSTREAM *stream, long mesgno, STRINGLIST *cur, const char *hdr_title);
 117 void write_file (char *filename, char *text, size_t text_size);
 118 void read_file (const char *filename);
 119 void put_in_file (char *fileprefix, char *extension, char *text, size_t text_size);
 120 int do_regex_test(const char *pattern, char *string);
 121 t_MM_type is_supported_MIMEtype (BODY *body);
 122 void dispatch_to_driver(MAILSTREAM *stream, BODY *body, char *pfx, EP_mail_node *mailnode);
 123 
 124 
 125 /* The drivers */
 126 void parse_text_plain(MAILSTREAM *stream, BODY *body, char *pfx, EP_mail_node *mailnode);
 127 void parse_multipart_alternative (MAILSTREAM *stream, BODY *body, char *pfx, EP_mail_node *mailnode);
 128 void parse_multipart_signed (MAILSTREAM *stream, BODY *body, char *pfx, EP_mail_node *mailnode);
 129 void parse_message_rfc822 (MAILSTREAM *stream, BODY *body, char *pfx, EP_mail_node *mailnode);
 130 #define parse_application_pgp(stream, body, part_number, mailnode) parse_text_plain(stream, body, part_number, mailnode)
 131 #define parse_unknown_unknown(stream, body, part_number, mailnode) parse_text_plain(stream, body, part_number, mailnode) /* We give a chance to the unsupported MIMEtypes to contain plain text updates... */
 132 #define parse_multipart_mixed(stream, body, part_number, mailnode) parse_multipart_alternative(stream, body, part_number, mailnode)
 133 #define parse_multipart_digest(stream, body, part_number, mailnode) parse_multipart_alternative(stream, body, part_number, mailnode)
 134 
 135 /* Needed for dbupdate, written in C++ */
 136 
 137 #ifdef __cplusplus
 138 }
 139 #endif
 140 
 141 
 142 #endif /* _MM_H */

/* [<][>][^][v][top][bottom][index][help] */