#include <lib-lib/macros.h>
#include <lib-lib/file.h>
#include <lib-lib/buffer.h>
+#include <lib-lib/mapping.h>
+
+#include <lib-mime/mime.h>
+
+#include <lib-ui/enter.h>
#include "mutt.h"
#include "handler.h"
-#include "enter.h"
#include "mx.h"
-#include "mapping.h"
#include "keymap.h"
#include "copy.h"
-#include "mime.h"
-
-#ifdef USE_IMAP
-#include "mx.h"
-#include "imap/imap.h"
-#endif
+#include <imap/imap.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <stdarg.h>
-#include "mutt_crypt.h"
+#include <lib-crypt/crypt.h>
static int eat_regexp (pattern_t * pat, BUFFER *, BUFFER *);
static int eat_date (pattern_t * pat, BUFFER *, BUFFER *);
int match = 0;
HEADER *h = ctx->hdrs[msgno];
char* buf;
- size_t blen;
+ ssize_t blen;
if ((msg = mx_open_message (ctx, msgno)) != NULL) {
if (option (OPTTHOROUGHSRC)) {
if (pat->op != M_HEADER) {
mutt_parse_mime_message (ctx, h);
- if (WithCrypto && (h->security & ENCRYPT)
- && !crypt_valid_passphrase (h->security)) {
+ if ((h->security & ENCRYPT) && !crypt_valid_passphrase (h->security))
+ {
mx_close_message (&msg);
if (fp) {
fclose (fp);
/* search the file "fp" */
while (lng > 0) {
if (pat->op == M_HEADER) {
- if (*(buf = mutt_read_rfc822_line (fp, buf, &blen)) == '\0')
+ if (!mutt_read_rfc822_line(fp, &buf, &blen))
break;
} else if (fgets (buf, blen - 1, fp) == NULL)
break; /* don't loop forever */
return regexec (pat->rx, buf, 0, NULL, 0);
}
-int eat_range (pattern_t * pat, BUFFER * s, BUFFER * err)
+int eat_range (pattern_t * pat, BUFFER * s, BUFFER * err __attribute__ ((unused)))
{
char *tmp;
int do_exclusive = 0;
if (skip_quote && *tmp == '"')
tmp++;
- SKIPWS (tmp);
- s->dptr = tmp;
+ s->dptr = vskipspaces(tmp);
return 0;
}
const char *pt;
char ch = *pc++;
- SKIPWS (pc);
+ pc = vskipspaces(pc);
switch (ch) {
case '-':
{
default:
flag |= M_PDR_ERRORDONE;
}
- SKIPWS (pc);
+ pc = vskipspaces(pc);
}
if ((flag & M_PDR_ERROR) && !(flag & M_PDR_ABSOLUTE)) { /* getDate has its own error message, don't overwrite it here */
snprintf (err->data, err->dsize, _("Invalid relative date: %s"), pc - 1);
return (-1);
}
haveMin = TRUE;
- SKIPWS (pc);
+ pc = vskipspaces(pc);
if (*pc == '-') {
- const char *pt = pc + 1;
+ const char *pt;
- SKIPWS (pt);
+ pt = skipspaces(pc + 1);
untilNow = (*pt == '\0');
}
}
ps.dsize = m_strlen(s);
while (*ps.dptr) {
- SKIPWS (ps.dptr);
+ ps.dptr = vskipspaces(ps.dptr);
switch (*ps.dptr) {
case '^':
ps.dptr++;
}
tmp->op = entry->op;
- ps.dptr++; /* eat the operator and any optional whitespace */
- SKIPWS (ps.dptr);
+ ps.dptr = vskipspaces(ps.dptr + 1);
if (entry->eat_arg) {
if (!*ps.dptr) {
return NULL;
}
/* compile the sub-expression */
- buf = str_substrdup (ps.dptr + 1, p);
+ buf = p_dupstr(ps.dptr + 1, p - ps.dptr - 1);
if ((tmp = mutt_pattern_comp (buf, flags, err)) == NULL) {
p_delete(&buf);
mutt_pattern_free (&curlist);
return 0;
}
-static int match_adrlist (pattern_t* pat, int match_personal, int alladdr,
+static int match_adrlist (pattern_t* pat, int match_personal, int alladdr __attribute__ ((unused)),
int n, ...)
{
va_list ap;
- ADDRESS *a;
+ address_t *a;
va_start (ap, n);
for (; n; n--) {
- for (a = va_arg (ap, ADDRESS *); a; a = a->next) {
+ for (a = va_arg (ap, address_t *); a; a = a->next) {
if (pat->alladdr ^
((a->mailbox && patmatch (pat, a->mailbox) == 0) ||
(match_personal && a->personal &&
return pat->alladdr; /* No matches, or all matches if alladdr */
}
-static int match_reference (pattern_t* pat, LIST * refs)
+static int match_reference (pattern_t* pat, string_list_t * refs)
{
for (; refs; refs = refs->next)
if (patmatch (pat, refs->data) == 0)
return 0;
}
-int mutt_is_list_recipient (int alladdr, ADDRESS * a1, ADDRESS * a2)
+int mutt_is_list_recipient (int alladdr, address_t * a1, address_t * a2)
{
for (; a1; a1 = a1->next)
if (alladdr ^ mutt_is_subscribed_list (a1))
return alladdr;
}
-int mutt_is_list_cc (int alladdr, ADDRESS * a1, ADDRESS * a2)
+int mutt_is_list_cc (int alladdr, address_t * a1, address_t * a2)
{
for (; a1; a1 = a1->next)
if (alladdr ^ mutt_is_mail_list (a1))
return alladdr;
}
-static int match_user (int alladdr, ADDRESS * a1, ADDRESS * a2)
+static int match_user (int alladdr, address_t * a1, address_t * a2)
{
for (; a1; a1 = a1->next)
if (alladdr ^ mutt_addr_is_user (a1))
case M_BODY:
case M_HEADER:
case M_WHOLE_MSG:
-#ifdef USE_IMAP
/* IMAP search sets h->matched at search compile time */
if (ctx->magic == M_IMAP && pat->stringmatch)
return (h->matched);
-#endif
return (pat->not ^ msg_search (ctx, pat, h->msgno));
case M_SENDER:
return (pat->not ^ match_adrlist (pat, flags & M_MATCH_FULL_ADDRESS,
case M_COLLAPSED:
return (pat->not ^ (h->collapsed && h->num_hidden > 1));
case M_CRYPT_SIGN:
- if (!WithCrypto)
- break;
return (pat->not ^ ((h->security & SIGN) ? 1 : 0));
case M_CRYPT_VERIFIED:
- if (!WithCrypto)
- break;
return (pat->not ^ ((h->security & GOODSIGN) ? 1 : 0));
case M_CRYPT_ENCRYPT:
- if (!WithCrypto)
- break;
return (pat->not ^ ((h->security & ENCRYPT) ? 1 : 0));
case M_PGP_KEY:
- if (!(WithCrypto & APPLICATION_PGP))
- break;
return (pat->not ^ ((h->security & APPLICATION_PGP)
&& (h->security & PGPKEY)));
case M_XLABEL:
* - 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->
return (-1);
}
-static void quote_simple (char *tmp, size_t len, const char *p)
+static void quote_simple (char *tmp, ssize_t len, const char *p)
{
- int i = 0;
+ ssize_t i = 0;
tmp[i++] = '"';
while (*p && i < len - 3) {
}
/* 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];
return (-1);
}
-#ifdef USE_IMAP
if (Context->magic == M_IMAP && imap_search (Context, pat) < 0)
return -1;
-#endif
mutt_message _("Executing command on matching messages...");
if (option (OPTSEARCHINVALID)) {
for (i = 0; i < Context->msgcount; i++)
Context->hdrs[i]->searched = 0;
-#ifdef USE_IMAP
if (Context->magic == M_IMAP && imap_search (Context, SearchPattern) < 0)
return -1;
-#endif
unset_option (OPTSEARCHINVALID);
}