# include "config.h"
#endif
+#include <string.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <stdarg.h>
+
#include <lib-lib/mem.h>
#include <lib-lib/ascii.h>
#include <lib-lib/str.h>
#include <lib-ui/enter.h>
#include "mutt.h"
+#include "alias.h"
#include "handler.h"
#include "mx.h"
#include "keymap.h"
#include <imap/imap.h>
-#include <string.h>
-#include <stdlib.h>
-#include <ctype.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <stdarg.h>
-
#include <lib-crypt/crypt.h>
static int eat_regexp (pattern_t * pat, BUFFER *, BUFFER *);
int tag; /* character used to represent this op */
int op; /* operation to perform */
int class;
- int (*eat_arg) (pattern_t *, BUFFER *, BUFFER *);
+ int (*eat_arg)(pattern_t *, BUFFER *, BUFFER *);
} Flags[] = {
- {
- 'A', M_ALL, 0, NULL}, {
- 'b', M_BODY, M_FULL_MSG, eat_regexp}, {
- 'B', M_WHOLE_MSG, M_FULL_MSG, eat_regexp}, {
- 'c', M_CC, 0, eat_regexp}, {
- 'C', M_RECIPIENT, 0, eat_regexp}, {
- 'd', M_DATE, 0, eat_date}, {
- 'D', M_DELETED, 0, NULL}, {
- 'e', M_SENDER, 0, eat_regexp}, {
- 'E', M_EXPIRED, 0, NULL}, {
- 'f', M_FROM, 0, eat_regexp}, {
- 'F', M_FLAG, 0, NULL}, {
- 'g', M_CRYPT_SIGN, 0, NULL}, {
- 'G', M_CRYPT_ENCRYPT, 0, NULL}, {
- 'h', M_HEADER, M_FULL_MSG, eat_regexp}, {
- 'H', M_HORMEL, 0, eat_regexp}, {
- 'i', M_ID, 0, eat_regexp}, {
- 'k', M_PGP_KEY, 0, NULL}, {
- 'L', M_ADDRESS, 0, eat_regexp}, {
- 'l', M_LIST, 0, NULL}, {
- 'm', M_MESSAGE, 0, eat_range}, {
- 'M', M_MULTIPART, 0, NULL}, {
- 'n', M_SCORE, 0, eat_range}, {
- 'N', M_NEW, 0, NULL}, {
- 'O', M_OLD, 0, NULL}, {
- 'p', M_PERSONAL_RECIP, 0, NULL}, {
- 'P', M_PERSONAL_FROM, 0, NULL}, {
- 'Q', M_REPLIED, 0, NULL}, {
- 'R', M_READ, 0, NULL}, {
- 'r', M_DATE_RECEIVED, 0, eat_date}, {
- 's', M_SUBJECT, 0, eat_regexp}, {
- 'S', M_SUPERSEDED, 0, NULL}, {
- 'T', M_TAG, 0, NULL}, {
- 't', M_TO, 0, eat_regexp}, {
- 'U', M_UNREAD, 0, NULL}, {
- 'u', M_SUBSCRIBED_LIST, 0, NULL}, {
- 'v', M_COLLAPSED, 0, NULL}, {
- 'V', M_CRYPT_VERIFIED, 0, NULL},
+ {'A', M_ALL, 0, NULL},
+ {'b', M_BODY, M_FULL_MSG, eat_regexp},
+ {'B', M_WHOLE_MSG, M_FULL_MSG, eat_regexp},
+ {'c', M_CC, 0, eat_regexp},
+ {'C', M_RECIPIENT, 0, eat_regexp},
+ {'d', M_DATE, 0, eat_date},
+ {'D', M_DELETED, 0, NULL},
+ {'e', M_SENDER, 0, eat_regexp},
+ {'E', M_EXPIRED, 0, NULL},
+ {'f', M_FROM, 0, eat_regexp},
+ {'F', M_FLAG, 0, NULL},
+ {'g', M_CRYPT_SIGN, 0, NULL},
+ {'G', M_CRYPT_ENCRYPT, 0, NULL},
+ {'h', M_HEADER, M_FULL_MSG, eat_regexp},
+ {'H', M_HORMEL, 0, eat_regexp},
+ {'i', M_ID, 0, eat_regexp},
+ {'k', M_PGP_KEY, 0, NULL},
+ {'L', M_ADDRESS, 0, eat_regexp},
+ {'l', M_LIST, 0, NULL},
+ {'m', M_MESSAGE, 0, eat_range},
+ {'M', M_MULTIPART, 0, NULL},
+ {'n', M_SCORE, 0, eat_range},
+ {'N', M_NEW, 0, NULL},
+ {'O', M_OLD, 0, NULL},
+ {'p', M_PERSONAL_RECIP, 0, NULL},
+ {'P', M_PERSONAL_FROM, 0, NULL},
+ {'Q', M_REPLIED, 0, NULL},
+ {'R', M_READ, 0, NULL},
+ {'r', M_DATE_RECEIVED, 0, eat_date},
+ {'s', M_SUBJECT, 0, eat_regexp},
+ {'S', M_SUPERSEDED, 0, NULL},
+ {'T', M_TAG, 0, NULL},
+ {'t', M_TO, 0, eat_regexp},
+ {'U', M_UNREAD, 0, NULL},
+ {'u', M_SUBSCRIBED_LIST, 0, NULL},
+ {'v', M_COLLAPSED, 0, NULL},
+ {'V', M_CRYPT_VERIFIED, 0, NULL},
#ifdef USE_NNTP
- {
- 'w', M_NEWSGROUPS, 0, eat_regexp},
+ {'w', M_NEWSGROUPS, 0, eat_regexp},
#endif
- {
- 'x', M_REFERENCE, 0, eat_regexp}, {
- 'X', M_MIMEATTACH, 0, eat_range}, {
- 'y', M_XLABEL, 0, eat_regexp}, {
- 'z', M_SIZE, 0, eat_range}, {
- '=', M_DUPLICATED, 0, NULL}, {
- '$', M_UNREFERENCED, 0, NULL}, {
- '*', M_REALNAME, 0, NULL}, {
- 0, 0, 0, NULL}
+ {'x', M_REFERENCE, 0, eat_regexp},
+ {'X', M_MIMEATTACH, 0, eat_range},
+ {'y', M_XLABEL, 0, eat_regexp},
+ {'z', M_SIZE, 0, eat_range},
+ {'=', M_DUPLICATED, 0, NULL},
+ {'$', M_UNREFERENCED, 0, NULL},
+ {'*', M_REALNAME, 0, NULL},
+ {0, 0, 0, NULL}
};
static pattern_t *SearchPattern = NULL; /* current search pattern */
* - or we have an alias for current address
* - or From: contains valid email address _and_ name has >= 2 fields
*/
- return (pat->
- not ^ (h->env && h->env->from && (mutt_addr_is_user (h->env->from)
- ||
- (alias_reverse_lookup
- (h->env->from) != NULL)
- || (h->env->from->personal
- && valid_realname (h->env->
- from->
- personal)
- && h->env->from->mailbox)
- )));
+ return (h->env && h->env->from
+ && (mutt_addr_is_user(h->env->from)
+ || alias_reverse_lookup(h->env->from)
+ || (h->env->from->personal
+ && valid_realname(h->env-> from->personal)
+ && h->env->from->mailbox)
+ )) ^ pat->not;
#ifdef USE_NNTP
case M_NEWSGROUPS:
return (pat->
}
/* convert a simple search into a real request */
-void mutt_check_simple (char *s, size_t len, const char *simple)
+void mutt_check_simple (char *s, ssize_t len, const char *simple)
{
char tmp[LONG_STRING];