/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef _MIMEHDRS_H_ #define _MIMEHDRS_H_ #include "modlmime.h" /* This file defines the interface to message-header parsing and formatting code, including conversion to HTML. */ /* Other structs defined later in this file. */ /* Creation and destruction. */ extern MimeHeaders* MimeHeaders_new(void); // extern void MimeHeaders_free (MimeHeaders *); // extern MimeHeaders *MimeHeaders_copy (MimeHeaders *); /* Feed this method the raw data from which you would like a header block to be parsed, one line at a time. Feed it a blank line when you're done. Returns negative on allocation-related failure. */ extern int MimeHeaders_parse_line(const char* buffer, int32_t size, MimeHeaders* hdrs); /* Converts a MimeHeaders object into HTML, by writing to the provided output function. */ extern int MimeHeaders_write_headers_html(MimeHeaders* hdrs, MimeDisplayOptions* opt, bool attachment); /* * Writes all headers to the mime emitter. */ extern int MimeHeaders_write_all_headers(MimeHeaders*, MimeDisplayOptions*, bool); /* Writes the headers as text/plain. This writes out a blank line after the headers, unless dont_write_content_type is true, in which case the header-block is not closed off, and none of the Content- headers are written. */ extern int MimeHeaders_write_raw_headers(MimeHeaders* hdrs, MimeDisplayOptions* opt, bool dont_write_content_type); /* Some crypto-related HTML-generated utility routines. * XXX This may not be needed. XXX */ extern char* MimeHeaders_open_crypto_stamp(void); extern char* MimeHeaders_finish_open_crypto_stamp(void); extern char* MimeHeaders_close_crypto_stamp(void); extern char* MimeHeaders_make_crypto_stamp(bool encrypted_p, bool signed_p, bool good_p, bool unverified_p, bool close_parent_stamp_p, const char* stamp_url); /* Does all the heuristic silliness to find the filename in the given headers. */ extern char* MimeHeaders_get_name(MimeHeaders* hdrs, MimeDisplayOptions* opt); extern char* mime_decode_filename(const char* name, const char* charset, MimeDisplayOptions* opt); extern "C" char* MIME_StripContinuations(char* original); /** * Convert this value to a unicode string, based on the charset. */ extern void MimeHeaders_convert_header_value(MimeDisplayOptions* opt, nsCString& value, bool convert_charset_only); #endif /* _MIMEHDRS_H_ */