2011-05-20 20:30:04 +02:00
|
|
|
/* -*-mode: c; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-*/
|
|
|
|
|
2009-11-25 21:55:06 +01:00
|
|
|
/*
|
2013-03-30 10:32:07 +01:00
|
|
|
** Copyright (C) 2008-2013 Dirk-Jan C. Binnema <djcb@djcbsoftware.nl>
|
2009-11-25 21:55:06 +01:00
|
|
|
**
|
|
|
|
** 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 3 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
|
|
**
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include <string.h>
|
|
|
|
#include "mu-msg-fields.h"
|
|
|
|
|
2010-09-12 15:28:34 +02:00
|
|
|
/*
|
2010-11-20 13:41:21 +01:00
|
|
|
* note: the differences for our purposes between a xapian field and a
|
|
|
|
* term: - there is only a single value for some item in per document
|
|
|
|
* (msg), ie. one value containing the list of To: addresses - there
|
|
|
|
* can be multiple terms, each containing e.g. one of the To:
|
|
|
|
* addresses - searching uses terms, but to display some field, it
|
|
|
|
* must be in the value (at least when using MuMsgIter)
|
2010-09-12 15:28:34 +02:00
|
|
|
*/
|
2011-09-18 13:44:19 +02:00
|
|
|
enum _FieldFlags {
|
2011-05-20 20:30:04 +02:00
|
|
|
FLAG_GMIME = 1 << 0, /* field retrieved through
|
|
|
|
* gmime */
|
|
|
|
FLAG_XAPIAN_INDEX = 1 << 1, /* field is indexed in
|
2011-11-11 08:13:35 +01:00
|
|
|
* xapian (i.e., the text
|
|
|
|
* is processed */
|
2011-05-20 20:30:04 +02:00
|
|
|
FLAG_XAPIAN_TERM = 1 << 2, /* field stored as term in
|
2011-11-11 08:13:35 +01:00
|
|
|
* xapian (so it can be searched) */
|
2011-05-20 20:30:04 +02:00
|
|
|
FLAG_XAPIAN_VALUE = 1 << 3, /* field stored as value in
|
2011-11-11 08:13:35 +01:00
|
|
|
* xapian (so the literal
|
|
|
|
* value can be
|
|
|
|
* retrieved) */
|
2011-05-20 20:30:04 +02:00
|
|
|
FLAG_XAPIAN_CONTACT = 1 << 4, /* field contains one or more
|
|
|
|
* e-mail-addresses */
|
2013-05-12 23:03:06 +02:00
|
|
|
FLAG_XAPIAN_BOOLEAN = 1 << 5, /* use 'add_boolean_prefix'
|
2011-11-27 15:20:57 +01:00
|
|
|
* for Xapian queries;
|
|
|
|
* wildcards do NOT WORK
|
|
|
|
* for such fields */
|
2013-05-12 23:03:06 +02:00
|
|
|
FLAG_PREPROCESS = 1 << 6, /* field needs flattening for
|
2011-05-20 20:30:04 +02:00
|
|
|
* case/accents */
|
2013-05-12 23:03:06 +02:00
|
|
|
FLAG_DONT_CACHE = 1 << 7, /* don't cache this field in
|
2011-05-20 20:30:04 +02:00
|
|
|
* the MuMsg cache */
|
2013-05-12 23:03:06 +02:00
|
|
|
FLAG_RANGE_FIELD = 1 << 8 /* whether this is a range field */
|
2012-04-13 20:49:53 +02:00
|
|
|
|
2009-11-25 21:55:06 +01:00
|
|
|
};
|
2010-09-12 15:28:34 +02:00
|
|
|
typedef enum _FieldFlags FieldFlags;
|
2009-11-25 21:55:06 +01:00
|
|
|
|
2009-12-09 07:06:27 +01:00
|
|
|
/*
|
|
|
|
* this struct describes the fields of an e-mail
|
|
|
|
/*/
|
2009-11-25 21:55:06 +01:00
|
|
|
struct _MuMsgField {
|
2011-07-02 10:27:08 +02:00
|
|
|
MuMsgFieldId _id; /* the id of the field */
|
|
|
|
MuMsgFieldType _type; /* the type of the field */
|
|
|
|
const char *_name; /* the name of the field */
|
|
|
|
const char _shortcut; /* the shortcut for use in
|
|
|
|
* --fields and sorting */
|
2011-09-18 13:44:19 +02:00
|
|
|
const char _xprefix; /* the Xapian-prefix */
|
2011-07-02 10:27:08 +02:00
|
|
|
FieldFlags _flags; /* the flags that tells us
|
|
|
|
* what to do */
|
|
|
|
|
|
|
|
|
2009-11-25 21:55:06 +01:00
|
|
|
};
|
2010-11-20 13:41:21 +01:00
|
|
|
typedef struct _MuMsgField MuMsgField;
|
2009-11-25 21:55:06 +01:00
|
|
|
|
2010-09-12 15:28:34 +02:00
|
|
|
/* the name and shortcut fields must be lower case, or they might be
|
|
|
|
* misinterpreted by the query-preprocesser which turns queries into
|
|
|
|
* lowercase */
|
2009-11-25 21:55:06 +01:00
|
|
|
static const MuMsgField FIELD_DATA[] = {
|
2011-11-11 08:13:35 +01:00
|
|
|
|
2011-09-18 13:44:19 +02:00
|
|
|
{
|
2011-05-20 20:30:04 +02:00
|
|
|
MU_MSG_FIELD_ID_BCC,
|
|
|
|
MU_MSG_FIELD_TYPE_STRING,
|
|
|
|
"bcc" , 'h', 'H', /* 'hidden */
|
|
|
|
FLAG_GMIME | FLAG_XAPIAN_CONTACT |
|
2013-05-12 23:03:06 +02:00
|
|
|
FLAG_XAPIAN_VALUE | FLAG_PREPROCESS
|
2011-05-20 20:30:04 +02:00
|
|
|
},
|
2011-09-18 13:44:19 +02:00
|
|
|
|
|
|
|
{
|
2011-05-20 20:30:04 +02:00
|
|
|
MU_MSG_FIELD_ID_BODY_TEXT,
|
|
|
|
MU_MSG_FIELD_TYPE_STRING,
|
|
|
|
"body", 'b', 'B',
|
2013-05-12 23:03:06 +02:00
|
|
|
FLAG_GMIME | FLAG_XAPIAN_INDEX | FLAG_PREPROCESS |
|
2011-09-18 13:44:19 +02:00
|
|
|
FLAG_DONT_CACHE
|
2011-05-20 20:30:04 +02:00
|
|
|
},
|
2011-09-18 13:44:19 +02:00
|
|
|
|
|
|
|
{
|
2011-05-20 20:30:04 +02:00
|
|
|
MU_MSG_FIELD_ID_BODY_HTML,
|
|
|
|
MU_MSG_FIELD_TYPE_STRING,
|
2012-12-25 15:43:34 +01:00
|
|
|
"bodyhtml", 0, 0,
|
2011-09-18 13:44:19 +02:00
|
|
|
FLAG_GMIME | FLAG_DONT_CACHE
|
2011-05-20 20:30:04 +02:00
|
|
|
},
|
2011-09-18 13:44:19 +02:00
|
|
|
|
|
|
|
{
|
2011-05-20 20:30:04 +02:00
|
|
|
MU_MSG_FIELD_ID_CC,
|
|
|
|
MU_MSG_FIELD_TYPE_STRING,
|
|
|
|
"cc", 'c', 'C',
|
2013-05-12 23:03:06 +02:00
|
|
|
FLAG_GMIME | FLAG_XAPIAN_CONTACT | FLAG_XAPIAN_VALUE |
|
|
|
|
FLAG_PREPROCESS
|
2011-05-20 20:30:04 +02:00
|
|
|
},
|
2011-09-18 13:44:19 +02:00
|
|
|
|
|
|
|
{
|
|
|
|
MU_MSG_FIELD_ID_DATE,
|
2011-05-20 20:30:04 +02:00
|
|
|
MU_MSG_FIELD_TYPE_TIME_T,
|
|
|
|
"date", 'd', 'D',
|
|
|
|
FLAG_GMIME | FLAG_XAPIAN_TERM | FLAG_XAPIAN_VALUE |
|
2012-12-22 10:46:36 +01:00
|
|
|
FLAG_XAPIAN_BOOLEAN | FLAG_RANGE_FIELD
|
2011-05-20 20:30:04 +02:00
|
|
|
},
|
2011-09-18 13:44:19 +02:00
|
|
|
|
2011-12-01 20:23:13 +01:00
|
|
|
{
|
|
|
|
MU_MSG_FIELD_ID_EMBEDDED_TEXT,
|
|
|
|
MU_MSG_FIELD_TYPE_STRING,
|
|
|
|
"embed", 'e', 'E',
|
2013-05-12 23:03:06 +02:00
|
|
|
FLAG_GMIME | FLAG_XAPIAN_INDEX | FLAG_PREPROCESS |
|
2011-12-01 20:23:13 +01:00
|
|
|
FLAG_DONT_CACHE
|
|
|
|
},
|
|
|
|
|
2011-11-23 23:10:37 +01:00
|
|
|
{
|
|
|
|
MU_MSG_FIELD_ID_FILE,
|
|
|
|
MU_MSG_FIELD_TYPE_STRING,
|
|
|
|
"file" , 'j', 'J',
|
2013-05-12 23:03:06 +02:00
|
|
|
FLAG_GMIME | FLAG_XAPIAN_TERM | FLAG_PREPROCESS |
|
2012-12-22 10:46:36 +01:00
|
|
|
FLAG_DONT_CACHE
|
2011-11-23 23:10:37 +01:00
|
|
|
},
|
|
|
|
|
|
|
|
|
2011-09-18 13:44:19 +02:00
|
|
|
{
|
|
|
|
MU_MSG_FIELD_ID_FLAGS,
|
2011-05-20 20:30:04 +02:00
|
|
|
MU_MSG_FIELD_TYPE_INT,
|
|
|
|
"flag", 'g', 'G', /* flaGs */
|
2012-12-22 10:46:36 +01:00
|
|
|
FLAG_GMIME | FLAG_XAPIAN_TERM | FLAG_XAPIAN_VALUE
|
2011-05-20 20:30:04 +02:00
|
|
|
},
|
|
|
|
|
2011-09-18 13:44:19 +02:00
|
|
|
{
|
2011-05-20 20:30:04 +02:00
|
|
|
MU_MSG_FIELD_ID_FROM,
|
|
|
|
MU_MSG_FIELD_TYPE_STRING,
|
|
|
|
"from", 'f', 'F',
|
2013-05-12 23:03:06 +02:00
|
|
|
FLAG_GMIME | FLAG_XAPIAN_CONTACT | FLAG_XAPIAN_VALUE |
|
|
|
|
FLAG_PREPROCESS
|
2011-05-20 20:30:04 +02:00
|
|
|
},
|
|
|
|
|
2012-12-17 21:24:19 +01:00
|
|
|
|
2011-09-18 13:44:19 +02:00
|
|
|
{
|
2012-12-20 22:35:53 +01:00
|
|
|
MU_MSG_FIELD_ID_MAILDIR,
|
2011-05-20 20:30:04 +02:00
|
|
|
MU_MSG_FIELD_TYPE_STRING,
|
2012-12-20 22:35:53 +01:00
|
|
|
"maildir", 'm', 'M',
|
|
|
|
FLAG_GMIME | FLAG_XAPIAN_TERM | FLAG_XAPIAN_VALUE |
|
2013-05-12 23:03:06 +02:00
|
|
|
FLAG_PREPROCESS
|
2011-05-20 20:30:04 +02:00
|
|
|
},
|
|
|
|
|
2012-12-17 21:24:19 +01:00
|
|
|
|
2011-09-18 13:44:19 +02:00
|
|
|
{
|
2012-12-20 22:35:53 +01:00
|
|
|
MU_MSG_FIELD_ID_MAILING_LIST,
|
2011-05-20 20:30:04 +02:00
|
|
|
MU_MSG_FIELD_TYPE_STRING,
|
2013-03-17 11:20:10 +01:00
|
|
|
"list", 'v', 'V',
|
|
|
|
FLAG_GMIME | FLAG_XAPIAN_TERM | FLAG_XAPIAN_VALUE |
|
2013-05-12 23:03:06 +02:00
|
|
|
FLAG_PREPROCESS
|
2011-11-23 23:10:37 +01:00
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
MU_MSG_FIELD_ID_MIME,
|
|
|
|
MU_MSG_FIELD_TYPE_STRING,
|
|
|
|
"mime" , 'y', 'Y',
|
2013-05-12 23:03:06 +02:00
|
|
|
FLAG_XAPIAN_TERM | FLAG_PREPROCESS
|
2011-05-20 20:30:04 +02:00
|
|
|
},
|
2011-09-18 13:44:19 +02:00
|
|
|
|
2012-12-17 21:24:19 +01:00
|
|
|
|
|
|
|
{
|
|
|
|
MU_MSG_FIELD_ID_MSGID,
|
|
|
|
MU_MSG_FIELD_TYPE_STRING,
|
|
|
|
"msgid", 'i', 'I', /* 'i' for Id */
|
|
|
|
FLAG_GMIME | FLAG_XAPIAN_TERM | FLAG_XAPIAN_VALUE |
|
2013-05-12 23:03:06 +02:00
|
|
|
FLAG_PREPROCESS
|
2012-12-17 21:24:19 +01:00
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
MU_MSG_FIELD_ID_PATH,
|
|
|
|
MU_MSG_FIELD_TYPE_STRING,
|
|
|
|
"path", 'l', 'L', /* 'l' for location */
|
|
|
|
FLAG_GMIME | FLAG_XAPIAN_VALUE |
|
2013-05-12 23:03:06 +02:00
|
|
|
FLAG_XAPIAN_BOOLEAN | FLAG_PREPROCESS
|
2012-12-17 21:24:19 +01:00
|
|
|
},
|
|
|
|
|
|
|
|
|
2011-09-18 13:44:19 +02:00
|
|
|
{
|
2011-05-20 20:30:04 +02:00
|
|
|
MU_MSG_FIELD_ID_PRIO,
|
|
|
|
MU_MSG_FIELD_TYPE_INT,
|
2011-07-02 10:27:08 +02:00
|
|
|
"prio", 'p', 'P',
|
2012-12-22 10:46:36 +01:00
|
|
|
FLAG_GMIME | FLAG_XAPIAN_TERM | FLAG_XAPIAN_VALUE
|
2011-05-20 20:30:04 +02:00
|
|
|
},
|
|
|
|
|
2012-12-17 21:24:19 +01:00
|
|
|
|
|
|
|
{
|
|
|
|
MU_MSG_FIELD_ID_REFS,
|
|
|
|
MU_MSG_FIELD_TYPE_STRING_LIST,
|
|
|
|
"refs", 'r', 'R',
|
2012-12-22 10:46:36 +01:00
|
|
|
FLAG_GMIME | FLAG_XAPIAN_VALUE
|
2012-12-17 21:24:19 +01:00
|
|
|
},
|
|
|
|
|
|
|
|
|
2011-09-18 13:44:19 +02:00
|
|
|
{
|
2011-05-20 20:30:04 +02:00
|
|
|
MU_MSG_FIELD_ID_SIZE,
|
|
|
|
MU_MSG_FIELD_TYPE_BYTESIZE,
|
|
|
|
"size", 'z', 'Z', /* siZe */
|
|
|
|
FLAG_GMIME | FLAG_XAPIAN_TERM | FLAG_XAPIAN_VALUE |
|
2012-12-22 10:46:36 +01:00
|
|
|
FLAG_RANGE_FIELD
|
2011-05-20 20:30:04 +02:00
|
|
|
},
|
2011-09-18 13:44:19 +02:00
|
|
|
|
|
|
|
{
|
2011-05-20 20:30:04 +02:00
|
|
|
MU_MSG_FIELD_ID_SUBJECT,
|
|
|
|
MU_MSG_FIELD_TYPE_STRING,
|
|
|
|
"subject", 's', 'S',
|
|
|
|
FLAG_GMIME | FLAG_XAPIAN_INDEX | FLAG_XAPIAN_VALUE |
|
2013-05-12 23:03:06 +02:00
|
|
|
FLAG_XAPIAN_TERM | FLAG_PREPROCESS
|
2011-05-20 20:30:04 +02:00
|
|
|
},
|
2011-09-18 13:44:19 +02:00
|
|
|
|
|
|
|
{
|
2011-06-15 23:26:30 +02:00
|
|
|
MU_MSG_FIELD_ID_TAGS,
|
|
|
|
MU_MSG_FIELD_TYPE_STRING_LIST,
|
|
|
|
"tag", 'x', 'X',
|
2013-05-12 23:03:06 +02:00
|
|
|
FLAG_GMIME | FLAG_XAPIAN_TERM | FLAG_PREPROCESS |
|
2012-12-27 14:57:17 +01:00
|
|
|
FLAG_XAPIAN_VALUE
|
2011-11-11 08:13:35 +01:00
|
|
|
},
|
|
|
|
|
2012-12-25 15:43:34 +01:00
|
|
|
|
|
|
|
{ /* remember which thread this message is in */
|
|
|
|
MU_MSG_FIELD_ID_THREAD_ID,
|
|
|
|
MU_MSG_FIELD_TYPE_STRING,
|
|
|
|
"thread", 0, 'W',
|
|
|
|
FLAG_XAPIAN_TERM
|
|
|
|
},
|
|
|
|
|
2012-12-17 21:24:19 +01:00
|
|
|
{
|
|
|
|
MU_MSG_FIELD_ID_TO,
|
|
|
|
MU_MSG_FIELD_TYPE_STRING,
|
|
|
|
"to", 't', 'T',
|
2013-05-12 23:03:06 +02:00
|
|
|
FLAG_GMIME | FLAG_XAPIAN_CONTACT | FLAG_XAPIAN_VALUE |
|
|
|
|
FLAG_PREPROCESS
|
2012-12-17 21:24:19 +01:00
|
|
|
},
|
|
|
|
|
2011-11-11 08:13:35 +01:00
|
|
|
{ /* special, internal field, to get a unique key */
|
|
|
|
MU_MSG_FIELD_ID_UID,
|
|
|
|
MU_MSG_FIELD_TYPE_STRING,
|
|
|
|
"uid", 0, 'U',
|
2012-12-22 10:46:36 +01:00
|
|
|
FLAG_XAPIAN_TERM
|
2011-05-20 20:30:04 +02:00
|
|
|
}
|
2011-09-18 13:44:19 +02:00
|
|
|
|
|
|
|
/* note, mu-store also use the 'Q' internal prefix for its uids */
|
2009-11-25 21:55:06 +01:00
|
|
|
};
|
|
|
|
|
2010-11-20 13:41:21 +01:00
|
|
|
/* the MsgField data in an array, indexed by the MsgFieldId;
|
|
|
|
* this allows for O(1) access
|
|
|
|
*/
|
|
|
|
static MuMsgField* _msg_field_data[MU_MSG_FIELD_ID_NUM];
|
|
|
|
static const MuMsgField* mu_msg_field (MuMsgFieldId id)
|
|
|
|
{
|
2013-05-12 23:03:06 +02:00
|
|
|
static gboolean _initialized;
|
|
|
|
|
|
|
|
_initialized = FALSE;
|
2011-05-20 20:30:04 +02:00
|
|
|
|
|
|
|
/* initialize the array, but only once... */
|
|
|
|
if (G_UNLIKELY(!_initialized)) {
|
2011-09-18 13:44:19 +02:00
|
|
|
int i;
|
2011-05-20 20:30:04 +02:00
|
|
|
for (i = 0; i != G_N_ELEMENTS(FIELD_DATA); ++i)
|
|
|
|
_msg_field_data[FIELD_DATA[i]._id] =
|
|
|
|
(MuMsgField*)&FIELD_DATA[i];
|
|
|
|
_initialized = TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
return _msg_field_data[id];
|
2010-11-20 13:41:21 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2009-11-25 21:55:06 +01:00
|
|
|
void
|
2012-04-13 20:49:53 +02:00
|
|
|
mu_msg_field_foreach (MuMsgFieldForeachFunc func, gconstpointer data)
|
2009-11-25 21:55:06 +01:00
|
|
|
{
|
2011-05-20 20:30:04 +02:00
|
|
|
int i;
|
|
|
|
for (i = 0; i != MU_MSG_FIELD_ID_NUM; ++i)
|
|
|
|
func (i, data);
|
2009-11-25 21:55:06 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2010-11-20 13:41:21 +01:00
|
|
|
MuMsgFieldId
|
|
|
|
mu_msg_field_id_from_name (const char* str, gboolean err)
|
2009-11-25 21:55:06 +01:00
|
|
|
{
|
2011-05-20 20:30:04 +02:00
|
|
|
int i;
|
2009-12-08 23:03:14 +01:00
|
|
|
|
2011-05-20 20:30:04 +02:00
|
|
|
g_return_val_if_fail (str, MU_MSG_FIELD_ID_NONE);
|
2011-09-18 13:44:19 +02:00
|
|
|
|
2011-05-20 20:30:04 +02:00
|
|
|
for (i = 0; i != G_N_ELEMENTS(FIELD_DATA); ++i)
|
|
|
|
if (g_strcmp0(str, FIELD_DATA[i]._name) == 0)
|
|
|
|
return FIELD_DATA[i]._id;
|
2012-06-10 10:19:51 +02:00
|
|
|
if (err)
|
2011-05-20 20:30:04 +02:00
|
|
|
g_return_val_if_reached (MU_MSG_FIELD_ID_NONE);
|
2009-11-25 21:55:06 +01:00
|
|
|
|
2011-05-20 20:30:04 +02:00
|
|
|
return MU_MSG_FIELD_ID_NONE;
|
2009-11-25 21:55:06 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2010-11-20 13:41:21 +01:00
|
|
|
MuMsgFieldId
|
|
|
|
mu_msg_field_id_from_shortcut (char kar, gboolean err)
|
2009-11-25 21:55:06 +01:00
|
|
|
{
|
2011-05-20 20:30:04 +02:00
|
|
|
int i;
|
|
|
|
for (i = 0; i != G_N_ELEMENTS(FIELD_DATA); ++i)
|
|
|
|
if (kar == FIELD_DATA[i]._shortcut)
|
|
|
|
return FIELD_DATA[i]._id;
|
2009-11-25 21:55:06 +01:00
|
|
|
|
2011-05-20 20:30:04 +02:00
|
|
|
if (err)
|
|
|
|
g_return_val_if_reached (MU_MSG_FIELD_ID_NONE);
|
2009-11-25 21:55:06 +01:00
|
|
|
|
2011-05-20 20:30:04 +02:00
|
|
|
return MU_MSG_FIELD_ID_NONE;
|
2009-11-25 21:55:06 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
gboolean
|
2010-11-20 13:41:21 +01:00
|
|
|
mu_msg_field_gmime (MuMsgFieldId id)
|
2009-11-25 21:55:06 +01:00
|
|
|
{
|
2011-05-20 20:30:04 +02:00
|
|
|
g_return_val_if_fail (mu_msg_field_id_is_valid(id),FALSE);
|
|
|
|
return mu_msg_field(id)->_flags & FLAG_GMIME ? TRUE: FALSE;
|
2009-11-25 21:55:06 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
gboolean
|
2010-11-20 13:41:21 +01:00
|
|
|
mu_msg_field_xapian_index (MuMsgFieldId id)
|
2009-11-25 21:55:06 +01:00
|
|
|
{
|
2011-05-20 20:30:04 +02:00
|
|
|
g_return_val_if_fail (mu_msg_field_id_is_valid(id),FALSE);
|
|
|
|
return mu_msg_field(id)->_flags & FLAG_XAPIAN_INDEX ? TRUE: FALSE;
|
2009-11-25 21:55:06 +01:00
|
|
|
}
|
|
|
|
|
2010-02-08 20:20:11 +01:00
|
|
|
gboolean
|
2010-11-20 13:41:21 +01:00
|
|
|
mu_msg_field_xapian_value (MuMsgFieldId id)
|
2010-02-08 20:20:11 +01:00
|
|
|
{
|
2011-05-20 20:30:04 +02:00
|
|
|
g_return_val_if_fail (mu_msg_field_id_is_valid(id),FALSE);
|
|
|
|
return mu_msg_field(id)->_flags & FLAG_XAPIAN_VALUE ? TRUE: FALSE;
|
2010-02-08 20:20:11 +01:00
|
|
|
}
|
2009-11-25 21:55:06 +01:00
|
|
|
|
|
|
|
gboolean
|
2010-11-20 13:41:21 +01:00
|
|
|
mu_msg_field_xapian_term (MuMsgFieldId id)
|
2009-11-25 21:55:06 +01:00
|
|
|
{
|
2011-05-20 20:30:04 +02:00
|
|
|
g_return_val_if_fail (mu_msg_field_id_is_valid(id),FALSE);
|
|
|
|
return mu_msg_field(id)->_flags & FLAG_XAPIAN_TERM ? TRUE: FALSE;
|
2011-05-14 17:06:33 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2012-04-13 20:49:53 +02:00
|
|
|
gboolean
|
|
|
|
mu_msg_field_is_range_field (MuMsgFieldId id)
|
|
|
|
{
|
|
|
|
g_return_val_if_fail (mu_msg_field_id_is_valid(id),FALSE);
|
|
|
|
return mu_msg_field(id)->_flags & FLAG_RANGE_FIELD ? TRUE: FALSE;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-05-20 20:30:04 +02:00
|
|
|
gboolean
|
|
|
|
mu_msg_field_uses_boolean_prefix (MuMsgFieldId id)
|
|
|
|
{
|
|
|
|
g_return_val_if_fail (mu_msg_field_id_is_valid(id),FALSE);
|
|
|
|
return mu_msg_field(id)->_flags & FLAG_XAPIAN_BOOLEAN?TRUE:FALSE;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2011-05-14 17:06:33 +02:00
|
|
|
|
|
|
|
gboolean
|
|
|
|
mu_msg_field_is_cacheable (MuMsgFieldId id)
|
|
|
|
{
|
2011-05-20 20:30:04 +02:00
|
|
|
g_return_val_if_fail (mu_msg_field_id_is_valid(id),FALSE);
|
|
|
|
/* note the FALSE: TRUE */
|
|
|
|
return mu_msg_field(id)->_flags & FLAG_DONT_CACHE ? FALSE : TRUE;
|
2009-11-25 21:55:06 +01:00
|
|
|
}
|
|
|
|
|
2010-09-12 15:28:34 +02:00
|
|
|
gboolean
|
2010-11-20 13:41:21 +01:00
|
|
|
mu_msg_field_xapian_contact (MuMsgFieldId id)
|
2010-09-12 15:28:34 +02:00
|
|
|
{
|
2011-05-20 20:30:04 +02:00
|
|
|
g_return_val_if_fail (mu_msg_field_id_is_valid(id),FALSE);
|
|
|
|
return mu_msg_field(id)->_flags & FLAG_XAPIAN_CONTACT ? TRUE: FALSE;
|
2010-09-12 15:28:34 +02:00
|
|
|
}
|
2010-02-08 20:20:11 +01:00
|
|
|
|
|
|
|
|
2010-11-29 20:18:37 +01:00
|
|
|
gboolean
|
2013-05-12 23:03:06 +02:00
|
|
|
mu_msg_field_preprocess (MuMsgFieldId id)
|
2010-11-29 20:18:37 +01:00
|
|
|
{
|
2011-05-20 20:30:04 +02:00
|
|
|
g_return_val_if_fail (mu_msg_field_id_is_valid(id),FALSE);
|
2013-05-12 23:03:06 +02:00
|
|
|
return mu_msg_field(id)->_flags & FLAG_PREPROCESS ? TRUE: FALSE;
|
2010-11-29 20:18:37 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2009-11-25 21:55:06 +01:00
|
|
|
gboolean
|
2010-11-20 13:41:21 +01:00
|
|
|
mu_msg_field_is_numeric (MuMsgFieldId mfid)
|
2009-11-25 21:55:06 +01:00
|
|
|
{
|
2011-05-20 20:30:04 +02:00
|
|
|
MuMsgFieldType type;
|
2011-09-18 13:44:19 +02:00
|
|
|
|
2011-05-20 20:30:04 +02:00
|
|
|
g_return_val_if_fail (mu_msg_field_id_is_valid(mfid),FALSE);
|
2010-11-20 16:50:35 +01:00
|
|
|
|
2011-05-20 20:30:04 +02:00
|
|
|
type = mu_msg_field_type (mfid);
|
2011-09-18 13:44:19 +02:00
|
|
|
|
2011-05-20 20:30:04 +02:00
|
|
|
return type == MU_MSG_FIELD_TYPE_BYTESIZE ||
|
|
|
|
type == MU_MSG_FIELD_TYPE_TIME_T ||
|
|
|
|
type == MU_MSG_FIELD_TYPE_INT;
|
2009-11-25 21:55:06 +01:00
|
|
|
}
|
|
|
|
|
2011-09-18 13:44:19 +02:00
|
|
|
const char*
|
2010-11-20 13:41:21 +01:00
|
|
|
mu_msg_field_name (MuMsgFieldId id)
|
2009-11-25 21:55:06 +01:00
|
|
|
{
|
2011-05-20 20:30:04 +02:00
|
|
|
g_return_val_if_fail (mu_msg_field_id_is_valid(id),NULL);
|
|
|
|
return mu_msg_field(id)->_name;
|
2009-11-25 21:55:06 +01:00
|
|
|
}
|
|
|
|
|
2011-07-02 10:27:08 +02:00
|
|
|
|
2010-11-20 13:41:21 +01:00
|
|
|
char
|
|
|
|
mu_msg_field_shortcut (MuMsgFieldId id)
|
2011-09-18 13:44:19 +02:00
|
|
|
{
|
2011-05-20 20:30:04 +02:00
|
|
|
g_return_val_if_fail (mu_msg_field_id_is_valid(id),0);
|
|
|
|
return mu_msg_field(id)->_shortcut;
|
2009-11-25 21:55:06 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2010-11-20 13:41:21 +01:00
|
|
|
char
|
|
|
|
mu_msg_field_xapian_prefix (MuMsgFieldId id)
|
2009-11-25 21:55:06 +01:00
|
|
|
{
|
2011-05-20 20:30:04 +02:00
|
|
|
g_return_val_if_fail (mu_msg_field_id_is_valid(id),0);
|
|
|
|
return mu_msg_field(id)->_xprefix;
|
2009-11-25 21:55:06 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2010-11-29 20:18:37 +01:00
|
|
|
|
|
|
|
|
2011-09-18 13:44:19 +02:00
|
|
|
MuMsgFieldType
|
2010-11-20 13:41:21 +01:00
|
|
|
mu_msg_field_type (MuMsgFieldId id)
|
2009-11-25 21:55:06 +01:00
|
|
|
{
|
2011-05-20 20:30:04 +02:00
|
|
|
g_return_val_if_fail (mu_msg_field_id_is_valid(id),
|
|
|
|
MU_MSG_FIELD_TYPE_NONE);
|
|
|
|
return mu_msg_field(id)->_type;
|
2009-11-25 21:55:06 +01:00
|
|
|
}
|