Skip to content

Commit

Permalink
fts: Code cleanup - moved fts_header_has_language() to a global function
Browse files Browse the repository at this point in the history
  • Loading branch information
sirainen committed Feb 16, 2016
1 parent 7fbc81a commit 4ac43ad
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 20 deletions.
2 changes: 2 additions & 0 deletions src/plugins/fts/fts-api-private.h
Expand Up @@ -122,6 +122,8 @@ int fts_index_have_compatible_settings(struct mailbox_list *list,
/* Returns TRUE if FTS backend should index the header for optimizing
separate lookups */
bool fts_header_want_indexed(const char *hdr_name);
/* Returns TRUE if header's values should be considered to have a language. */
bool fts_header_has_language(const char *hdr_name);

int fts_mailbox_get_guid(struct mailbox *box, const char **guid_r);

Expand Down
19 changes: 19 additions & 0 deletions src/plugins/fts/fts-api.c
Expand Up @@ -491,6 +491,25 @@ bool fts_header_want_indexed(const char *hdr_name)
return FALSE;
}

bool fts_header_has_language(const char *hdr_name)
{
/* FIXME: should email address headers be detected as different
languages? That mainly contains people's names.. */
/*if (message_header_is_address(hdr_name))
return TRUE;*/

/* Subject definitely contains language-specific data that can be
detected. Comment and Keywords headers also could contain, although
just about nobody uses those headers.
For now we assume that other headers contain non-language specific
data that we don't want to filter in special ways. For example
it is good to be able to search for Message-IDs. */
return strcasecmp(hdr_name, "Subject") == 0 ||
strcasecmp(hdr_name, "Comments") == 0 ||
strcasecmp(hdr_name, "Keywords") == 0;
}

int fts_mailbox_get_guid(struct mailbox *box, const char **guid_r)
{
struct mailbox_metadata metadata;
Expand Down
21 changes: 1 addition & 20 deletions src/plugins/fts/fts-build-mail.c
Expand Up @@ -67,25 +67,6 @@ fts_build_parse_content_disposition(struct fts_mail_build_context *ctx,
i_strndup(hdr->full_value, hdr->full_value_len);
}

static bool header_has_language(const char *name)
{
/* FIXME: should email address headers be detected as different
languages? That mainly contains people's names.. */
/*if (message_header_is_address(name))
return TRUE;*/

/* Subject definitely contains language-specific data that can be
detected. Comment and Keywords headers also could contain, although
just about nobody uses those headers.
For now we assume that other headers contain non-language specific
data that we don't want to filter in special ways. For example
it is good to be able to search for Message-IDs. */
return strcasecmp(name, "Subject") == 0 ||
strcasecmp(name, "Comments") == 0 ||
strcasecmp(name, "Keywords") == 0;
}

static void fts_parse_mail_header(struct fts_mail_build_context *ctx,
const struct message_block *raw_block)
{
Expand Down Expand Up @@ -157,7 +138,7 @@ fts_build_tokenized_hdr_update_lang(struct fts_mail_build_context *ctx,
human languages, so we have a list of some hardcoded header names
and we'll also assume that if there's any 8bit content it's a human
language. */
if (header_has_language(hdr->name) ||
if (fts_header_has_language(hdr->name) ||
data_has_8bit(hdr->full_value, hdr->full_value_len))
ctx->cur_user_lang = NULL;
else {
Expand Down

0 comments on commit 4ac43ad

Please sign in to comment.