/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
 *
 * Authors: Michael Zucchi <notzed@helixcode.com>
 *
 * Copyright 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 Street #330, Boston, MA 02111-1307, USA.
 *
 */

#ifndef _MAIL_MT
#define _MAIL_MT

#include <pthread.h>
#include "camel/camel-exception.h"
#include "e-util/e-msgport.h"
#include "camel/camel-object.h"
#include "camel/camel-operation.h"

typedef struct _mail_msg {
	EMsg msg;		/* parent type */
	struct _mail_msg_op *ops; /* operation functions */
	unsigned int seq;	/* seq number for synchronisation */
	CamelOperation *cancel;	/* a cancellation/status handle */
	CamelException ex;	/* an initialised camel exception, upto the caller to use this */
	struct _mail_msg_priv *priv; /* private for internal use */
} mail_msg_t;

/* callback functions for thread message */
typedef struct _mail_msg_op {
	char *(*describe_msg)(struct _mail_msg *msg, int complete);

	void (*receive_msg)(struct _mail_msg *msg);	/* message received */
	void (*reply_msg)(struct _mail_msg *msg);	/* message replied */
	void (*destroy_msg)(struct _mail_msg *msg);	/* finalise message */
} mail_msg_op_t;

/* setup ports */
void mail_msg_init(void);

/* allocate a new message */
void *mail_msg_new(mail_msg_op_t *ops, EMsgPort *reply_port, size_t size);
void mail_msg_free(void *msg);
void mail_msg_check_error(void *msg);
void mail_msg_cancel(unsigned int msgid);
void mail_msg_wait(unsigned int msgid);

/* set the status-bar message */
/* start/end a new op */
void mail_status_start(const char *msg);
void mail_status_end(void);
/* set a status during an op */
void mail_statusf(const char *fmt, ...);
void mail_status(const char *msg);

/* request a string/password */
char *mail_get_password (const char *prompt, gboolean secret);

/* request a yes/no response as to whether or not to accept (a certificate?) */
gboolean mail_get_accept (const char *prompt);

/* forward a camel event (or other call) to the gui thread */
int mail_proxy_event(CamelObjectEventHookFunc func, CamelObject *o, void *event_data, void *data);

/* a message port that receives messages in the gui thread, used for sending port */
extern EMsgPort *mail_gui_port;
/* a message port that receives messages in the gui thread, used for the reply port */
extern EMsgPort *mail_gui_reply_port;

/* some globally available threads */
extern EThread *mail_thread_queued;	/* for operations that can (or should) be queued */
extern EThread *mail_thread_new;	/* for operations that should run in a new thread each time */

/* The main thread. */
extern pthread_t mail_gui_thread;


