Viewing file:
searchinfo.h (2.84 KB) -rw-rw-rw-Select action/file-type:

(
+) |

(
+) |

(
+) |
Code (
+) |
Session (
+) |

(
+) |
SDB (
+) |

(
+) |

(
+) |

(
+) |

(
+) |

(
+) |
#ifndef searchinfo_h
#define searchinfo_h
#include "maildir/maildirsearch.h"
/*
** Copyright 1998 - 2002 Double Precision, Inc.
** See COPYING for distribution information.
*/
/* Search keys */
typedef enum {
search_messageset,
search_all,
search_msgflag, /* Includes ANSWERED DELETED DRAFT FLAGGED RECENT SEEN */
search_msgkeyword, /* KEYWORD */
search_not, /* Logical NOT, used to implement UNANSWERED
UNDELETED UNDRAFT UNFLAGGED UNKEYWORD UNSEEN, etc... */
/* NOTE: NEW gets parsed as ( RECENT UNSEEN ) OLD gets parsed as
NOT RECENT */
search_and,
search_or,
search_header, /* Also used to implement BCC, CC, FROM, TO, SUBJECT */
search_before,
search_body,
search_larger,
search_on,
search_sentbefore,
search_senton,
search_sentsince,
search_since,
search_smaller,
search_text,
search_uid,
/*
** search_orderedsubj is a dummy node that's allocated in order to
** implement an ORDEREDSUBJ THREAD/SORT. as points to the stripped
** subject from the message.
*/
search_orderedsubj,
/*
** search_references? are dummy nodes that are allocated in order to
** implement a REFERENCES THREAD.
*/
search_references1, /* References: and In-Reply-To: header */
search_references2, /* Date: header */
search_references3, /* Subject: header */
search_references4, /* Message-ID: header */
/*
** And the following dummies are used for similar purposes for the
** SORT command.
*/
search_arrival,
search_cc,
search_date,
search_from,
search_reverse,
search_size,
search_to
} search_type;
/* This structure is used when doing content searching */
/* A SEARCH request gets parsed into the following structure */
struct searchinfo {
struct searchinfo *next; /* Link list of all searchinfos */
struct searchinfo *a, *b; /* Nested search requests */
search_type type;
char *as, *bs, *cs; /* As needed */
const struct unicode_info *bs_charset;
/* search_text: text string in orig charset is as, text string in
bs_charset charset is in bs */
int value; /* When evaluating: 0 - false, 1 - true, -1 - unknown */
/* Not used in AND, OR, and NOT nodes */
struct maildir_searchengine sei; /* Used when searching */
struct libmail_keywordEntry *ke;
} ;
void free_search(struct searchinfo *);
struct searchinfo *alloc_search(struct searchinfo **);
struct searchinfo *alloc_parsesearch(struct searchinfo **);
struct searchinfo *alloc_searchextra(struct searchinfo *,
struct searchinfo **, search_type);
void debug_search(struct searchinfo *);
struct unicode_info;
void dosearch(struct searchinfo *, struct searchinfo *,
const char *, int);
void search_internal(struct searchinfo *, struct searchinfo *,
const char *,
int, void (*)(struct searchinfo *,
struct searchinfo *, int,
unsigned long, void *), void *);
void search_set_charset_conv(struct searchinfo *, const char *);
#endif