Files
evolution/camel/camel-mime-part.h
4 450e955e76 If the type is encoded, get the fallback charset from the message
2001-09-24    <NotZed@Ximian.com>

        * camel-filter-search.c (check_header): If the type is encoded,
        get the fallback charset from the message content-type.

        * camel-mime-part-utils.c (check_html_charset): Dont check for
        charset==null before calling charset_to_iconv.
        (simple_data_wrapper_construct_from_parser): "

        * camel-mime-message.c (process_header): Try use content-type
        charset param as the fallback charset.

        * camel-charset-map.c (camel_charset_to_iconv): Handle name ==
        NULL, return NULL.

        * camel-folder-summary.c (camel_folder_summary_format_address):
        (camel_folder_summary_format_string): Made private again, removed
        #warning about it.  Renamed to s/camel_folder//.
        (summary_format_string): Take default charset param.
        (camel_message_info_new_from_header, message_info_new): Decode
        content-type field to get the charset parameter to use as the
        default charset for decoding strings.

        * camel-search-private.c (camel_search_header_match): Pass NULL as
        the charset, the locale charset is always tried.
        (camel_search_header_match): Supply a default_charset parameter to
        be used with TYPE_ENCODED params.

        * camel-mime-utils.c
        (header_param): get rid of the g_strcasecmp crap.
        (header_set_param): Same here.
        (header_decode_param_list): And here.
        (header_decode_text): Totally rewritten.  30% of its size.  If the
        word is not rfc2047 encoded, always try default_charset if
        supplied, if that fails, try locale charset if it exists, if that
        fails then assume latin1/7 bit ascii.
        (append_8bit): Changed to return FALSE if we can't convert for
        whatever reason, and dont append anything.

        * camel-mime-part.h (struct _CamelMimePart): Move content_type and
        headers out of the 'private' section.

        * camel-mime-part.c (get_headers): Dont do any conversion on the
        header.
        (process_header): Get the content-type charset as the fallback
        charset for decode_string.
        (construct_from_parser): IF we have a content-type header, process
        it before doing anything else, so we have access to a fallback
        charset for invalid headers.

svn path=/trunk/; revision=13096
2001-09-24 19:31:07 +00:00

134 lines
5.0 KiB
C

/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8; fill-column: 160 -*- */
/* camel-mime-part.h : class for a mime part */
/*
*
* Authors: Bertrand Guiheneuf <bertrand@helixcode.com>
* Michael Zucchi <notzed@ximian.com>
*
* Copyright 1999, 2000 Ximian, Inc. (www.ximian.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_MIME_PART_H
#define CAMEL_MIME_PART_H 1
#ifdef __cplusplus
extern "C" {
#pragma }
#endif /* __cplusplus }*/
#include <camel/camel-medium.h>
#include <camel/camel-mime-utils.h>
#include <camel/camel-mime-parser.h>
#define CAMEL_MIME_PART_TYPE (camel_mime_part_get_type ())
#define CAMEL_MIME_PART(obj) (CAMEL_CHECK_CAST((obj), CAMEL_MIME_PART_TYPE, CamelMimePart))
#define CAMEL_MIME_PART_CLASS(k) (CAMEL_CHECK_CLASS_CAST ((k), CAMEL_MIME_PART_TYPE, CamelMimePartClass))
#define CAMEL_IS_MIME_PART(o) (CAMEL_CHECK_TYPE((o), CAMEL_MIME_PART_TYPE))
/* note, if you change this, make sure you change the 'encodings' array in camel-mime-part.c */
enum _CamelMimePartEncodingType {
CAMEL_MIME_PART_ENCODING_DEFAULT,
CAMEL_MIME_PART_ENCODING_7BIT,
CAMEL_MIME_PART_ENCODING_8BIT,
CAMEL_MIME_PART_ENCODING_BASE64,
CAMEL_MIME_PART_ENCODING_QUOTEDPRINTABLE,
CAMEL_MIME_PART_ENCODING_BINARY,
CAMEL_MIME_PART_NUM_ENCODINGS
};
typedef enum _CamelMimePartEncodingType CamelMimePartEncodingType;
/* Do not change these values directly, you would regret it one day */
struct _CamelMimePart
{
CamelMedium parent_object;
CamelContentType *content_type;
struct _header_raw *headers; /* mime headers */
/* All fields here are -** PRIVATE **- */
char *description;
CamelMimeDisposition *disposition;
char *content_id;
char *content_MD5;
char *content_location;
GList *content_languages;
CamelMimePartEncodingType encoding;
};
typedef struct _CamelMimePartClass {
CamelMediumClass parent_class;
/* Virtual methods */
int (*construct_from_parser) (CamelMimePart *, CamelMimeParser *);
} CamelMimePartClass;
/* Standard Camel function */
CamelType camel_mime_part_get_type (void);
/* public methods */
CamelMimePart * camel_mime_part_new (void);
void camel_mime_part_set_description (CamelMimePart *mime_part, const gchar *description);
const gchar *camel_mime_part_get_description (CamelMimePart *mime_part);
void camel_mime_part_set_disposition (CamelMimePart *mime_part, const gchar *disposition);
const gchar *camel_mime_part_get_disposition (CamelMimePart *mime_part);
void camel_mime_part_set_filename (CamelMimePart *mime_part, const gchar *filename);
const gchar *camel_mime_part_get_filename (CamelMimePart *mime_part);
void camel_mime_part_set_content_id (CamelMimePart *mime_part, const char *contentid);
const gchar *camel_mime_part_get_content_id (CamelMimePart *mime_part);
void camel_mime_part_set_content_MD5 (CamelMimePart *mime_part, const char *);
const gchar *camel_mime_part_get_content_MD5 (CamelMimePart *mime_part);
void camel_mime_part_set_content_location (CamelMimePart *mime_part, const char *);
const gchar *camel_mime_part_get_content_location (CamelMimePart *mime_part);
void camel_mime_part_set_encoding (CamelMimePart *mime_part, CamelMimePartEncodingType type);
CamelMimePartEncodingType camel_mime_part_get_encoding (CamelMimePart *mime_part);
void camel_mime_part_set_content_languages (CamelMimePart *mime_part, GList *content_languages);
const GList *camel_mime_part_get_content_languages (CamelMimePart *mime_part);
/* FIXME: what about content-type parameters? what about major/minor parts? */
void camel_mime_part_set_content_type (CamelMimePart *mime_part, gchar *content_type);
CamelContentType *camel_mime_part_get_content_type (CamelMimePart *mime_part);
const gchar * camel_mime_part_encoding_to_string (CamelMimePartEncodingType encoding);
CamelMimePartEncodingType camel_mime_part_encoding_from_string (const gchar *string);
/* construction */
int camel_mime_part_construct_from_parser (CamelMimePart *, CamelMimeParser *);
/* utility functions */
void camel_mime_part_set_content (CamelMimePart *camel_mime_part,
const char *content, int length, const char *type);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* CAMEL_MIME_PART_H */