* please see the file GPL in the top level source directory.
*/
-#if HAVE_CONFIG_H
-# include "config.h"
-#endif
+#include <lib-lib/lib-lib.h>
+
+#include <lib-ui/lib-ui.h>
#include "mutt.h"
+#include "alias.h"
#include "sort.h"
+#include "thread.h"
+#include "score.h"
#include "mutt_idna.h"
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.h>
-#include <unistd.h>
-
#define SORTCODE(x) (Sort & SORT_REVERSE) ? -(x) : x
/* function to use as discriminator when normal sort method is equal */
if (!code) \
code = (*((HEADER **)a))->index - (*((HEADER **)b))->index;
-int compare_score (const void *a, const void *b)
+static int compare_score (const void *a, const void *b)
{
HEADER **pa = (HEADER **) a;
HEADER **pb = (HEADER **) b;
int result = (*pb)->score - (*pa)->score; /* note that this is reverse */
AUXSORT (result, a, b);
- return (SORTCODE (result));
+ return SORTCODE (result);
}
-int compare_size (const void *a, const void *b)
+static int compare_size (const void *a, const void *b)
{
HEADER **pa = (HEADER **) a;
HEADER **pb = (HEADER **) b;
int result = (*pa)->content->length - (*pb)->content->length;
AUXSORT (result, a, b);
- return (SORTCODE (result));
+ return SORTCODE (result);
}
-int compare_date_sent (const void *a, const void *b)
+static int compare_date_sent (const void *a, const void *b)
{
HEADER **pa = (HEADER **) a;
HEADER **pb = (HEADER **) b;
int result = (*pa)->date_sent - (*pb)->date_sent;
AUXSORT (result, a, b);
- return (SORTCODE (result));
+ return SORTCODE (result);
}
-int compare_subject (const void *a, const void *b)
+static int compare_subject (const void *a, const void *b)
{
HEADER **pa = (HEADER **) a;
HEADER **pb = (HEADER **) b;
else if (!(*pb)->env->real_subj)
rc = 1;
else
- rc = mutt_strcasecmp ((*pa)->env->real_subj, (*pb)->env->real_subj);
+ rc = m_strcasecmp((*pa)->env->real_subj, (*pb)->env->real_subj);
AUXSORT (rc, a, b);
- return (SORTCODE (rc));
+ return SORTCODE (rc);
}
-const char *mutt_get_name (ADDRESS * a)
+const char *mutt_get_name (address_t * a)
{
- ADDRESS *ali;
+ const address_t *ali;
const char *name = "";
if (a) {
- if (option (OPTREVALIAS) && (ali = alias_reverse_lookup (a))
+ if (option (OPTREVALIAS) && (ali = alias_reverse_lookup(a))
&& ali->personal)
name = ali->personal;
else if (a->personal)
return name;
}
-int compare_to (const void *a, const void *b)
+static int compare_to (const void *a, const void *b)
{
HEADER **ppa = (HEADER **) a;
HEADER **ppb = (HEADER **) b;
* On the next call that pointer may get smashed so we copy the return value
* to our own memory space. */
- strncpy (fa, mutt_get_name ((*ppa)->env->to), sizeof (fa));
- fa[sizeof (fa) - 1] = '\0';
-
- strncpy (fb, mutt_get_name ((*ppb)->env->to), sizeof (fb));
- fb[sizeof (fb) - 1] = '\0';
+ m_strcpy(fa, sizeof(fa), mutt_get_name((*ppa)->env->to));
+ m_strcpy(fb, sizeof(fb), mutt_get_name((*ppb)->env->to));
- result = mutt_strcasecmp (fa, fb);
+ result = m_strcasecmp(fa, fb);
AUXSORT (result, a, b);
- return (SORTCODE (result));
+ return SORTCODE (result);
}
-int compare_from (const void *a, const void *b)
+static int compare_from (const void *a, const void *b)
{
HEADER **ppa = (HEADER **) a;
HEADER **ppb = (HEADER **) b;
* On the next call that pointer may get smashed so we copy the return value
* to our own memory space. */
- strncpy (fa, mutt_get_name ((*ppa)->env->from), sizeof (fa));
- fa[sizeof (fa) - 1] = '\0';
+ m_strcpy(fa, sizeof(fa), mutt_get_name((*ppa)->env->from));
+ m_strcpy(fb, sizeof(fb), mutt_get_name((*ppb)->env->from));
- strncpy (fb, mutt_get_name ((*ppb)->env->from), sizeof (fb));
- fb[sizeof (fb) - 1] = '\0';
-
- result = mutt_strcasecmp (fa, fb);
+ result = m_strcasecmp(fa, fb);
AUXSORT (result, a, b);
- return (SORTCODE (result));
+ return SORTCODE (result);
}
-int compare_date_received (const void *a, const void *b)
+static int compare_date_received (const void *a, const void *b)
{
HEADER **pa = (HEADER **) a;
HEADER **pb = (HEADER **) b;
int result = (*pa)->received - (*pb)->received;
AUXSORT (result, a, b);
- return (SORTCODE (result));
+ return SORTCODE (result);
}
-int compare_order (const void *a, const void *b)
+static int compare_order (const void *a, const void *b)
{
HEADER **ha = (HEADER **) a;
HEADER **hb = (HEADER **) b;
-
-#ifdef USE_NNTP
- if ((*ha)->article_num && (*hb)->article_num) {
- int result = (*ha)->article_num - (*hb)->article_num;
-
- AUXSORT (result, a, b);
- return (SORTCODE (result));
- }
- else
-#endif
- /* no need to auxsort because you will never have equality here */
- return (SORTCODE ((*ha)->index - (*hb)->index));
+ /* no need to auxsort because you will never have equality here */
+ return SORTCODE ((*ha)->index - (*hb)->index);
}
-int compare_spam (const void *a, const void *b)
+static int compare_spam (const void *a, const void *b)
{
HEADER **ppa = (HEADER **) a;
HEADER **ppb = (HEADER **) b;
/* If one msg has spam attr but other does not, sort the one with first. */
if (ahas && !bhas)
- return (SORTCODE (1));
+ return SORTCODE (1);
if (!ahas && bhas)
- return (SORTCODE (-1));
+ return SORTCODE (-1);
/* Else, if neither has a spam attr, presume equality. Fall back on aux. */
if (!ahas && !bhas) {
AUXSORT (result, a, b);
- return (SORTCODE (result));
+ return SORTCODE (result);
}
/* If either aptr or bptr is equal to data, there is no numeric */
/* value for that spam attribute. In this case, compare lexically. */
if ((aptr == (*ppa)->env->spam->data) || (bptr == (*ppb)->env->spam->data))
- return (SORTCODE (strcmp (aptr, bptr)));
+ return SORTCODE (m_strcmp(aptr, bptr));
/* Otherwise, we have numeric value for both attrs. If these values */
/* are equal, then we first fall back upon string comparison, then */
/* upon auxiliary sort. */
if (result == 0) {
- result = strcmp (aptr, bptr);
+ result = m_strcmp(aptr, bptr);
if (result == 0)
AUXSORT (result, a, b);
}
- return (SORTCODE (result));
+ return SORTCODE (result);
}
sort_t *mutt_get_sort_func (int method)
{
switch (method & SORT_MASK) {
case SORT_RECEIVED:
- return (compare_date_received);
+ return compare_date_received;
case SORT_ORDER:
- return (compare_order);
+ return compare_order;
case SORT_DATE:
- return (compare_date_sent);
+ return compare_date_sent;
case SORT_SUBJECT:
- return (compare_subject);
+ return compare_subject;
case SORT_FROM:
- return (compare_from);
+ return compare_from;
case SORT_SIZE:
- return (compare_size);
+ return compare_size;
case SORT_TO:
- return (compare_to);
+ return compare_to;
case SORT_SCORE:
- return (compare_score);
+ return compare_score;
case SORT_SPAM:
- return (compare_spam);
+ return compare_spam;
default:
- return (NULL);
+ return NULL;
}
/* not reached */
}
if (!ctx->quiet)
mutt_message _("Sorting mailbox...");
- if (option (OPTNEEDRESCORE) && option (OPTSCORE)) {
+ if (option (OPTNEEDRESCORE) && mod_score.enable) {
for (i = 0; i < ctx->msgcount; i++)
mutt_score_message (ctx, ctx->hdrs[i], 1);
}