diff --git a/Makefile b/Makefile index c09ccb64..67f822ed 100644 --- a/Makefile +++ b/Makefile @@ -2,7 +2,7 @@ PROGRAM = geary BUILD_ROOT = 1 VALAC := valac -VALAFLAGS := -g --save-temps --enable-checking --fatal-warnings +VALAFLAGS := -g --save-temps --enable-checking --fatal-warnings --vapidir=vapi APPS := geary console syntax lsmbox readmail watchmbox @@ -49,7 +49,8 @@ CLIENT_SRC := \ src/client/ui/MainWindow.vala \ src/client/ui/MessageListView.vala \ src/client/ui/MessageListStore.vala \ - src/client/util/Intl.vala + src/client/util/Intl.vala \ + src/client/util/Date.vala CONSOLE_SRC := \ src/console/main.vala @@ -73,7 +74,11 @@ EXTERNAL_PKGS := \ gee-1.0 \ gtk+-2.0 \ unique-1.0 \ - posix + posix \ + gmime-2.4 + +VAPI_FILES := \ + vapi/gmime-2.4.vapi .PHONY: all all: $(APPS) @@ -83,7 +88,7 @@ clean: rm -f $(ALL_SRC:.vala=.c) rm -f $(APPS) -geary: $(ENGINE_SRC) $(CLIENT_SRC) Makefile +geary: $(ENGINE_SRC) $(CLIENT_SRC) Makefile $(VAPI_FILES) $(VALAC) $(VALAFLAGS) $(foreach pkg,$(EXTERNAL_PKGS),--pkg=$(pkg)) \ $(ENGINE_SRC) $(CLIENT_SRC) \ -o $@ diff --git a/src/client/ui/MessageListStore.vala b/src/client/ui/MessageListStore.vala index 4c3033e6..fafd89af 100644 --- a/src/client/ui/MessageListStore.vala +++ b/src/client/ui/MessageListStore.vala @@ -10,22 +10,50 @@ public class MessageListStore : Gtk.TreeStore { FROM, SUBJECT, N_COLUMNS; + + public static Column[] all() { + return { + DATE, + FROM, + SUBJECT + }; + } + + public static Type[] get_types() { + return { + typeof (string), // DATE + typeof (string), // FROM + typeof (string) // SUBJECT + }; + } + + public string to_string() { + switch (this) { + case DATE: + return _("Date"); + + case FROM: + return _("From"); + + case SUBJECT: + return _("Subject"); + + default: + assert_not_reached(); + } + } } public MessageListStore() { - set_column_types({ - typeof (string), // DATE - typeof (string), // FROM - typeof (string) // SUBJECT - }); + set_column_types(Column.get_types()); } public void append_message(Geary.Message msg) { Gtk.TreeIter iter; append(out iter, null); - set(iter, Column.DATE, msg.sent.value, Column.FROM, msg.from.get_at(0).get_full_address(), - Column.SUBJECT, msg.subject.value); + set(iter, Column.DATE, Date.pretty_print(msg.sent.value), Column.FROM, + msg.from.get_at(0).get_short_address(), Column.SUBJECT, msg.subject.value); } } diff --git a/src/client/ui/MessageListView.vala b/src/client/ui/MessageListView.vala index 4e4f9343..f498f83f 100644 --- a/src/client/ui/MessageListView.vala +++ b/src/client/ui/MessageListView.vala @@ -8,15 +8,19 @@ public class MessageListView : Gtk.TreeView { public MessageListView(MessageListStore store) { set_model(store); - append_column(create_text_column(MessageListStore.Column.DATE, _("Date"))); - append_column(create_text_column(MessageListStore.Column.FROM, _("From"))); - append_column(create_text_column(MessageListStore.Column.SUBJECT, _("Subject"))); + Gtk.CellRendererText date_renderer = new Gtk.CellRendererText(); + date_renderer.xalign = 1.0f; + append_column(create_column(MessageListStore.Column.FROM, new Gtk.CellRendererText(), + "text", 200)); + append_column(create_column(MessageListStore.Column.SUBJECT, new Gtk.CellRendererText(), + "text", 400)); + append_column(create_column(MessageListStore.Column.DATE, date_renderer, "text", 100)); } - private Gtk.TreeViewColumn create_text_column(int column, string name, int width = 0, - Gtk.CellRendererText? renderer = null) { - Gtk.TreeViewColumn view_column = new Gtk.TreeViewColumn.with_attributes(name, - (renderer != null) ? renderer : new Gtk.CellRendererText(), "text", column); + private static Gtk.TreeViewColumn create_column(MessageListStore.Column column, + Gtk.CellRenderer renderer, string attr, int width = 0) { + Gtk.TreeViewColumn view_column = new Gtk.TreeViewColumn.with_attributes(column.to_string(), + renderer, attr, column); view_column.set_resizable(true); if (width != 0) { diff --git a/src/client/util/Date.vala b/src/client/util/Date.vala new file mode 100644 index 00000000..1f74e1e4 --- /dev/null +++ b/src/client/util/Date.vala @@ -0,0 +1,37 @@ +/* Copyright 2011 Yorba Foundation + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later). See the COPYING file in this distribution. + */ + +namespace Date { + +public bool equals(DateTime a, DateTime b) { + int year1, month1, day1; + a.get_ymd(out year1, out month1, out day1); + + int year2, month2, day2; + b.get_ymd(out year2, out month2, out day2); + + return year1 == year2 && month1 == month2 && day1 == day2; +} + +public string pretty_print(DateTime datetime) { + DateTime now = new DateTime.now_local(); + string fmt; + if (equals(datetime, now)) { + // 8:31 am + fmt = "%l:%M %P"; + } else if (datetime.get_year() == now.get_year()) { + // Nov 8 + fmt = "%b %e"; + } else { + // 02/04/10 + fmt = "%m/%e/%y"; + } + + return datetime.format(fmt); +} + +} + diff --git a/src/engine/imap/MessageData.vala b/src/engine/imap/MessageData.vala index 2f5bc4d5..e792b326 100644 --- a/src/engine/imap/MessageData.vala +++ b/src/engine/imap/MessageData.vala @@ -101,8 +101,8 @@ public class Geary.Imap.Flags : Geary.Common.MessageData, Geary.Imap.MessageData } public class Geary.Imap.InternalDate : Geary.RFC822.Date, Geary.Imap.MessageData { - public InternalDate(string value) { - base (value); + public InternalDate(string iso8601) throws ImapError { + base (iso8601); } } diff --git a/src/engine/imap/decoders/FetchDataDecoder.vala b/src/engine/imap/decoders/FetchDataDecoder.vala index a5676576..7c856886 100644 --- a/src/engine/imap/decoders/FetchDataDecoder.vala +++ b/src/engine/imap/decoders/FetchDataDecoder.vala @@ -117,7 +117,8 @@ public class Geary.Imap.EnvelopeDecoder : Geary.Imap.FetchDataDecoder { StringParameter? in_reply_to = listp.get_as_nullable_string(8); StringParameter message_id = listp.get_as_string(9); - return new Envelope(new Geary.RFC822.Date(sent.value), new Geary.RFC822.Subject(subject.value), + return new Envelope(new Geary.RFC822.Date(sent.value), + new Geary.RFC822.Subject(subject.value), parse_addresses(from), parse_addresses(sender), parse_addresses(reply_to), (to != null) ? parse_addresses(to) : null, (cc != null) ? parse_addresses(cc) : null, diff --git a/src/engine/imap/decoders/FetchResults.vala b/src/engine/imap/decoders/FetchResults.vala index f3c6fdfc..682807ce 100644 --- a/src/engine/imap/decoders/FetchResults.vala +++ b/src/engine/imap/decoders/FetchResults.vala @@ -62,6 +62,8 @@ public class Geary.Imap.FetchResults { array += decode_data(data); } catch (ImapError ierr) { // drop bad data on the ground + debug("Dropping FETCH data \"%s\": %s", data.to_string(), ierr.message); + continue; } } diff --git a/src/engine/rfc822/MailboxAddress.vala b/src/engine/rfc822/MailboxAddress.vala index f5c80391..07af5d98 100644 --- a/src/engine/rfc822/MailboxAddress.vala +++ b/src/engine/rfc822/MailboxAddress.vala @@ -28,6 +28,14 @@ public class Geary.RFC822.MailboxAddress { return String.is_empty(name) ? "<%s>".printf(address) : "%s <%s>".printf(name, address); } + /** + * Returns a human-readable pretty address, showing only the name, but if unavailable, the + * mailbox name (that is, the account name without the domain). + */ + public string get_short_address() { + return name ?? mailbox; + } + public string to_string() { return get_full_address(); } diff --git a/src/engine/rfc822/MessageData.vala b/src/engine/rfc822/MessageData.vala index c028ae8e..689a3f22 100644 --- a/src/engine/rfc822/MessageData.vala +++ b/src/engine/rfc822/MessageData.vala @@ -19,9 +19,21 @@ public class Geary.RFC822.MessageID : Geary.Common.StringMessageData, Geary.RFC8 } } -public class Geary.RFC822.Date : Geary.Common.StringMessageData, Geary.RFC822.MessageData { - public Date(string value) { - base (value); +public class Geary.RFC822.Date : Geary.RFC822.MessageData, Geary.Common.MessageData { + public string original { get; private set; } + public DateTime value { get; private set; } + + public Date(string iso8601) throws ImapError { + time_t tm = GMime.utils_header_decode_date(iso8601, null); + if (tm == 0) + throw new ImapError.PARSE_ERROR("Unable to parse \"%s\": not ISO-8601 date", iso8601); + + value = new DateTime.from_unix_utc(tm); + original = iso8601; + } + + public override string to_string() { + return original; } } diff --git a/vapi/Makefile b/vapi/Makefile new file mode 100644 index 00000000..8c9caa11 --- /dev/null +++ b/vapi/Makefile @@ -0,0 +1,21 @@ +# NOTE: The dependencies in this file require vapigen and vala-gen-introspect to be installed, +# which are not default in a standard Vala installation. + +GMIME_FILES := \ + gmime-2.4/gmime-2.4.defines \ + gmime-2.4/gmime-2.4.files \ + gmime-2.4/gmime-2.4.metadata \ + gmime-2.4/gmime-2.4.namespace + +all: gmime-2.4.vapi + +.PHONY: clean +clean: + rm gmime-2.4.vapi gmime-2.4/gmime-2.4.gi + +gmime-2.4/gmime-2.4.gi: $(GMIME_FILES) + vala-gen-introspect gmime-2.4 gmime-2.4 + +gmime-2.4.vapi: gmime-2.4/gmime-2.4.gi + vapigen --pkg=glib-2.0 --pkg=gio-2.0 --library gmime-2.4 gmime-2.4/gmime-2.4.gi + diff --git a/vapi/gmime-2.4.vapi b/vapi/gmime-2.4.vapi new file mode 100644 index 00000000..80f9254a --- /dev/null +++ b/vapi/gmime-2.4.vapi @@ -0,0 +1,1014 @@ +/* gmime-2.4.vapi generated by vapigen, do not modify. */ + +[CCode (cprefix = "GMime", lower_case_cprefix = "g_mime_")] +namespace GMime { + [Compact] + [CCode (cheader_filename = "gmime/gmime.h")] + public class Charset { + public uint level; + public uint mask; + public static unowned string best (string inbuf, size_t inlen); + public unowned string best_name (); + public bool can_encode (string charset, string text, size_t len); + public static unowned string canon_name (string charset); + public static unowned string iconv_name (string charset); + public void init (); + public static unowned string iso_to_windows (string isocharset); + public static unowned string language (string charset); + public static unowned string locale_name (); + public static void map_init (); + public static void map_shutdown (); + public static unowned string name (string charset); + public void step (string inbuf, size_t inlen); + } + [CCode (cheader_filename = "gmime/gmime.h")] + public class CipherContext : GLib.Object { + public weak string encrypt_protocol; + public weak string key_protocol; + public weak GMime.Session session; + public weak string sign_protocol; + [CCode (has_construct_function = false)] + protected CipherContext (); + public virtual unowned GMime.SignatureValidity decrypt (GMime.Stream istream, GMime.Stream ostream) throws GLib.Error; + public virtual int encrypt (bool sign, string userid, GLib.GenericArray recipients, GMime.Stream istream, GMime.Stream ostream) throws GLib.Error; + public virtual int export_keys (GLib.GenericArray keys, GMime.Stream ostream) throws GLib.Error; + public virtual GMime.CipherHash hash_id (string hash); + public virtual unowned string hash_name (GMime.CipherHash hash); + public virtual int import_keys (GMime.Stream istream) throws GLib.Error; + public virtual int sign (string userid, GMime.CipherHash hash, GMime.Stream istream, GMime.Stream ostream) throws GLib.Error; + public virtual unowned GMime.SignatureValidity verify (GMime.CipherHash hash, GMime.Stream istream, GMime.Stream sigstream) throws GLib.Error; + } + [CCode (cheader_filename = "gmime/gmime.h")] + public class ContentDisposition : GLib.Object { + public weak string disposition; + public weak GLib.HashTable param_hash; + public weak GMime.Param @params; + [CCode (has_construct_function = false)] + public ContentDisposition (); + [CCode (has_construct_function = false)] + public ContentDisposition.from_string (string str); + public unowned string get_disposition (); + public unowned string get_parameter (string attribute); + public unowned GMime.Param get_params (); + public void set_disposition (string value); + public void set_parameter (string attribute, string value); + public void set_params (GMime.Param @params); + public unowned string to_string (bool fold); + public virtual signal void changed (); + } + [CCode (cheader_filename = "gmime/gmime.h")] + public class ContentType : GLib.Object { + public weak GLib.HashTable param_hash; + public weak GMime.Param @params; + public weak string subtype; + public weak string type; + [CCode (has_construct_function = false)] + public ContentType (string type, string subtype); + [CCode (has_construct_function = false)] + public ContentType.from_string (string str); + public unowned string get_media_subtype (); + public unowned string get_media_type (); + public unowned string get_parameter (string attribute); + public unowned GMime.Param get_params (); + public bool is_type (string type, string subtype); + public void set_media_subtype (string subtype); + public void set_media_type (string type); + public void set_parameter (string attribute, string value); + public void set_params (GMime.Param @params); + public unowned string to_string (); + public virtual signal void changed (); + } + [CCode (cheader_filename = "gmime/gmime.h")] + public class DataWrapper : GLib.Object { + public GMime.ContentEncoding encoding; + public weak GMime.Stream stream; + [CCode (has_construct_function = false)] + public DataWrapper (); + public GMime.ContentEncoding get_encoding (); + public unowned GMime.Stream get_stream (); + public void set_encoding (GMime.ContentEncoding encoding); + public void set_stream (GMime.Stream stream); + [CCode (has_construct_function = false)] + public DataWrapper.with_stream (GMime.Stream stream, GMime.ContentEncoding encoding); + public virtual ssize_t write_to_stream (GMime.Stream stream); + } + [Compact] + [CCode (cheader_filename = "gmime/gmime.h")] + public class Encoding { + public bool encode; + public GMime.ContentEncoding encoding; + public uint32 save; + public int state; + [CCode (array_length = false)] + public weak uint[] uubuf; + public static size_t base64_decode_step (uint inbuf, size_t inlen, uint outbuf, int state, uint32 save); + public static size_t base64_encode_close (uint inbuf, size_t inlen, uint outbuf, int state, uint32 save); + public static size_t base64_encode_step (uint inbuf, size_t inlen, uint outbuf, int state, uint32 save); + public size_t flush (string inbuf, size_t inlen, string outbuf); + public void init_decode (GMime.ContentEncoding encoding); + public void init_encode (GMime.ContentEncoding encoding); + public size_t outlen (size_t inlen); + public static size_t quoted_decode_step (uint inbuf, size_t inlen, uint outbuf, int state, uint32 save); + public static size_t quoted_encode_close (uint inbuf, size_t inlen, uint outbuf, int state, uint32 save); + public static size_t quoted_encode_step (uint inbuf, size_t inlen, uint outbuf, int state, uint32 save); + public void reset (); + public size_t step (string inbuf, size_t inlen, string outbuf); + public static size_t uudecode_step (uint inbuf, size_t inlen, uint outbuf, int state, uint32 save); + public static size_t uuencode_close (uint inbuf, size_t inlen, uint outbuf, uint uubuf, int state, uint32 save); + public static size_t uuencode_step (uint inbuf, size_t inlen, uint outbuf, uint uubuf, int state, uint32 save); + } + [CCode (cheader_filename = "gmime/gmime.h")] + public class Filter : GLib.Object { + public weak string backbuf; + public size_t backlen; + public size_t backsize; + public weak string outbuf; + public size_t outpre; + public weak string outptr; + public weak string outreal; + public size_t outsize; + [CCode (has_construct_function = false)] + protected Filter (); + public void backup (string data, size_t length); + public virtual void complete (string inbuf, size_t inlen, size_t prespace, out unowned string outbuf, size_t outlen, size_t outprespace); + public virtual unowned GMime.Filter copy (); + public virtual void filter (string inbuf, size_t inlen, size_t prespace, out unowned string outbuf, size_t outlen, size_t outprespace); + public virtual void reset (); + public void set_size (size_t size, bool keep); + } + [CCode (cheader_filename = "gmime/gmime.h")] + public class FilterBasic : GMime.Filter { + public weak GMime.Encoding encoder; + [CCode (type = "GMimeFilter*", has_construct_function = false)] + public FilterBasic (GMime.ContentEncoding encoding, bool encode); + } + [CCode (cheader_filename = "gmime/gmime.h")] + public class FilterBest : GMime.Filter { + public uint count0; + public uint count8; + public GMime.FilterBestFlags flags; + [CCode (array_length = false)] + public weak uint[] frombuf; + public uint fromlen; + public uint hadfrom; + public uint linelen; + public uint maxline; + public uint midline; + public uint startline; + public uint total; + [CCode (type = "GMimeFilter*", has_construct_function = false)] + public FilterBest (GMime.FilterBestFlags flags); + public unowned string charset (); + public GMime.ContentEncoding encoding (GMime.BestEncoding required); + } + [CCode (cheader_filename = "gmime/gmime.h")] + public class FilterCRLF : GMime.Filter { + public bool dots; + public bool encode; + public bool saw_cr; + public bool saw_dot; + public bool saw_lf; + [CCode (type = "GMimeFilter*", has_construct_function = false)] + public FilterCRLF (bool encode, bool dots); + } + [CCode (cheader_filename = "gmime/gmime.h")] + public class FilterCharset : GMime.Filter { + public void* cd; + public weak string from_charset; + public weak string to_charset; + [CCode (type = "GMimeFilter*", has_construct_function = false)] + public FilterCharset (string from_charset, string to_charset); + } + [CCode (cheader_filename = "gmime/gmime.h")] + public class FilterEnriched : GMime.Filter { + public uint32 flags; + public int nofill; + [CCode (type = "GMimeFilter*", has_construct_function = false)] + public FilterEnriched (uint32 flags); + } + [CCode (cheader_filename = "gmime/gmime.h")] + public class FilterFrom : GMime.Filter { + public bool midline; + public GMime.FilterFromMode mode; + [CCode (type = "GMimeFilter*", has_construct_function = false)] + public FilterFrom (GMime.FilterFromMode mode); + } + [CCode (cheader_filename = "gmime/gmime.h")] + public class FilterGZip : GMime.Filter { + public int level; + public GMime.FilterGZipMode mode; + [CCode (type = "GMimeFilter*", has_construct_function = false)] + public FilterGZip (GMime.FilterGZipMode mode, int level); + } + [CCode (cheader_filename = "gmime/gmime.h")] + public class FilterHTML : GMime.Filter { + public uint32 colour; + public uint32 column; + public uint32 flags; + public uint32 pre_open; + public void* scanner; + [CCode (type = "GMimeFilter*", has_construct_function = false)] + public FilterHTML (uint32 flags, uint32 colour); + } + [CCode (cheader_filename = "gmime/gmime.h")] + public class FilterMd5 : GMime.Filter { + [CCode (type = "GMimeFilter*", has_construct_function = false)] + public FilterMd5 (); + public void get_digest (uint[] digest); + } + [CCode (cheader_filename = "gmime/gmime.h")] + public class FilterStrip : GMime.Filter { + [CCode (type = "GMimeFilter*", has_construct_function = false)] + public FilterStrip (); + } + [CCode (cheader_filename = "gmime/gmime.h")] + public class FilterWindows : GMime.Filter { + public weak string claimed_charset; + public bool is_windows; + [CCode (type = "GMimeFilter*", has_construct_function = false)] + public FilterWindows (string claimed_charset); + public bool is_windows_charset (); + public unowned string real_charset (); + } + [CCode (cheader_filename = "gmime/gmime.h")] + public class FilterYenc : GMime.Filter { + public uint32 crc; + public bool encode; + public int part; + public uint32 pcrc; + public int state; + [CCode (type = "GMimeFilter*", has_construct_function = false)] + public FilterYenc (bool encode); + public uint32 get_crc (); + public uint32 get_pcrc (); + public void set_crc (uint32 crc); + public void set_state (int state); + } + [CCode (cheader_filename = "gmime/gmime.h")] + public class GpgContext : GMime.CipherContext { + public bool always_trust; + public weak string path; + [CCode (type = "GMimeCipherContext*", has_construct_function = false)] + public GpgContext (GMime.Session session, string path); + public bool get_always_trust (); + public void set_always_trust (bool always_trust); + } + [Compact] + [CCode (cheader_filename = "gmime/gmime.h")] + public class Header { + } + [Compact] + [CCode (copy_function = "g_mime_header_iter_copy", cheader_filename = "gmime/gmime.h")] + public class HeaderIter { + public weak GMime.Header cursor; + public weak GMime.HeaderList hdrlist; + public uint32 version; + [CCode (has_construct_function = false)] + public HeaderIter (); + public unowned GMime.HeaderIter copy (); + public void copy_to (GMime.HeaderIter dest); + public bool equal (GMime.HeaderIter iter2); + public bool first (); + public unowned string get_name (); + public unowned string get_value (); + public bool is_valid (); + public bool last (); + public bool next (); + public bool prev (); + public bool remove (); + public bool set_value (string value); + } + [Compact] + [CCode (free_function = "g_mime_header_list_destroy", cheader_filename = "gmime/gmime.h")] + public class HeaderList { + [CCode (has_construct_function = false)] + public HeaderList (); + public void append (string name, string value); + public void @foreach (GMime.HeaderForeachFunc func); + public unowned string @get (string name); + public bool get_iter (GMime.HeaderIter iter); + public unowned GMime.Stream get_stream (); + public bool has_raw (); + public void prepend (string name, string value); + public void register_writer (string name, GMime.HeaderWriter writer); + public bool remove (string name); + public void @set (string name, string value); + public void set_raw (string raw); + public void set_stream (GMime.Stream stream); + public unowned string to_string (); + public ssize_t write_to_stream (GMime.Stream stream); + } + [CCode (cheader_filename = "gmime/gmime.h")] + public class InternetAddress : GLib.Object { + public weak string name; + [CCode (has_construct_function = false)] + protected InternetAddress (); + [CCode (cname = "internet_address_get_name")] + public static unowned string get_name (GMime.InternetAddress ia); + [CCode (cname = "internet_address_set_name")] + public static void set_name (GMime.InternetAddress ia, string name); + [CCode (cname = "internet_address_to_string")] + public virtual void to_string (GMime.InternetAddress ia, bool encode); + } + [CCode (cheader_filename = "gmime/gmime.h")] + public class InternetAddressGroup : GMime.InternetAddress { + public weak GMime.InternetAddressList members; + [CCode (cname = "internet_address_group_new", type = "InternetAddress*", has_construct_function = false)] + public InternetAddressGroup (string name); + [CCode (cname = "internet_address_group_add_member")] + public static int add_member (GMime.InternetAddressGroup group, GMime.InternetAddress member); + [CCode (cname = "internet_address_group_get_members")] + public static unowned GMime.InternetAddressList get_members (GMime.InternetAddressGroup group); + [CCode (cname = "internet_address_group_set_members")] + public static void set_members (GMime.InternetAddressGroup group, GMime.InternetAddressList members); + } + [CCode (cheader_filename = "gmime/gmime.h")] + public class InternetAddressList : GLib.Object { + public weak GLib.GenericArray array; + [CCode (cname = "internet_address_list_new", type = "InternetAddressList*", has_construct_function = false)] + public InternetAddressList (); + [CCode (cname = "internet_address_list_add")] + public static int add (GMime.InternetAddressList list, GMime.InternetAddress ia); + [CCode (cname = "internet_address_list_append")] + public static void append (GMime.InternetAddressList list, GMime.InternetAddressList append); + [CCode (cname = "internet_address_list_clear")] + public static void clear (GMime.InternetAddressList list); + [CCode (cname = "internet_address_list_contains")] + public static bool contains (GMime.InternetAddressList list, GMime.InternetAddress ia); + [CCode (cname = "internet_address_list_get_address")] + public static unowned GMime.InternetAddress get_address (GMime.InternetAddressList list, int index); + [CCode (cname = "internet_address_list_index_of")] + public static int index_of (GMime.InternetAddressList list, GMime.InternetAddress ia); + [CCode (cname = "internet_address_list_insert")] + public static void insert (GMime.InternetAddressList list, int index, GMime.InternetAddress ia); + [CCode (cname = "internet_address_list_length")] + public static int length (GMime.InternetAddressList list); + [CCode (cname = "internet_address_list_parse_string")] + public static unowned GMime.InternetAddressList parse_string (string str); + [CCode (cname = "internet_address_list_prepend")] + public static void prepend (GMime.InternetAddressList list, GMime.InternetAddressList prepend); + [CCode (cname = "internet_address_list_remove")] + public static bool remove (GMime.InternetAddressList list, GMime.InternetAddress ia); + [CCode (cname = "internet_address_list_remove_at")] + public static bool remove_at (GMime.InternetAddressList list, int index); + [CCode (cname = "internet_address_list_set_address")] + public static void set_address (GMime.InternetAddressList list, int index, GMime.InternetAddress ia); + [CCode (cname = "internet_address_list_to_string")] + public static unowned string to_string (GMime.InternetAddressList list, bool encode); + [CCode (cname = "internet_address_list_writer")] + public static void writer (GMime.InternetAddressList list, GLib.StringBuilder str); + } + [CCode (cheader_filename = "gmime/gmime.h")] + public class InternetAddressMailbox : GMime.InternetAddress { + public weak string addr; + [CCode (cname = "internet_address_mailbox_new", type = "InternetAddress*", has_construct_function = false)] + public InternetAddressMailbox (string name, string addr); + [CCode (cname = "internet_address_mailbox_get_addr")] + public static unowned string get_addr (GMime.InternetAddressMailbox mailbox); + [CCode (cname = "internet_address_mailbox_set_addr")] + public static void set_addr (GMime.InternetAddressMailbox mailbox, string addr); + } + [CCode (cheader_filename = "gmime/gmime.h")] + public class Message : GMime.Object { + public ulong date; + public weak string from; + public weak string message_id; + public weak GMime.Object mime_part; + public weak GMime.InternetAddressList recipients; + public weak string reply_to; + public weak string subject; + public int tz_offset; + [CCode (has_construct_function = false)] + public Message (bool pretty_headers); + public void add_recipient (GMime.RecipientType type, string name, string addr); + public void @foreach (GMime.ObjectForeachFunc callback); + public unowned GMime.InternetAddressList get_all_recipients (); + public void get_date (out ulong date, out int tz_offset); + public unowned string get_date_as_string (); + public unowned string get_message_id (); + public unowned GMime.Object get_mime_part (); + public unowned GMime.InternetAddressList get_recipients (GMime.RecipientType type); + public unowned string get_reply_to (); + public unowned string get_sender (); + public unowned string get_subject (); + public void set_date (ulong date, int tz_offset); + public void set_date_as_string (string str); + public void set_message_id (string message_id); + public void set_mime_part (GMime.Object mime_part); + public void set_reply_to (string reply_to); + public void set_sender (string sender); + public void set_subject (string subject); + } + [CCode (cheader_filename = "gmime/gmime.h")] + public class MessagePart : GMime.Object { + public weak GMime.Message message; + [CCode (has_construct_function = false)] + public MessagePart (string subtype); + public unowned GMime.Message get_message (); + public void set_message (GMime.Message message); + [CCode (has_construct_function = false)] + public MessagePart.with_message (string subtype, GMime.Message message); + } + [CCode (cheader_filename = "gmime/gmime.h")] + public class MessagePartial : GMime.Part { + public weak string id; + public int number; + public int total; + [CCode (has_construct_function = false)] + public MessagePartial (string id, int number, int total); + public unowned string get_id (); + public int get_number (); + public int get_total (); + public unowned GMime.Message reconstruct_message (size_t num); + public static unowned GMime.Message split_message (GMime.Message message, size_t max_size, size_t nparts); + } + [CCode (cheader_filename = "gmime/gmime.h")] + public class Multipart : GMime.Object { + public weak string boundary; + public weak GLib.GenericArray children; + public weak string postface; + public weak string preface; + [CCode (has_construct_function = false)] + public Multipart (); + public virtual void add (GMime.Object part); + public virtual void clear (); + public virtual bool contains (GMime.Object part); + public void @foreach (GMime.ObjectForeachFunc callback); + public virtual unowned string get_boundary (); + public virtual int get_count (); + public virtual unowned GMime.Object get_part (int index); + public unowned string get_postface (); + public unowned string get_preface (); + public unowned GMime.Object get_subpart_from_content_id (string content_id); + public virtual int index_of (GMime.Object part); + public virtual void insert (int index, GMime.Object part); + public virtual bool remove (GMime.Object part); + public virtual unowned GMime.Object remove_at (int index); + public virtual void set_boundary (string boundary); + public void set_postface (string postface); + public void set_preface (string preface); + [CCode (has_construct_function = false)] + public Multipart.with_subtype (string subtype); + } + [CCode (cheader_filename = "gmime/gmime.h")] + public class MultipartEncrypted : GMime.Multipart { + public weak GMime.Object decrypted; + public weak GMime.SignatureValidity validity; + [CCode (has_construct_function = false)] + public MultipartEncrypted (); + public unowned GMime.Object decrypt (GMime.CipherContext ctx) throws GLib.Error; + public int encrypt (GMime.Object content, GMime.CipherContext ctx, bool sign, string userid, GLib.GenericArray recipients) throws GLib.Error; + public unowned GMime.SignatureValidity get_signature_validity (); + } + [CCode (cheader_filename = "gmime/gmime.h")] + public class MultipartSigned : GMime.Multipart { + [CCode (has_construct_function = false)] + public MultipartSigned (); + public int sign (GMime.Object content, GMime.CipherContext ctx, string userid, GMime.CipherHash hash) throws GLib.Error; + public unowned GMime.SignatureValidity verify (GMime.CipherContext ctx) throws GLib.Error; + } + [CCode (cheader_filename = "gmime/gmime.h")] + public class Object : GLib.Object { + public weak string content_id; + public weak GMime.ContentType content_type; + public weak GMime.ContentDisposition disposition; + public weak GMime.HeaderList headers; + [CCode (has_construct_function = false)] + public Object (GMime.ContentType content_type); + public virtual void append_header (string header, string value); + public unowned GMime.ContentDisposition get_content_disposition (); + public unowned string get_content_disposition_parameter (string attribute); + public unowned string get_content_id (); + public unowned GMime.ContentType get_content_type (); + public unowned string get_content_type_parameter (string name); + public unowned string get_disposition (); + public virtual unowned string get_header (string header); + public unowned GMime.HeaderList get_header_list (); + public virtual unowned string get_headers (); + public virtual void prepend_header (string header, string value); + public static void register_type (string type, string subtype, GLib.Type object_type); + public virtual bool remove_header (string header); + public void set_content_disposition (GMime.ContentDisposition disposition); + public void set_content_disposition_parameter (string attribute, string value); + public void set_content_id (string content_id); + public virtual void set_content_type (GMime.ContentType content_type); + public void set_content_type_parameter (string name, string value); + public void set_disposition (string disposition); + public virtual void set_header (string header, string value); + public unowned string to_string (); + [CCode (has_construct_function = false)] + public Object.type (string type, string subtype); + public static void type_registry_init (); + public static void type_registry_shutdown (); + public virtual ssize_t write_to_stream (GMime.Stream stream); + } + [Compact] + [CCode (free_function = "g_mime_param_destroy", cheader_filename = "gmime/gmime.h")] + public class Param { + public weak string name; + public weak GMime.Param next; + public weak string value; + [CCode (has_construct_function = false)] + public Param (string name, string value); + public unowned GMime.Param append (string name, string value); + public unowned GMime.Param append_param (GMime.Param param); + [CCode (has_construct_function = false)] + public Param.from_string (string str); + public unowned string get_name (); + [CCode (cname = "g_mime_param_next")] + public unowned GMime.Param get_next (); + public unowned string get_value (); + public void write_to_string (bool fold, GLib.StringBuilder str); + } + [CCode (cheader_filename = "gmime/gmime.h")] + public class Parser : GLib.Object { + [CCode (has_construct_function = false)] + public Parser (); + public unowned GMime.Message construct_message (); + public unowned GMime.Object construct_part (); + public bool eos (); + public unowned string get_from (); + public int64 get_from_offset (); + public int64 get_headers_begin (); + public int64 get_headers_end (); + public bool get_persist_stream (); + public bool get_respect_content_length (); + public bool get_scan_from (); + public void init_with_stream (GMime.Stream stream); + public void set_header_regex (string regex, GMime.ParserHeaderRegexFunc header_cb); + public void set_persist_stream (bool persist); + public void set_respect_content_length (bool respect_content_length); + public void set_scan_from (bool scan_from); + public int64 tell (); + [CCode (has_construct_function = false)] + public Parser.with_stream (GMime.Stream stream); + } + [CCode (cheader_filename = "gmime/gmime.h")] + public class Part : GMime.Object { + public weak GMime.DataWrapper content; + public weak string content_description; + public weak string content_location; + public weak string content_md5; + public GMime.ContentEncoding encoding; + [CCode (has_construct_function = false)] + public Part (); + public unowned string get_content_description (); + public GMime.ContentEncoding get_content_encoding (); + public unowned string get_content_id (); + public unowned string get_content_location (); + public unowned string get_content_md5 (); + public unowned GMime.DataWrapper get_content_object (); + public unowned string get_filename (); + public void set_content_description (string description); + public void set_content_encoding (GMime.ContentEncoding encoding); + public void set_content_id (string content_id); + public void set_content_location (string content_location); + public void set_content_md5 (string content_md5); + public virtual void set_content_object (GMime.DataWrapper content); + public void set_filename (string filename); + public bool verify_content_md5 (); + [CCode (has_construct_function = false)] + public Part.with_type (string type, string subtype); + } + [Compact] + [CCode (cheader_filename = "gmime/gmime.h")] + public class References { + public weak string msgid; + public weak GMime.References next; + public void append (string msgid); + public void clear (); + public static unowned GMime.References decode (string text); + public unowned string get_message_id (); + public unowned GMime.References get_next (); + } + [CCode (cheader_filename = "gmime/gmime.h")] + public class Session : GLib.Object { + [CCode (has_construct_function = false)] + protected Session (); + public virtual void forget_passwd (string item) throws GLib.Error; + public virtual bool is_online (); + public virtual unowned string request_passwd (string prompt, bool secret, string item) throws GLib.Error; + } + [CCode (cheader_filename = "gmime/gmime.h")] + public class SessionSimple : GMime.Session { + public weak GMime.SimpleForgetPasswdFunc forget_passwd; + public weak GMime.SimpleIsOnlineFunc is_online; + public weak GMime.SimpleRequestPasswdFunc request_passwd; + [CCode (has_construct_function = false)] + protected SessionSimple (); + public void set_forget_passwd (GMime.SimpleForgetPasswdFunc forget_passwd); + public void set_is_online (GMime.SimpleIsOnlineFunc is_online); + public void set_request_passwd (GMime.SimpleRequestPasswdFunc request_passwd); + } + [Compact] + [CCode (cheader_filename = "gmime/gmime.h")] + public class SignatureValidity { + public weak string details; + public weak GMime.Signer signers; + public GMime.SignatureStatus status; + [CCode (has_construct_function = false)] + public SignatureValidity (); + public void add_signer (GMime.Signer signer); + public unowned string get_details (); + public unowned GMime.Signer get_signers (); + public GMime.SignatureStatus get_status (); + public void set_details (string details); + public void set_status (GMime.SignatureStatus status); + } + [Compact] + [CCode (cheader_filename = "gmime/gmime.h")] + public class Signer { + public ulong created; + public uint errors; + public ulong expires; + public weak string fingerprint; + public weak string keyid; + public weak string name; + public weak GMime.Signer next; + public uint status; + public uint trust; + public uint unused; + [CCode (has_construct_function = false)] + public Signer (); + public ulong get_created (); + public GMime.SignerError get_errors (); + public ulong get_expires (); + public unowned string get_fingerprint (); + public unowned string get_key_id (); + public unowned string get_name (); + [CCode (cname = "g_mime_signer_next")] + public unowned GMime.Signer get_next (); + public GMime.SignerStatus get_status (); + public GMime.SignerTrust get_trust (); + public void set_created (ulong created); + public void set_errors (GMime.SignerError error); + public void set_expires (ulong expires); + public void set_fingerprint (string fingerprint); + public void set_key_id (string key_id); + public void set_name (string name); + public void set_status (GMime.SignerStatus status); + public void set_trust (GMime.SignerTrust trust); + } + [CCode (cheader_filename = "gmime/gmime.h")] + public class Stream : GLib.Object { + public int64 bound_end; + public int64 bound_start; + public int64 position; + public weak GMime.Stream super_stream; + [CCode (has_construct_function = false)] + protected Stream (); + public virtual int close (); + public void @construct (int64 start, int64 end); + public virtual bool eos (); + public virtual int flush (); + public virtual ssize_t length (); + public ssize_t printf (string fmt); + public virtual ssize_t read (string buf, size_t len); + public virtual int reset (); + public virtual int64 seek (int64 offset, GMime.SeekWhence whence); + public void set_bounds (int64 start, int64 end); + public virtual unowned GMime.Stream substream (int64 start, int64 end); + public virtual int64 tell (); + public virtual ssize_t write (string buf, size_t len); + public ssize_t write_string (string str); + public ssize_t write_to_stream (GMime.Stream dest); + public ssize_t writev (GMime.StreamIOVector vector, size_t count); + } + [CCode (cheader_filename = "gmime/gmime.h")] + public class StreamBuffer : GMime.Stream { + public weak string bufend; + public weak string buffer; + public size_t buflen; + public weak string bufptr; + public GMime.StreamBufferMode mode; + public weak GMime.Stream source; + [CCode (type = "GMimeStream*", has_construct_function = false)] + public StreamBuffer (GMime.Stream source, GMime.StreamBufferMode mode); + public static ssize_t gets (GMime.Stream stream, string buf, size_t max); + public static void readln (GMime.Stream stream, GLib.ByteArray buffer); + } + [CCode (cheader_filename = "gmime/gmime.h")] + public class StreamCat : GMime.Stream { + public void* current; + public void* sources; + [CCode (type = "GMimeStream*", has_construct_function = false)] + public StreamCat (); + public int add_source (GMime.Stream source); + } + [CCode (cheader_filename = "gmime/gmime.h")] + public class StreamFile : GMime.Stream { + public weak GLib.FileStream fp; + public bool owner; + [CCode (type = "GMimeStream*", has_construct_function = false)] + public StreamFile (GLib.FileStream fp); + public bool get_owner (); + public void set_owner (bool owner); + [CCode (type = "GMimeStream*", has_construct_function = false)] + public StreamFile.with_bounds (GLib.FileStream fp, int64 start, int64 end); + } + [CCode (cheader_filename = "gmime/gmime.h")] + public class StreamFilter : GMime.Stream { + public weak GMime.Stream source; + [CCode (type = "GMimeStream*", has_construct_function = false)] + public StreamFilter (GMime.Stream stream); + public int add (GMime.Filter filter); + public void remove (int id); + } + [CCode (cheader_filename = "gmime/gmime.h")] + public class StreamFs : GMime.Stream { + public bool eos; + public int fd; + public bool owner; + [CCode (type = "GMimeStream*", has_construct_function = false)] + public StreamFs (int fd); + public bool get_owner (); + public void set_owner (bool owner); + [CCode (type = "GMimeStream*", has_construct_function = false)] + public StreamFs.with_bounds (int fd, int64 start, int64 end); + } + [Compact] + [CCode (cheader_filename = "gmime/gmime.h")] + public class StreamIOVector { + public void* data; + public size_t len; + } + [CCode (cheader_filename = "gmime/gmime.h")] + public class StreamMem : GMime.Stream { + public weak GLib.ByteArray buffer; + public bool owner; + [CCode (type = "GMimeStream*", has_construct_function = false)] + public StreamMem (); + public unowned GLib.ByteArray get_byte_array (); + public bool get_owner (); + public void set_byte_array (GLib.ByteArray array); + public void set_owner (bool owner); + [CCode (type = "GMimeStream*", has_construct_function = false)] + public StreamMem.with_buffer (string buffer, size_t len); + [CCode (type = "GMimeStream*", has_construct_function = false)] + public StreamMem.with_byte_array (GLib.ByteArray array); + } + [CCode (cheader_filename = "gmime/gmime.h")] + public class StreamMmap : GMime.Stream { + public bool eos; + public int fd; + public weak string map; + public size_t maplen; + public bool owner; + [CCode (type = "GMimeStream*", has_construct_function = false)] + public StreamMmap (int fd, int prot, int flags); + [CCode (type = "GMimeStream*", has_construct_function = false)] + public StreamMmap.with_bounds (int fd, int prot, int flags, int64 start, int64 end); + } + [CCode (cheader_filename = "gmime/gmime.h")] + public class StreamNull : GMime.Stream { + public size_t newlines; + public size_t written; + [CCode (type = "GMimeStream*", has_construct_function = false)] + public StreamNull (); + } + [CCode (cprefix = "GMIME_BEST_ENCODING_", has_type_id = false, cheader_filename = "gmime/gmime.h")] + public enum BestEncoding { + @7BIT, + @8BIT, + BINARY + } + [CCode (cprefix = "GMIME_CIPHER_HASH_", has_type_id = false, cheader_filename = "gmime/gmime.h")] + public enum CipherHash { + DEFAULT, + MD2, + MD5, + SHA1, + SHA224, + SHA256, + SHA384, + SHA512, + RIPEMD160, + TIGER192, + HAVAL5160 + } + [CCode (cprefix = "GMIME_CONTENT_ENCODING_", has_type_id = false, cheader_filename = "gmime/gmime.h")] + public enum ContentEncoding { + DEFAULT, + @7BIT, + @8BIT, + BINARY, + BASE64, + QUOTEDPRINTABLE, + UUENCODE + } + [CCode (cprefix = "GMIME_FILTER_BEST_", has_type_id = false, cheader_filename = "gmime/gmime.h")] + public enum FilterBestFlags { + CHARSET, + ENCODING + } + [CCode (cprefix = "GMIME_FILTER_FROM_MODE_", has_type_id = false, cheader_filename = "gmime/gmime.h")] + public enum FilterFromMode { + DEFAULT, + ESCAPE, + ARMOR + } + [CCode (cprefix = "GMIME_FILTER_GZIP_MODE_", has_type_id = false, cheader_filename = "gmime/gmime.h")] + public enum FilterGZipMode { + ZIP, + UNZIP + } + [CCode (cprefix = "GMIME_RECIPIENT_TYPE_", has_type_id = false, cheader_filename = "gmime/gmime.h")] + public enum RecipientType { + TO, + CC, + BCC + } + [CCode (cprefix = "GMIME_STREAM_SEEK_", has_type_id = false, cheader_filename = "gmime/gmime.h")] + public enum SeekWhence { + SET, + CUR, + END + } + [CCode (cprefix = "GMIME_SIGNATURE_STATUS_", has_type_id = false, cheader_filename = "gmime/gmime.h")] + public enum SignatureStatus { + NONE, + GOOD, + BAD, + UNKNOWN + } + [CCode (cprefix = "GMIME_SIGNER_ERROR_", has_type_id = false, cheader_filename = "gmime/gmime.h")] + public enum SignerError { + NONE, + EXPSIG, + NO_PUBKEY, + EXPKEYSIG, + REVKEYSIG + } + [CCode (cprefix = "GMIME_SIGNER_STATUS_", has_type_id = false, cheader_filename = "gmime/gmime.h")] + public enum SignerStatus { + NONE, + GOOD, + BAD, + ERROR + } + [CCode (cprefix = "GMIME_SIGNER_TRUST_", has_type_id = false, cheader_filename = "gmime/gmime.h")] + public enum SignerTrust { + NONE, + NEVER, + UNDEFINED, + MARGINAL, + FULLY, + ULTIMATE + } + [CCode (cprefix = "GMIME_STREAM_BUFFER_", has_type_id = false, cheader_filename = "gmime/gmime.h")] + public enum StreamBufferMode { + CACHE_READ, + BLOCK_READ, + BLOCK_WRITE + } + [CCode (cheader_filename = "gmime/gmime.h")] + public delegate void HeaderForeachFunc (string name, string value); + [CCode (cheader_filename = "gmime/gmime.h", has_target = false)] + public delegate ssize_t HeaderWriter (GMime.Stream stream, string name, string value); + [CCode (cheader_filename = "gmime/gmime.h")] + public delegate void ObjectForeachFunc (GMime.Object parent, GMime.Object part); + [CCode (cheader_filename = "gmime/gmime.h")] + public delegate void ParserHeaderRegexFunc (GMime.Parser parser, string header, string value, int64 offset); + [CCode (cheader_filename = "gmime/gmime.h", has_target = false)] + public delegate void SimpleForgetPasswdFunc (GMime.Session session, string item, GLib.Error err); + [CCode (cheader_filename = "gmime/gmime.h", has_target = false)] + public delegate bool SimpleIsOnlineFunc (GMime.Session session); + [CCode (cheader_filename = "gmime/gmime.h", has_target = false)] + public delegate unowned string SimpleRequestPasswdFunc (GMime.Session session, string prompt, bool secret, string item, GLib.Error err); + [CCode (cheader_filename = "gmime/gmime.h")] + public const string GMIME_DISPOSITION_ATTACHMENT; + [CCode (cheader_filename = "gmime/gmime.h")] + public const string GMIME_DISPOSITION_INLINE; + [CCode (cheader_filename = "gmime/gmime.h")] + public const int GMIME_ENABLE_RFC2047_WORKAROUNDS; + [CCode (cheader_filename = "gmime/gmime.h")] + public const int GMIME_FILTER_ENRICHED_IS_RICHTEXT; + [CCode (cheader_filename = "gmime/gmime.h")] + public const int GMIME_FILTER_HTML_CITE; + [CCode (cheader_filename = "gmime/gmime.h")] + public const int GMIME_FILTER_HTML_CONVERT_ADDRESSES; + [CCode (cheader_filename = "gmime/gmime.h")] + public const int GMIME_FILTER_HTML_CONVERT_NL; + [CCode (cheader_filename = "gmime/gmime.h")] + public const int GMIME_FILTER_HTML_CONVERT_SPACES; + [CCode (cheader_filename = "gmime/gmime.h")] + public const int GMIME_FILTER_HTML_CONVERT_URLS; + [CCode (cheader_filename = "gmime/gmime.h")] + public const int GMIME_FILTER_HTML_ESCAPE_8BIT; + [CCode (cheader_filename = "gmime/gmime.h")] + public const int GMIME_FILTER_HTML_MARK_CITATION; + [CCode (cheader_filename = "gmime/gmime.h")] + public const int GMIME_FILTER_HTML_PRE; + [CCode (cheader_filename = "gmime/gmime.h")] + public const int GMIME_UUDECODE_STATE_BEGIN; + [CCode (cheader_filename = "gmime/gmime.h")] + public const int GMIME_UUDECODE_STATE_END; + [CCode (cheader_filename = "gmime/gmime.h")] + public const int GMIME_UUDECODE_STATE_INIT; + [CCode (cheader_filename = "gmime/gmime.h")] + public const int GMIME_UUDECODE_STATE_MASK; + [CCode (cheader_filename = "gmime/gmime.h")] + public const int GMIME_YDECODE_STATE_BEGIN; + [CCode (cheader_filename = "gmime/gmime.h")] + public const int GMIME_YDECODE_STATE_DECODE; + [CCode (cheader_filename = "gmime/gmime.h")] + public const int GMIME_YDECODE_STATE_END; + [CCode (cheader_filename = "gmime/gmime.h")] + public const int GMIME_YDECODE_STATE_EOLN; + [CCode (cheader_filename = "gmime/gmime.h")] + public const int GMIME_YDECODE_STATE_ESCAPE; + [CCode (cheader_filename = "gmime/gmime.h")] + public const int GMIME_YDECODE_STATE_INIT; + [CCode (cheader_filename = "gmime/gmime.h")] + public const int GMIME_YDECODE_STATE_PART; + [CCode (cheader_filename = "gmime/gmime.h")] + public const int GMIME_YENCODE_CRC_INIT; + [CCode (cheader_filename = "gmime/gmime.h")] + public const int GMIME_YENCODE_STATE_INIT; + [CCode (cheader_filename = "gmime/gmime.h")] + public static bool check_version (uint major, uint minor, uint micro); + [CCode (cheader_filename = "gmime/gmime.h")] + public static GMime.ContentEncoding content_encoding_from_string (string str); + [CCode (cheader_filename = "gmime/gmime.h")] + public static unowned string content_encoding_to_string (GMime.ContentEncoding encoding); + [CCode (cheader_filename = "gmime/gmime.h")] + public static bool decode_domain (out unowned string @in, GLib.StringBuilder domain); + [CCode (cheader_filename = "gmime/gmime.h")] + public static void decode_lwsp (out unowned string @in); + [CCode (cheader_filename = "gmime/gmime.h")] + public static unowned string decode_word (out unowned string @in); + [CCode (cheader_filename = "gmime/gmime.h")] + public static int iconv_close (void* cd); + [CCode (cheader_filename = "gmime/gmime.h")] + public static void iconv_init (); + [CCode (cheader_filename = "gmime/gmime.h")] + public static unowned string iconv_locale_to_utf8 (string str); + [CCode (cheader_filename = "gmime/gmime.h")] + public static unowned string iconv_locale_to_utf8_length (string str, size_t n); + [CCode (cheader_filename = "gmime/gmime.h")] + public static void* iconv_open (string to, string from); + [CCode (cheader_filename = "gmime/gmime.h")] + public static void iconv_shutdown (); + [CCode (cheader_filename = "gmime/gmime.h")] + public static unowned string iconv_strdup (void* cd, string str); + [CCode (cheader_filename = "gmime/gmime.h")] + public static unowned string iconv_strndup (void* cd, string str, size_t n); + [CCode (cheader_filename = "gmime/gmime.h")] + public static unowned string iconv_utf8_to_locale (string str); + [CCode (cheader_filename = "gmime/gmime.h")] + public static unowned string iconv_utf8_to_locale_length (string str, size_t n); + [CCode (cheader_filename = "gmime/gmime.h")] + public static void init (uint32 flags); + [CCode (cheader_filename = "gmime/gmime.h")] + public static unowned string locale_charset (); + [CCode (cheader_filename = "gmime/gmime.h")] + public static unowned string locale_language (); + [CCode (cheader_filename = "gmime/gmime.h")] + public static bool parse_content_type (out unowned string @in, out unowned string type, out unowned string subtype); + [CCode (cheader_filename = "gmime/gmime.h")] + public static void set_user_charsets (out unowned string charsets); + [CCode (cheader_filename = "gmime/gmime.h")] + public static void shutdown (); + [CCode (cheader_filename = "gmime/gmime.h")] + public static unowned string user_charsets (); + [CCode (cheader_filename = "gmime/gmime.h")] + public static GMime.ContentEncoding utils_best_encoding (uint text, size_t len); + [CCode (cheader_filename = "gmime/gmime.h")] + public static unowned string utils_decode_8bit (string text, size_t len); + [CCode (cheader_filename = "gmime/gmime.h")] + public static unowned string utils_decode_message_id (string message_id); + [CCode (cheader_filename = "gmime/gmime.h")] + public static unowned string utils_generate_message_id (string fqdn); + [CCode (cheader_filename = "gmime/gmime.h")] + public static time_t utils_header_decode_date (string str, out unowned int? tz_offset); + [CCode (cheader_filename = "gmime/gmime.h")] + public static unowned string utils_header_decode_phrase (string phrase); + [CCode (cheader_filename = "gmime/gmime.h")] + public static unowned string utils_header_decode_text (string text); + [CCode (cheader_filename = "gmime/gmime.h")] + public static unowned string utils_header_encode_phrase (string phrase); + [CCode (cheader_filename = "gmime/gmime.h")] + public static unowned string utils_header_encode_text (string text); + [CCode (cheader_filename = "gmime/gmime.h")] + public static unowned string utils_header_fold (string str); + [CCode (cheader_filename = "gmime/gmime.h")] + public static unowned string utils_header_format_date (ulong date, int tz_offset); + [CCode (cheader_filename = "gmime/gmime.h")] + public static unowned string utils_header_printf (string format); + [CCode (cheader_filename = "gmime/gmime.h")] + public static unowned string utils_quote_string (string str); + [CCode (cheader_filename = "gmime/gmime.h")] + public static unowned string utils_structured_header_fold (string str); + [CCode (cheader_filename = "gmime/gmime.h")] + public static bool utils_text_is_8bit (uint text, size_t len); + [CCode (cheader_filename = "gmime/gmime.h")] + public static void utils_unquote_string (string str); + [CCode (cheader_filename = "gmime/gmime.h")] + public static unowned string utils_unstructured_header_fold (string str); + [CCode (cheader_filename = "gmime/gmime.h")] + public static size_t ydecode_step (uint inbuf, size_t inlen, uint outbuf, int state, uint32 pcrc, uint32 crc); + [CCode (cheader_filename = "gmime/gmime.h")] + public static size_t yencode_close (uint inbuf, size_t inlen, uint outbuf, int state, uint32 pcrc, uint32 crc); + [CCode (cheader_filename = "gmime/gmime.h")] + public static size_t yencode_step (uint inbuf, size_t inlen, uint outbuf, int state, uint32 pcrc, uint32 crc); +} diff --git a/vapi/gmime-2.4/gmime-2.4.defines b/vapi/gmime-2.4/gmime-2.4.defines new file mode 100644 index 00000000..e69de29b diff --git a/vapi/gmime-2.4/gmime-2.4.files b/vapi/gmime-2.4/gmime-2.4.files new file mode 100644 index 00000000..707b8336 --- /dev/null +++ b/vapi/gmime-2.4/gmime-2.4.files @@ -0,0 +1,2 @@ +include/gmime-2.4/ +lib/libgmime-2.4.so diff --git a/vapi/gmime-2.4/gmime-2.4.metadata b/vapi/gmime-2.4/gmime-2.4.metadata new file mode 100644 index 00000000..b9584a41 --- /dev/null +++ b/vapi/gmime-2.4/gmime-2.4.metadata @@ -0,0 +1,9 @@ +GMime cheader_filename="gmime/gmime.h" lower_case_cprefix="g_mime_" + +g_mime_message_get_date.date is_out="1" +g_mime_message_get_date.tz_offset is_out="1" +g_mime_param_next name="get_next" +g_mime_signer_next name="get_next" + +g_mime_utils_header_decode_date type_name="time_t" +g_mime_utils_header_decode_date.tz_offset is_out="1" nullable="1" diff --git a/vapi/gmime-2.4/gmime-2.4.namespace b/vapi/gmime-2.4/gmime-2.4.namespace new file mode 100644 index 00000000..9b87733d --- /dev/null +++ b/vapi/gmime-2.4/gmime-2.4.namespace @@ -0,0 +1 @@ +GMime