index-sort.c revision 00d43d5087b555c5c9c5667942ddf41d1b4ecb0f
/* Copyright (c) 2006-2009 Dovecot authors, see the included COPYING file */
#include "lib.h"
#include "array.h"
#include "str.h"
#include "unichar.h"
#include "message-address.h"
#include "message-header-decode.h"
#include "imap-base-subject.h"
#include "index-storage.h"
#include "index-sort-private.h"
#include <stdlib.h>
struct mail_sort_node_date {
};
struct mail_sort_node_size {
};
struct mail_sort_node_float {
float num;
};
struct sort_cmp_context {
struct mail_search_sort_program *program;
bool reverse;
};
static struct sort_cmp_context static_node_cmp_context;
static void
{
struct mail_sort_node_date *node;
}
static void
{
struct mail_sort_node_date *node;
}
}
static void
{
struct mail_sort_node_size *node;
}
{
const char *str;
return 0;
else
}
static void
{
struct mail_sort_node_float *node;
}
{
}
const struct mail_sort_node_date *n2)
{
}
static void
{
}
const struct mail_sort_node_size *n2)
{
}
static void
{
}
const struct mail_sort_node_float *n2)
{
}
static void
{
}
{
}
{
return FALSE;
return TRUE;
}
struct mail_search_sort_program *
const enum mail_sort_type *sort_program)
{
struct mail_search_sort_program *program;
unsigned int i;
return NULL;
/* we support internal sorting by the primary condition */
program->t = t;
for (i = 0; i < MAX_SORT_PROGRAM_SIZE; i++) {
if (sort_program[i] == MAIL_SORT_END)
break;
}
if (i == MAX_SORT_PROGRAM_SIZE)
i_panic("index_sort_program_init(): Invalid sort program");
case MAIL_SORT_ARRIVAL:
case MAIL_SORT_DATE: {
if ((program->sort_program[0] &
else
break;
}
case MAIL_SORT_SIZE: {
break;
}
case MAIL_SORT_CC:
case MAIL_SORT_FROM:
case MAIL_SORT_SUBJECT:
case MAIL_SORT_TO:
case MAIL_SORT_DISPLAYFROM:
case MAIL_SORT_DISPLAYTO:
break;
case MAIL_SORT_SEARCH_SCORE: {
break;
}
default:
i_unreached();
}
return program;
}
{
}
static int
struct message_address **addr_r)
{
const char *str;
int ret;
return ret;
}
(const unsigned char *)str,
return 0;
}
static int
{
struct message_address *addr;
*mailbox_r = "";
return -1;
}
return 0;
}
static int
{
struct message_address *addr;
*name_r = "";
return -1;
return 0;
(void)message_header_decode_utf8(
return 0;
}
}
return 0;
}
{
const char *str;
int ret;
str_truncate(dest, 0);
switch (sort_type & MAIL_SORT_MASK) {
case MAIL_SORT_SUBJECT:
return ret;
return 0;
case MAIL_SORT_CC:
break;
case MAIL_SORT_FROM:
break;
case MAIL_SORT_TO:
break;
case MAIL_SORT_DISPLAYFROM:
break;
case MAIL_SORT_DISPLAYTO:
break;
default:
i_unreached();
}
return ret;
}
const enum mail_sort_type *sort_program,
{
enum mail_sort_type sort_type;
int ret = 0;
switch (sort_type) {
case MAIL_SORT_CC:
case MAIL_SORT_FROM:
case MAIL_SORT_TO:
case MAIL_SORT_SUBJECT:
case MAIL_SORT_DISPLAYFROM:
case MAIL_SORT_DISPLAYTO:
T_BEGIN {
} T_END;
break;
case MAIL_SORT_ARRIVAL:
time1 = 0;
time1 = 0;
break;
case MAIL_SORT_DATE:
time1 = 0;
else if (time1 == 0) {
time1 = 0;
}
time2 = 0;
else if (time2 == 0) {
time2 = 0;
}
break;
case MAIL_SORT_SIZE:
size1 = 0;
size2 = 0;
break;
case MAIL_SORT_SEARCH_SCORE:
break;
case MAIL_SORT_END:
case MAIL_SORT_MASK:
case MAIL_SORT_FLAG_REVERSE:
i_unreached();
}
if (ret == 0) {
}
if ((*sort_program & MAIL_SORT_FLAG_REVERSE) != 0)
return ret;
}