Files
evolution/camel/camel-multipart.h
Not Zed 338344b2e4 Set the preface/postface from the parser into the multipart object.
2000-11-04  Not Zed  <NotZed@HelixCode.com>

        * camel-mime-part-utils.c
        (camel_mime_part_construct_content_from_parser): Set the
        preface/postface from the parser into the multipart object.

        * camel-multipart.c (camel_multipart_set_postface): Function to
        set the postface text on a multipart.
        (camel_multipart_set_preface): Similarly for preface text.

        * camel-mime-parser.c (folder_scan_content): If we scan until a
        boundary, then we do not include the \n that starts the boundary
        line in the content.
        (struct _header_scan_stack): Added a ByteArray to store the
        multipart pre/post-text as we're scanning.
        (folder_pull_part): Free pre/posttext if they are allocated.
        (folder_scan_step): Build into the pre/posttext arrays as we
        encounter data.
        (camel_mime_parser_preface): REturn the multipart preface text, if
        there is any scanned.
        (camel_mime_parser_postface): Likewise for postface text.
        (byte_array_to_string): helper function for above.

        * providers/mbox/camel-mbox-folder.c (mbox_append_message): Change
        the from line to be "\nFrom ..." always, so no need to
        check/append a \n to messages.
        (mbox_append_message): Open the output stream with append mode
        [assuming this is more efficient than seeking to the end]
        And dont prepend \n  on the From line if its the first in the
        mbox.
        (mbox_append_message): Pass the offset of the real start of the
        "From " line when we perform the update (which may != 'seek')

        * camel-mime-filter-charset.c (complete): Removed the terminating
        NUL 'fix'.

        * camel-stream-filter.c (do_read): Added some debug.
        (do_flush): And here.
        (do_write): And here too.
        (do_write): ARGH!!! ARGH!  Ok, so the filter stream was writing a
        different number of bytes than the requester was asking it to
        write (because of filtering, of course!).  So instead of returning
        the true number of written bytes, we'll return what they asked us
        to write - unless there is an error in which case we return -1.

        * camel-mime-utils.c (base64_encode_close): Sigh, forgot to make
        it unsigned.  I think this is actually a gcc bug as (48 >> 2)
        somehow ended up negative, when it obviously should not, even if
        the data load was signed.

svn path=/trunk/; revision=6388
2000-11-04 02:34:46 +00:00

106 lines
3.5 KiB
C

/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
/* camel-multipart.h : class for a multipart */
/*
*
* Author :
* Bertrand Guiheneuf <bertrand@helixcode.com>
*
* Copyright 1999, 2000 Helix Code, Inc. (http://www.helixcode.com)
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* 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, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA
*/
#ifndef CAMEL_MULTIPART_H
#define CAMEL_MULTIPART_H 1
#ifdef __cplusplus
extern "C" {
#pragma }
#endif /* __cplusplus }*/
#include <camel/camel-data-wrapper.h>
#define CAMEL_MULTIPART_TYPE (camel_multipart_get_type ())
#define CAMEL_MULTIPART(obj) (CAMEL_CHECK_CAST((obj), CAMEL_MULTIPART_TYPE, CamelMultipart))
#define CAMEL_MULTIPART_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_MULTIPART_TYPE, CamelMultipartClass))
#define CAMEL_IS_MULTIPART(o) (CAMEL_CHECK_TYPE((o), CAMEL_MULTIPART_TYPE))
struct _CamelMultipart
{
CamelDataWrapper parent_object;
CamelMimePart *parent;
GList *parts;
gchar *boundary;
gchar *preface;
gchar *postface;
};
typedef struct {
CamelDataWrapperClass parent_class;
/* Virtual methods */
void (*add_part) (CamelMultipart *multipart, CamelMimePart *part);
void (*add_part_at) (CamelMultipart *multipart, CamelMimePart *part, guint index);
void (*remove_part) (CamelMultipart *multipart, CamelMimePart *part);
CamelMimePart * (*remove_part_at) (CamelMultipart *multipart, guint index);
CamelMimePart * (*get_part) (CamelMultipart *multipart, guint index);
guint (*get_number) (CamelMultipart *multipart);
void (*set_boundary) (CamelMultipart *multipart, gchar *boundary);
const gchar * (*get_boundary) (CamelMultipart *multipart);
} CamelMultipartClass;
/* Standard Camel function */
CamelType camel_multipart_get_type (void);
/* public methods */
CamelMultipart * camel_multipart_new (void);
void camel_multipart_add_part (CamelMultipart *multipart,
CamelMimePart *part);
void camel_multipart_add_part_at (CamelMultipart *multipart,
CamelMimePart *part,
guint index);
void camel_multipart_remove_part (CamelMultipart *multipart,
CamelMimePart *part);
CamelMimePart * camel_multipart_remove_part_at (CamelMultipart *multipart,
guint index);
CamelMimePart * camel_multipart_get_part (CamelMultipart *multipart,
guint index);
guint camel_multipart_get_number (CamelMultipart *multipart);
void camel_multipart_set_boundary (CamelMultipart *multipart,
gchar *boundary);
const gchar * camel_multipart_get_boundary (CamelMultipart *multipart);
void camel_multipart_set_preface (CamelMultipart *multipart, const char *preface);
void camel_multipart_set_postface (CamelMultipart *multipart, const char *postface);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* CAMEL_MULTIPART_H */