#endif /* ! _MAIL_MT */
4'>dependabot/npm_and_yarn/devel/electron6/files/elliptic-6.5.4</option>
<option value='dependabot/npm_and_yarn/devel/electron6/files/ini-1.3.8'>dependabot/npm_and_yarn/devel/electron6/files/ini-1.3.8</option>
<option value='dependabot/npm_and_yarn/devel/electron6/files/lodash-4.17.19'>dependabot/npm_and_yarn/devel/electron6/files/lodash-4.17.19</option>
<option value='dependabot/npm_and_yarn/devel/electron6/files/lodash.merge-4.6.2'>dependabot/npm_and_yarn/devel/electron6/files/lodash.merge-4.6.2</option>
<option value='dependabot/npm_and_yarn/devel/electron6/files/node-fetch-2.6.1'>dependabot/npm_and_yarn/devel/electron6/files/node-fetch-2.6.1</option>
<option value='dependabot/npm_and_yarn/devel/electron6/files/serve-10.1.2'>dependabot/npm_and_yarn/devel/electron6/files/serve-10.1.2</option>
<option value='gnome-3.22'>gnome-3.22</option>
<option value='gnome-3.24'>gnome-3.24</option>
<option value='gnome-3.26'>gnome-3.26</option>
<option value='gnome-3.28'>gnome-3.28</option>
<option value='gnome-3.32'>gnome-3.32</option>
<option value='gnome-3.36'>gnome-3.36</option>
<option value='gstreamer'>gstreamer</option>
<option value='gstreamer-1.16'>gstreamer-1.16</option>
<option value='gstreamer0.10-removal'>gstreamer0.10-removal</option>
<option value='main' selected='selected'>main</option>
<option value='master'>master</option>
<option value='mate-1.16'>mate-1.16</option>
<option value='mate-1.18'>mate-1.18</option>
<option value='mate-1.20'>mate-1.20</option>
<option value='mate-1.22'>mate-1.22</option>
</select> <input type='submit' value='switch'/></form></td></tr>
<tr><td class='sub'>FreeBSD GNOME current development ports (https://github.com/freebsd/freebsd-ports-gnome)</td><td class='sub right'></td></tr></table>
<table class='tabs'><tr><td>
<a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/about/'>about</a><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/'>summary</a><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/refs/?id=afa514e55d965168153a8b1b6e4843fb8bf7785a'>refs</a><a class='active' href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/log/devel/glib20-reference'>log</a><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/tree/devel/glib20-reference?id=afa514e55d965168153a8b1b6e4843fb8bf7785a'>tree</a><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/commit/devel/glib20-reference?id=afa514e55d965168153a8b1b6e4843fb8bf7785a'>commit</a><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/diff/devel/glib20-reference?id=afa514e55d965168153a8b1b6e4843fb8bf7785a'>diff</a><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/stats/devel/glib20-reference'>stats</a></td><td class='form'><form class='right' method='get' action='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/log/devel/glib20-reference'>
<input type='hidden' name='id' value='afa514e55d965168153a8b1b6e4843fb8bf7785a'/><select name='qt'>
<option value='grep'>log msg</option>
<option value='author'>author</option>
<option value='committer'>committer</option>
<option value='range'>range</option>
</select>
<input class='txt' type='search' size='10' name='q' value=''/>
<input type='submit' value='search'/>
</form>
</td></tr></table>
<div class='path'>path: <a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/log/?id=afa514e55d965168153a8b1b6e4843fb8bf7785a'>root</a>/<a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/log/devel?id=afa514e55d965168153a8b1b6e4843fb8bf7785a'>devel</a>/<a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/log/devel/glib20-reference?id=afa514e55d965168153a8b1b6e4843fb8bf7785a'>glib20-reference</a></div><div class='content'><table class='list nowrap'><tr class='nohover'><th></th><th class='left'>Commit message (<a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/log/devel/glib20-reference?id=afa514e55d965168153a8b1b6e4843fb8bf7785a&amp;showmsg=1'>Expand</a>)</th><th class='left'>Author</th><th class='left'>Age</th><th class='left'>Files</th><th class='left'>Lines</th></tr>
<tr><td class='commitgraph'>* </td><td><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/commit/devel/glib20-reference?id=cfe4db60e9c53a3ae82399d521bbe9e1962044b8'>- Stage support for all -reference ports</a></td><td>antoine</td><td><span title='2013-12-10 02:41:16 +0800'>2013-12-10</span></td><td>1</td><td><span class='deletions'>-3</span>/<span class='insertions'>+2</span></td></tr>
<tr><td class='commitgraph'>* </td><td><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/commit/devel/glib20-reference?id=6b7380cce9ce88555d9828a2165f3f0ec732f106'>- Fix plist</a></td><td>antoine</td><td><span title='2013-12-08 07:05:12 +0800'>2013-12-08</span></td><td>2</td><td><span class='deletions'>-10</span>/<span class='insertions'>+14</span></td></tr>
<tr><td class='commitgraph'>* </td><td><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/commit/devel/glib20-reference?id=8159014cc78f379bc2dd37a33cccefd446edd843'>Add NO_STAGE all over the place in preparation for the staging support (cat: ...</a></td><td>bapt</td><td><span title='2013-09-21 01:04:43 +0800'>2013-09-21</span></td><td>1</td><td><span class='deletions'>-0</span>/<span class='insertions'>+1</span></td></tr>
<tr><td class='commitgraph'>* </td><td><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/commit/devel/glib20-reference?id=102aee62b9b157db76c36377695adc601a065e4d'>Tell portscout to skip -reference ports. They are slave ports to begin with.</a></td><td>kwm</td><td><span title='2013-06-11 22:26:02 +0800'>2013-06-11</span></td><td>1</td><td><span class='deletions'>-0</span>/<span class='insertions'>+2</span></td></tr>
<tr><td class='commitgraph'>* </td><td><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/commit/devel/glib20-reference?id=6bccd1c3ab4db857dbb9b8ab7538a97ee43ef488'>Rework the references ports for glib20, gtk20 and gtk30 again to fix the</a></td><td>kwm</td><td><span title='2013-05-23 21:02:32 +0800'>2013-05-23</span></td><td>2</td><td><span class='deletions'>-12</span>/<span class='insertions'>+443</span></td></tr>
<tr><td class='commitgraph'>* </td><td><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/commit/devel/glib20-reference?id=3637d905285d43885c21c95ec2163eca5c4308a5'>Make PORTDOCS in the -reference framework overwriteable.</a></td><td>kwm</td><td><span title='2013-05-22 19:32:22 +0800'>2013-05-22</span></td><td>2</td><td><span class='deletions'>-1</span>/<span class='insertions'>+7</span></td></tr>
<tr><td class='commitgraph'>* </td><td><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/commit/devel/glib20-reference?id=f26a6622ffa0cc626381e436aa9007a7b28a1880'>Mark the -reference ports IGNORE when NOPORTDOCS is set.</a></td><td>kwm</td><td><span title='2010-11-21 21:47:54 +0800'>2010-11-21</span></td><td>1</td><td><span class='deletions'>-0</span>/<span class='insertions'>+4</span></td></tr>
<tr><td class='commitgraph'>* </td><td><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/commit/devel/glib20-reference?id=3d272740920a1868e8acfed76d6e4c67c331e101'>Presenting GNOME 2.32.1 for FreeBSD. The offical release notes for this</a></td><td>kwm</td><td><span title='2010-11-20 23:37:08 +0800'>2010-11-20</span></td><td>1</td><td><span class='deletions'>-2</span>/<span class='insertions'>+0</span></td></tr>
<tr><td class='commitgraph'>* </td><td><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/commit/devel/glib20-reference?id=1af20d9d71a5dcaa30978a44c9cc813dd4439bca'>Deprecate md5 in favour of sha256 checksums.  md5 checksums will no longer</a></td><td>erwin</td><td><span title='2010-10-29 05:00:21 +0800'>2010-10-29</span></td><td>1</td><td><span class='deletions'>-1</span>/<span class='insertions'>+1</span></td></tr>
<tr><td class='commitgraph'>* </td><td><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/commit/devel/glib20-reference?id=cb841b5af2c2edb3cd98d8fe60ecd444ff4e5e81'>Install the gio reference manual.</a></td><td>marcus</td><td><span title='2009-10-25 23:28:39 +0800'>2009-10-25</span></td><td>1</td><td><span class='deletions'>-2</span>/<span class='insertions'>+2</span></td></tr>