Speeds up body-only search
-/*!
- *\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
*
/*!
*\brief Check if a header matches a matcher condition
*
if (matcherlist_match_headers(matchers, fp))
read_body = FALSE;
} else {
if (matcherlist_match_headers(matchers, fp))
read_body = FALSE;
} else {
- matcherlist_skip_headers(fp);
+ procheader_skip_headers(fp);
+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;
static char *string_getline(char *buf, size_t len, char **str)
{
gboolean is_cr = FALSE;
void procheader_header_array_destroy (GPtrArray *harray);
void procheader_header_free (Header *header);
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,
void procheader_get_header_fields (FILE *fp,
HeaderEntry hentry[]);
MsgInfo *procheader_parse_file (const gchar *file,