Don't bother parsing headers when we want to skip them
Speeds up body-only search
This commit is contained in:
parent
7aeffbd66c
commit
15bafe1779
3 changed files with 21 additions and 14 deletions
|
@ -1329,19 +1329,6 @@ void matcherlist_free(MatcherList *cond)
|
|||
g_free(cond);
|
||||
}
|
||||
|
||||
/*!
|
||||
*\brief Skip all headers in a message file
|
||||
*
|
||||
*\param fp Message file
|
||||
*/
|
||||
static void matcherlist_skip_headers(FILE *fp)
|
||||
{
|
||||
gchar *buf = NULL;
|
||||
|
||||
while (procheader_get_one_field(&buf, fp, NULL) != -1)
|
||||
g_free(buf);
|
||||
}
|
||||
|
||||
/*!
|
||||
*\brief Check if a header matches a matcher condition
|
||||
*
|
||||
|
@ -1848,7 +1835,7 @@ static gboolean matcherlist_match_file(MatcherList *matchers, MsgInfo *info,
|
|||
if (matcherlist_match_headers(matchers, fp))
|
||||
read_body = FALSE;
|
||||
} else {
|
||||
matcherlist_skip_headers(fp);
|
||||
procheader_skip_headers(fp);
|
||||
}
|
||||
|
||||
/* read the body */
|
||||
|
|
|
@ -83,6 +83,24 @@ static gint string_get_one_field(gchar **buf, char **str,
|
|||
TRUE);
|
||||
}
|
||||
|
||||
gboolean procheader_skip_headers(FILE *fp)
|
||||
{
|
||||
gchar *buf = g_malloc(BUFFSIZE);
|
||||
do {
|
||||
if (fgets_crlf(buf, BUFFSIZE - 1, fp) == NULL) {
|
||||
g_free(buf);
|
||||
return FALSE;
|
||||
}
|
||||
if (buf[0] == '\r' || buf[0] == '\n') {
|
||||
break;
|
||||
}
|
||||
} while (TRUE);
|
||||
g_free(buf);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
static char *string_getline(char *buf, size_t len, char **str)
|
||||
{
|
||||
gboolean is_cr = FALSE;
|
||||
|
|
|
@ -51,6 +51,8 @@ GPtrArray *procheader_get_header_array_asis (FILE *fp);
|
|||
void procheader_header_array_destroy (GPtrArray *harray);
|
||||
void procheader_header_free (Header *header);
|
||||
|
||||
gboolean procheader_skip_headers(FILE *fp);
|
||||
|
||||
void procheader_get_header_fields (FILE *fp,
|
||||
HeaderEntry hentry[]);
|
||||
MsgInfo *procheader_parse_file (const gchar *file,
|
||||
|
|
Loading…
Reference in a new issue