doveadm-mail-fetch.c revision c8ff6ff3a9b76f12b0e8269ca7bdd62d895f476b
/* Copyright (c) 2010 Dovecot authors, see the included COPYING file */
#include "lib.h"
#include "array.h"
#include "istream.h"
#include "ostream.h"
#include "base64.h"
#include "randgen.h"
#include "str.h"
#include "message-size.h"
#include "imap-util.h"
#include "mail-storage.h"
#include "mail-search.h"
#include "doveadm-mail.h"
#include "doveadm-mail-list-iter.h"
#include "doveadm-mail-iter.h"
#include <stdio.h>
struct fetch_cmd_context {
struct doveadm_mail_cmd_context ctx;
struct mail_search_args *search_args;
const char *prefix;
bool print_field_prefix;
};
{
const char *value;
return -1;
return 0;
}
{
return -1;
return 0;
}
{
return 0;
}
{
return 0;
}
{
const char *value;
return -1;
return 0;
}
{
return 0;
}
{
}
{
struct message_size hdr_size;
int ret = 0;
return -1;
if (ctx->print_field_prefix)
while (!i_stream_is_eof(input)) {
i_fatal("write(stdout) failed: %m");
}
if (input->stream_errno != 0) {
i_error("read() failed: %m");
ret = -1;
}
return ret;
}
{
struct message_size hdr_size;
int ret = 0;
return -1;
if (ctx->print_field_prefix)
while (!i_stream_is_eof(input)) {
i_fatal("write(stdout) failed: %m");
}
if (input->stream_errno != 0) {
i_error("read() failed: %m");
ret = -1;
}
return ret;
}
{
int ret = 0;
return -1;
if (ctx->print_field_prefix)
while (!i_stream_is_eof(input)) {
i_fatal("write(stdout) failed: %m");
}
if (input->stream_errno != 0) {
i_error("read() failed: %m");
ret = -1;
}
return ret;
}
{
return -1;
return 0;
}
{
return -1;
return 0;
}
{
time_t t;
return -1;
return 0;
}
{
time_t t;
int tz;
char chr;
return -1;
return 0;
}
{
time_t t;
return -1;
return 0;
}
{
const char *value;
return -1;
return 0;
}
{
const char *value;
return -1;
return 0;
}
{
const char *value;
return -1;
return 0;
}
struct fetch_field {
const char *name;
};
static const struct fetch_field fetch_fields[] = {
{ "mailbox", 0, fetch_mailbox },
{ "mailbox-guid", 0, fetch_mailbox_guid },
{ "seq", 0, fetch_seq },
{ "uid", 0, fetch_uid },
{ "guid", 0, fetch_guid },
{ "text", MAIL_FETCH_STREAM_HEADER |
};
{
unsigned int i;
for (i = 0; i < N_ELEMENTS(fetch_fields); i++) {
return &fetch_fields[i];
}
return NULL;
}
static void print_fetch_fields(void)
{
unsigned int i;
}
{
const struct fetch_field *field;
}
}
}
{
const struct fetch_field *field;
if (ctx->print_field_prefix)
struct mail_storage *storage =
i_error("fetch(%s) failed for box=%s uid=%u: %s",
}
}
}
static int
{
struct doveadm_mail_iter *iter;
struct mailbox_transaction_context *trans;
return -1;
}
return doveadm_mail_iter_deinit(&iter);
}
{
struct mail_search_arg *arg;
unsigned int count;
case SEARCH_MAILBOX:
case SEARCH_MAILBOX_GUID:
have_mailbox = TRUE;
break;
case SEARCH_SEQSET:
case SEARCH_UIDSET:
break;
default:
break;
}
}
return have_mailbox && have_msg;
}
static void
{
const enum mailbox_list_iter_flags iter_flags =
struct doveadm_mail_list_iter *iter;
const struct mailbox_info *info;
} T_END;
}
{
}
const char *const args[])
{
const char *fetch_fields = args[0];
unsigned char prefix_buf[9];
doveadm_mail_help_name("fetch");
else {
}
}
static struct doveadm_mail_cmd_context *cmd_fetch_alloc(void)
{
struct fetch_cmd_context *ctx;
}
struct doveadm_mail_cmd cmd_fetch = {
};