/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */

#include <camel.h>
#include <e-util/e-setup.h>

static char *
auth_callback (char *prompt, gboolean secret, CamelService *service,
	       char *item, CamelException *ex)
{
	char buf[80];

	printf ("%s\n", prompt);
	if (secret)
		printf ("(Warning: your input will be displayed)\n");
	if (fgets (buf, sizeof (buf), stdin) == NULL) {
		camel_exception_set (ex, CAMEL_EXCEPTION_USER_CANCEL,
				     "User cancelled input.");
		return NULL;
	}
	return g_strdup (buf);
}

extern char *evolution_folders_dir;

int main (int argc, char **argv)
{
	CamelSession *session;
	CamelException *ex;
	CamelStore *store, *outstore;
	CamelFolder *folder, *outfolder;
	int nmsgs, i;
	CamelMimeMessage *msg;
	char *url;
	gboolean delete = FALSE;

	gtk_init (&argc, &argv);
	camel_init ();

	if (argc == 3) {
		if (!strcmp (argv[1], "--delete") ||
		    !strcmp (argv[1], "-d")) {
			delete = TRUE;
			argc--;
			argv++;
		}
	}
	if (argc != 2) {
		fprintf (stderr, "Usage: test-movemail [--delete] url\n");
		exit (1);
	}
	e_setup_base_dir ();
	session = camel_session_new (auth_callback);

	ex = camel_exception_new ();
	store = camel_session_get_store (session, argv[1], ex);
	if (!store) {
		fprintf(stderr, "Could not open store %s:\n%s\n", argv[1],
			camel_exception_get_description (ex));
		exit (1);
	}
	camel_service_connect_with_url (CAMEL_SERVICE (store), argv[1], ex);
	if (camel_exception_get_id (ex) != CAMEL_EXCEPTION_NONE) {
		printf ("Couldn't connect to %s:\n%s\n", argv[1],
			camel_exception_get_description (ex));
		exit (1);
	}

	folder = camel_store_get_folder (store, "inbox", ex);
	if (!folder) {
		fprintf(stderr, "Could not get inbox:\n%s\n",
			camel_exception_get_description (ex));
		exit (1);
	}
	camel_folder_open (folder, FOLDER_OPEN_READ, ex);
	if (camel_exception_get_id (ex) != CAMEL_EXCEPTION_NONE) {
		printf ("Couldn't open folder: %s\n",
			camel_exception_get_description (ex));
		exit (1);
	}

	nmsgs = camel_folder_get_message_count (folder, ex);
	if (camel_exception_get_id (ex) != CAMEL_EXCEPTION_NONE) {
		printf ("Couldn't get message count: %s\n",
			camel_exception_get_description (ex));
		exit (1);
	}
	printf ("Inbox contains %d messages.\n", nmsgs);

#ifdef DISPLAY_ONLY
	stdout_stream = camel_stream_fs_new_with_fd (1);
#else
	url = g_strdup_printf ("mbox://%s", evolution_folders_dir);
	outstore = camel_session_get_store (session, url, ex);
	g_free (url);
	if (camel_exception_get_id (ex) != CAMEL_EXCEPTION_NONE) {
		printf ("Couldn't open output store: %s\n",
			camel_exception_get_description (ex));
		exit (1);
	}
	outfolder = camel_store_get_folder (outstore, "inbox", ex);
	if (camel_exception_get_id (ex) != CAMEL_EXCEPTION_NONE) {
		printf ("Couldn't make output folder: %s\n",
			camel_exception_get_description (ex));
		exit (1);
	}
	camel_folder_open (outfolder, FOLDER_OPEN_WRITE, ex);
	if (camel_exception_get_id (ex) != CAMEL_EXCEPTION_NONE) {
		printf ("Couldn't open output folder: %s\n",
			camel_exception_get_description (ex));
		exit (1);
	}
#endif

	for (i = 1; i <= nmsgs; i++) {
		msg = camel_folder_get_message_by_number (folder, i, ex);
		if (camel_exception_get_id (ex) != CAMEL_EXCEPTION_NONE) {
			printf ("Couldn't get message: %s\n",
				camel_exception_get_description (ex));
			exit (1);
		}

#ifdef DISPLAY_ONLY
		camel_data_wrapper_write_to_stream (CAMEL_DATA_WRAPPER (msg),
						    stdout_stream);
#else
		camel_folder_append_message (outfolder, msg, ex);
		if (camel_exception_get_id (ex) != CAMEL_EXCEPTION_NONE) {
			printf ("Couldn't write message: %s\n",
				camel_exception_get_description (ex));
			exit (1);
		}

		if (delete) {
			camel_folder_delete_message_by_number (folder, i, ex);
			if (camel_exception_get_id (ex) !=
			    CAMEL_EXCEPTION_NONE) {
				printf ("Couldn't delete message: %s\n",
					camel_exception_get_description (ex));
				exit (1);
			}
		}
#endif
	}

#ifndef DISPLAY_ONLY
	camel_folder_close (outfolder, FALSE, ex);
#endif
	camel_folder_close (folder, TRUE, ex);

	camel_service_disconnect (CAMEL_SERVICE (store), ex);
	if (camel_exception_get_id (ex) != CAMEL_EXCEPTION_NONE) {
		printf ("Couldn't disconnect: %s\n",
			camel_exception_get_description (ex));
		exit (1);
	}

	return 0;
}

void
gratuitous_dependency_generator()
{
	xmlSetProp();
}
/option>
<option value='gstreamer-1.16'>gstreamer-1.16</option>
<option value='gstreamer0.10-removal'>gstreamer0.10-removal</option>
<option value='main'>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/?h=gnome-3.26'>about</a><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/?h=gnome-3.26'>summary</a><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/refs/?h=gnome-3.26'>refs</a><a class='active' href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/log/devel/gecode/files?h=gnome-3.26'>log</a><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/tree/devel/gecode/files?h=gnome-3.26'>tree</a><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/commit/devel/gecode/files?h=gnome-3.26'>commit</a><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/diff/devel/gecode/files?h=gnome-3.26'>diff</a><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/stats/devel/gecode/files?h=gnome-3.26'>stats</a></td><td class='form'><form class='right' method='get' action='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/log/devel/gecode/files'>
<input type='hidden' name='h' value='gnome-3.26'/><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/?h=gnome-3.26'>root</a>/<a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/log/devel?h=gnome-3.26'>devel</a>/<a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/log/devel/gecode?h=gnome-3.26'>gecode</a>/<a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/log/devel/gecode/files?h=gnome-3.26'>files</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/gecode/files?h=gnome-3.26&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>