/* * Copyright (C) 2000 Helix Code Inc. * * Authors: Michael Zucchi * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Library 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 Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _CAMEL_MIME_PARSER_H #define _CAMEL_MIME_PARSER_H #include #include #include #include #define CAMEL_MIME_PARSER(obj) CAMEL_CHECK_CAST (obj, camel_mime_parser_get_type (), CamelMimeParser) #define CAMEL_MIME_PARSER_CLASS(klass) CAMEL_CHECK_CLASS_CAST (klass, camel_mime_parser_get_type (), CamelMimeParserClass) #define CAMEL_IS_MIME_PARSER(obj) CAMEL_CHECK_TYPE (obj, camel_mime_parser_get_type ()) typedef struct _CamelMimeParserClass CamelMimeParserClass; /* NOTE: if you add more states, you may need to bump the start of the END tags to 16 or 32, etc - so they are the same as the matching start tag, with a bit difference */ enum _header_state { HSCAN_INITIAL, HSCAN_PRE_FROM, /* data before a 'From' line */ HSCAN_FROM, /* got 'From' line */ HSCAN_HEADER, /* toplevel header */ HSCAN_BODY, /* scanning body of message */ HSCAN_MULTIPART, /* got multipart header */ HSCAN_MESSAGE, /* rfc822 message */ HSCAN_PART, /* part of a multipart */ HSCAN_END = 8, /* bit mask for 'end' flags */ HSCAN_EOF = 8, /* end of file */ HSCAN_PRE_FROM_END, /* pre from end */ HSCAN_FROM_END, /* end of whole from bracket */ HSCAN_HEADER_END, /* dummy value */ HSCAN_BODY_END, /* end of message */ HSCAN_MULTIPART_END, /* end of multipart */ HSCAN_MESSAGE_END, /* end of message */ }; struct _CamelMimeParser { CamelObject parent; struct _CamelMimeParserPrivate *priv; }; struct _CamelMimeParserClass { CamelObjectClass parent_class; void (*message)(CamelMimeParser *, void *headers); void (*part)(CamelMimeParser *); void (*content)(CamelMimeParser *); }; guint camel_mime_parser_get_type (void); CamelMimeParser *camel_mime_parser_new (void); /* using an fd will be a little faster, but not much (over a simple stream) */ int camel_mime_parser_init_with_fd(CamelMimeParser *, int fd); int camel_mime_parser_init_with_stream(CamelMimeParser *m, CamelStream *stream); /* get the stream or fd back of the parser */ CamelStream *camel_mime_parser_stream(CamelMimeParser *m); int camel_mime_parser_fd(CamelMimeParser *m); /* scan 'From' separators? */ void camel_mime_parser_scan_from(CamelMimeParser *, int); /* Do we want to know about the pre-from data? */ void camel_mime_parser_scan_pre_from(CamelMimeParser *, int); /* what headers to save, MUST include ^Content-Type: */ int camel_mime_parser_set_header_regex(CamelMimeParser *m, char *matchstr); /* normal interface */ enum _header_state camel_mime_parser_step(CamelMimeParser *, char **, int *); void camel_mime_parser_unstep(CamelMimeParser *); void camel_mime_parser_drop_step(CamelMimeParser *m); enum _header_state camel_mime_parser_state(CamelMimeParser *); /* read through the parser */ int camel_mime_parser_read(CamelMimeParser *m, const char **databuffer, int len); /* get content type for the current part/header */ struct _header_content_type *camel_mime_parser_content_type(CamelMimeParser *); /* get/change raw header by name */ const char *camel_mime_parser_header(CamelMimeParser *, const char *, int *offset); /* get all raw headers. READ ONLY! */ struct _header_raw *camel_mime_parser_headers_raw(CamelMimeParser *); /* get multipart pre/postface */ const char *camel_mime_parser_preface(CamelMimeParser *m); const char *camel_mime_parser_postface(CamelMimeParser *m); /* return the from line content */ const char *camel_mime_parser_from_line(CamelMimeParser *m); /* add a processing filter for body contents */ int camel_mime_parser_filter_add(CamelMimeParser *, CamelMimeFilter *); void camel_mime_parser_filter_remove(CamelMimeParser *, int); /* these should be used with caution, because the state will not track the seeked position */ /* FIXME: something to bootstrap the state? */ off_t camel_mime_parser_tell(CamelMimeParser *); off_t camel_mime_parser_seek(CamelMimeParser *, off_t, int); off_t camel_mime_parser_tell_start_headers(CamelMimeParser *); off_t camel_mime_parser_tell_start_from(CamelMimeParser *); #endif /* ! _CAMEL_MIME_PARSER_H */ om/freebsd/freebsd-ports-gnome)
aboutsummaryrefslogtreecommitdiffstats
Commit message (Expand)AuthorAgeFilesLines
* - Add LDFLAGS to CONFIGURE_ENV and MAKE_ENV (as it was done with LDFLAGS)amdmi32011-09-241-1/+1
* - Chase the libgcrypt shared lib versionswills2011-07-031-2/+2
* Include a patchset that solves a problem with phase2 re-keying. That is, whenehaupt2011-02-263-2/+73
* Chase security/libgcrypt shlib bump.wxs2010-07-271-2/+2
* Fix rc.d script return valueehaupt2010-03-312-3/+4
* Begin the process of deprecating sysutils/rc_subr bydougb2010-03-271-1/+1
* Mark MAKE_JOBS_SAFEehaupt2009-03-271-0/+1
* Unbreak security/vpnc and graphics/pecomato. Those ports were fixed by 133053,ehaupt2009-03-261-4/+0
* Mark BROKEN on ${OSVERSION} >= 800067 && ${ARCH} == "amd64"ehaupt2009-03-261-0/+4
* - Fix build after addition of getdelim() and strndup()miwi2009-03-251-0/+13
* - Bump PORTREVISION due to share library version bump in security/libgcryptrafan2009-01-061-1/+2
* Update to 0.5.3 (files forgotten in previous commit)ehaupt2008-11-241-10/+7
* Update to 0.5.3ehaupt2008-11-243-16/+14
* Use kldstat(8) to check for the availability of the if_tun module in thesobomax2008-09-262-3/+22
* - Remove duplicates from MAKE_ENV after inclusion of CC and CXX in default MA...pav2008-07-251-2/+1
* Bump portrevision due to upgrade of devel/gettext.edwin2008-06-061-1/+1
* Use MASTER_SITE_CRITICALehaupt2008-03-281-2/+1
* Follow the change of the pid file in the rc script.ehaupt2008-03-232-4/+5
* Fix vpnc-disconnect scriptehaupt2008-03-222-11/+1
* Some Cisco Concentrator refuse connection if the presentation version stringehaupt2008-03-072-13/+46
* - Update RC scriptehaupt2008-03-062-12/+11
* The upgrade of ports/security/vpnc to version 0.5.1 introduced some glitchesehaupt2008-03-013-4/+14
* Chase libgcrypt library versionarved2008-02-291-1/+2
* - Update to 0.5.1ehaupt2008-02-286-51/+88
* Reset delta@lackas.net due to maintainer-timeouts and no response to email.linimon2007-10-121-1/+1
* - In managed mode the script does not return the proper value due to $?rafan2007-09-232-5/+8
* - Make port fully respect CFLAGSehaupt2007-08-072-6/+7
* - Respect %%PREFIX%%miwi2007-03-212-0/+10
* - Update to 0.4.0miwi2007-03-1610-378/+45
* - Improve the style and behaviour of the rc.d scriptgabor2007-03-062-53/+60
* - Update rc.d scriptgabor2007-02-273-35/+99
* - Add NAT keepalive capability as per RFC 3947miwi2006-07-302-1/+49
* Remove USE_REINPLACE from all categories starting with Sedwin2006-05-131-1/+0
* SHA256ifyedwin2006-01-24