#include <lib-lib/mem.h>
#include <lib-lib/str.h>
#include <lib-lib/macros.h>
+#include <lib-lib/mapping.h>
#include "mutt.h"
#include "enter.h"
#include "mutt_curses.h"
#include "keymap.h"
#include "mutt_menu.h"
-#include "mapping.h"
#include "sort.h"
#include "pager.h"
#include "attach.h"
#include "mx.h"
-#ifdef USE_IMAP
-#include "imap_private.h"
-#endif
+#include <imap/imap_private.h>
-#include "mutt_crypt.h"
+#include <lib-crypt/crypt.h>
#include "lib/rx.h"
#include "lib/debug.h"
static void
shift_class_colors (struct q_class_t *QuoteList, struct q_class_t *new_class,
- int index, int *q_level)
+ int lindex, int *q_level)
{
struct q_class_t *q_list;
new_class->index = -1;
while (q_list) {
- if (q_list->index >= index) {
+ if (q_list->index >= lindex) {
q_list->index++;
q_list->color = ColorQuote[q_list->index % ColorQuoteUsed];
}
}
}
- new_class->index = index;
- new_class->color = ColorQuote[index % ColorQuoteUsed];
+ new_class->index = lindex;
+ new_class->color = ColorQuote[lindex % ColorQuoteUsed];
(*q_level)++;
}
struct q_class_t *class = NULL, *tmp = NULL, *ptr, *save;
char *tail_qptr;
int offset, tail_lng;
- int index = -1;
+ int lindex = -1;
if (ColorQuoteUsed <= 1) {
/* not much point in classifying quotes... */
if (length <= q_list->length) {
/* case 1: check the top level nodes */
- if (str_ncmp (qptr, q_list->prefix, length) == 0) {
+ if (m_strncmp(qptr, q_list->prefix, length) == 0) {
if (length == q_list->length)
return q_list; /* same prefix: return the current class */
if (q_list == *QuoteList)
*QuoteList = tmp;
- index = q_list->index;
+ lindex = q_list->index;
/* tmp should be the return class too */
class = tmp;
q_list->prev = ptr;
q_list->up = tmp;
- index = q_list->index;
+ lindex = q_list->index;
/* next class to test; as above, we shouldn't go down */
q_list = save;
/* tmp != NULL means we already found a shorter prefix at case 1 */
if (tmp == NULL
- && str_ncmp (qptr, q_list->prefix, q_list->length) == 0) {
+ && m_strncmp(qptr, q_list->prefix, q_list->length) == 0) {
/* ok, it's a subclass somewhere on this branch */
ptr = q_list;
while (q_list) {
if (length <= q_list->length) {
- if (str_ncmp (tail_qptr, (q_list->prefix) + offset, tail_lng)
+ if (m_strncmp(tail_qptr, (q_list->prefix) + offset, tail_lng)
== 0) {
/* same prefix: return the current class */
if (length == q_list->length)
q_list->next = NULL;
q_list->prev = NULL;
- index = q_list->index;
+ lindex = q_list->index;
/* tmp should be the return class too */
class = tmp;
q_list->prev = ptr;
q_list->up = tmp;
- index = q_list->index;
+ lindex = q_list->index;
/* next class to test */
q_list = save;
else {
/* longer than the current prefix: try subclassing it */
if (tmp == NULL
- && str_ncmp (tail_qptr, (q_list->prefix) + offset,
+ && m_strncmp(tail_qptr, (q_list->prefix) + offset,
q_list->length - offset) == 0) {
/* still a subclass: go down one level */
ptr = q_list;
return tmp;
}
else {
- if (index != -1)
- shift_class_colors (*QuoteList, tmp, index, q_level);
+ if (lindex != -1)
+ shift_class_colors (*QuoteList, tmp, lindex, q_level);
return class;
}
*QuoteList = class;
}
- if (index != -1)
- shift_class_colors (*QuoteList, tmp, index, q_level);
+ if (lindex != -1)
+ shift_class_colors (*QuoteList, tmp, lindex, q_level);
return class;
}
static int check_attachment_marker (char *);
static void
-resolve_types (char *buf, char *raw, struct line_t *lineInfo, int n, int last,
+resolve_types (char *buf, char *rawbuf, struct line_t *lineInfo, int n, int last,
struct q_class_t **QuoteList, int *q_level, int *force_redraw,
int q_classify)
{
}
}
}
- else if (str_ncmp ("\033[0m", raw, 4) == 0) /* a little hack... */
+ else if (m_strncmp("\033[0m", rawbuf, 4) == 0) /* a little hack... */
lineInfo[n].type = MT_COLOR_NORMAL;
#if 0
- else if (str_ncmp ("[-- ", buf, 4) == 0)
+ else if (m_strncmp("[-- ", buf, 4) == 0)
lineInfo[n].type = MT_COLOR_ATTACHMENT;
#else
- else if (check_attachment_marker ((char *) raw) == 0)
+ else if (check_attachment_marker ((char *) rawbuf) == 0)
lineInfo[n].type = MT_COLOR_ATTACHMENT;
#endif
- else if (str_cmp ("-- \n", buf) == 0
- || str_cmp ("-- \r\n", buf) == 0) {
+ else if (m_strcmp("-- \n", buf) == 0
+ || m_strcmp("-- \r\n", buf) == 0) {
i = n + 1;
lineInfo[n].type = MT_COLOR_SIGNATURE;
/* trim tail of buf so that it contains complete multibyte characters */
static int trim_incomplete_mbyte(unsigned char *buf, size_t len) {
mbstate_t mbstate;
- size_t k;
+ ssize_t k;
- memset (&mbstate, 0, sizeof (mbstate));
+ p_clear(&mbstate, 1);
for (; len > 0; buf += k, len -= k) {
k = mbrtowc (NULL, (char *) buf, len, &mbstate);
if (k == -2)
static int
fill_buffer (FILE * f, off_t *last_pos, off_t offset, unsigned char *buf,
- unsigned char *fmt, size_t blen, int *buf_ready)
+ unsigned char *fmt, ssize_t blen, int *buf_ready)
{
unsigned char *p;
static int b_read = 0;
wrap_cols = COLS;
/* FIXME: this should come from lineInfo */
- memset (&mbstate, 0, sizeof (mbstate));
+ p_clear(&mbstate, 1);
for (ch = 0, vch = 0; ch < cnt; ch += k, vch += k) {
/* Handle ANSI sequences */
if (*last == *max) {
p_realloc(lineInfo, *max += LINES);
for (ch = *last; ch < *max; ch++) {
- memset (&((*lineInfo)[ch]), 0, sizeof (struct line_t));
+ p_clear(&(*lineInfo)[ch], 1);
(*lineInfo)[ch].type = -1;
(*lineInfo)[ch].search_cnt = -1;
(*lineInfo)[ch].syntax = p_new(struct syntax_t, 1);
int helpoffset = LINES - 2; /* offset for the help bar. */
int bodylen = LINES - 2 - bodyoffset; /* length of displayable area */
- MUTTMENU *index = NULL; /* the Pager Index (PI) */
+ MUTTMENU *pager_index = NULL; /* the Pager Index (PI) */
int indexoffset = 0; /* offset for the PI */
int indexlen = PagerIndexLines; /* indexlen not always == PIL */
int indicator = indexlen / 3; /* the indicator line of the PI */
lineInfo = p_new(struct line_t, maxLine = LINES);
for (i = 0; i < maxLine; i++) {
- memset (&lineInfo[i], 0, sizeof (struct line_t));
+ p_clear(&lineInfo[i], 1);
lineInfo[i].type = -1;
lineInfo[i].search_cnt = -1;
lineInfo[i].syntax = p_new(struct syntax_t, 1);
mutt_compile_help (helpstr, sizeof (helpstr), MENU_PAGER, PagerHelp);
if (IsHeader (extra)) {
- strfcpy (tmphelp, helpstr, sizeof (tmphelp));
+ m_strcpy(tmphelp, sizeof(tmphelp), helpstr);
mutt_compile_help (buffer, sizeof (buffer), MENU_PAGER,
#ifdef USE_NNTP
(Context
snprintf (helpstr, sizeof (helpstr), "%s %s", tmphelp, buffer);
}
if (!InHelp) {
- strfcpy (tmphelp, helpstr, sizeof (tmphelp));
+ m_strcpy(tmphelp, sizeof(tmphelp), helpstr);
mutt_make_help (buffer, sizeof (buffer), _("Help"), MENU_PAGER, OP_HELP);
snprintf (helpstr, sizeof (helpstr), "%s %s", tmphelp, buffer);
}
while (ch != -1) {
mutt_curs_set (0);
-
-#ifdef USE_IMAP
imap_keepalive ();
-#endif
if (redraw & REDRAW_FULL) {
SETCOLOR (MT_COLOR_NORMAL);
#endif
if (IsHeader (extra) && PagerIndexLines) {
- if (index == NULL) {
+ if (pager_index == NULL) {
/* only allocate the space if/when we need the index.
Initialise the menu as per the main index */
- index = mutt_new_menu ();
- index->menu = MENU_MAIN;
- index->make_entry = index_make_entry;
- index->color = index_color;
- index->max = Context->vcount;
- index->current = extra->hdr->virtual;
+ pager_index = mutt_new_menu ();
+ pager_index->menu = MENU_MAIN;
+ pager_index->make_entry = index_make_entry;
+ pager_index->color = index_color;
+ pager_index->max = Context->vcount;
+ pager_index->current = extra->hdr->virtual;
}
SETCOLOR (MT_COLOR_NORMAL);
- index->offset = indexoffset + (option (OPTSTATUSONTOP) ? 1 : 0);
+ pager_index->offset = indexoffset + (option (OPTSTATUSONTOP) ? 1 : 0);
- index->pagelen = indexlen - 1;
+ pager_index->pagelen = indexlen - 1;
/* some fudge to work out where abouts the indicator should go */
- if (index->current - indicator < 0)
- index->top = 0;
- else if (index->max - index->current < index->pagelen - indicator)
- index->top = index->max - index->pagelen;
+ if (pager_index->current - indicator < 0)
+ pager_index->top = 0;
+ else if (pager_index->max - pager_index->current < pager_index->pagelen - indicator)
+ pager_index->top = pager_index->max - pager_index->pagelen;
else
- index->top = index->current - indicator;
+ pager_index->top = pager_index->current - indicator;
- menu_redraw_index (index);
+ menu_redraw_index (pager_index);
}
redraw |= REDRAW_BODY | REDRAW_INDEX | REDRAW_STATUS;
if (redraw & REDRAW_SIDEBAR)
sidebar_draw (MENU_PAGER);
- if ((redraw & REDRAW_INDEX) && index) {
+ if ((redraw & REDRAW_INDEX) && pager_index) {
/* redraw the pager_index indicator, because the
* flags for this message might have changed. */
- menu_redraw_current (index);
+ menu_redraw_current (pager_index);
sidebar_draw (MENU_PAGER);
- /* print out the index status bar */
- menu_status_line (buffer, sizeof (buffer), index, NONULL (Status));
+ /* print out the pager_index status bar */
+ menu_status_line (buffer, sizeof (buffer), pager_index, NONULL (Status));
move (indexoffset + (option (OPTSTATUSONTOP) ? 0 : (indexlen - 1)), SW);
SETCOLOR (MT_COLOR_STATUS);
BKGDSET (MT_COLOR_STATUS);
case OP_SEARCH:
case OP_SEARCH_REVERSE:
- strfcpy (buffer, searchbuf, sizeof (buffer));
+ m_strcpy(buffer, sizeof(buffer), searchbuf);
if (mutt_get_field ((SearchBack ? _("Reverse search: ") :
_("Search: ")), buffer, sizeof (buffer),
M_CLEAR) != 0)
if (!buffer[0])
break;
- strfcpy (searchbuf, buffer, sizeof (searchbuf));
+ m_strcpy(searchbuf, sizeof(searchbuf), buffer);
/* leave SearchBack alone if ch == OP_SEARCH_NEXT */
if (ch == OP_SEARCH)
case OP_CHECK_TRADITIONAL:
CHECK_MODE (IsHeader (extra));
- if (!(WithCrypto & APPLICATION_PGP))
- break;
if (!(extra->hdr->security & PGP_TRADITIONAL_CHECKED)) {
ch = -1;
rc = OP_CHECK_TRADITIONAL;
}
if (old_PagerIndexLines != PagerIndexLines) {
- if (index)
- mutt_menuDestroy (&index);
- index = NULL;
+ if (pager_index)
+ mutt_menuDestroy (&pager_index);
+ pager_index = NULL;
}
if (option (OPTWRAP) != old_smart_wrap ||
else
followup_to = extra->hdr->env->followup_to;
- if (!followup_to || str_casecmp (followup_to, "poster") ||
+ if (!followup_to || m_strcasecmp(followup_to, "poster") ||
query_quadoption (OPT_FOLLOWUPTOPOSTER,
_("Reply by mail as poster prefers?")) != M_YES) {
if (extra->ctx && extra->ctx->magic == M_NNTP
break;
case OP_DECRYPT_SAVE:
- if (!WithCrypto) {
- ch = -1;
- break;
- }
- /* fall through */
case OP_SAVE:
if (IsAttach (extra)) {
mutt_save_attachment_list (extra->fp, 0, extra->bdy, extra->hdr,
case OP_DECODE_SAVE:
case OP_DECODE_COPY:
case OP_DECRYPT_COPY:
- if (!WithCrypto && ch == OP_DECRYPT_COPY) {
- ch = -1;
- break;
- }
CHECK_MODE (IsHeader (extra));
if (mutt_save_message (extra->hdr,
(ch == OP_DECRYPT_SAVE) ||
case OP_MAIL_KEY:
- if (!(WithCrypto & APPLICATION_PGP)) {
- ch = -1;
- break;
- }
CHECK_MODE (IsHeader (extra));
CHECK_ATTACH;
ci_send_message (SENDKEY, NULL, NULL, extra->ctx, extra->hdr);
break;
case OP_EXTRACT_KEYS:
- if (!WithCrypto) {
- ch = -1;
- break;
- }
CHECK_MODE (IsHeader (extra));
crypt_extract_keys_from_messages (extra->hdr);
redraw = REDRAW_FULL;
SearchCompiled = 0;
}
p_delete(&lineInfo);
- if (index)
- mutt_menuDestroy (&index);
+ if (pager_index)
+ mutt_menuDestroy (&pager_index);
return (rc != -1 ? rc : 0);
}