New way to connect a job_t.
[apps/madmutt.git] / sort.c
diff --git a/sort.c b/sort.c
index 847eb25..00f14aa 100644 (file)
--- a/sort.c
+++ b/sort.c
@@ -7,22 +7,17 @@
  * 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 "lib/str.h"
+#include "alias.h"
 #include "sort.h"
+#include "thread.h"
+#include "score.h"
 #include "mutt_idna.h"
 
-#include "lib/intl.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 */
@@ -36,37 +31,37 @@ static sort_t *AuxSort = NULL;
 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;
@@ -81,18 +76,18 @@ int compare_subject (const void *a, const void *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)
@@ -104,7 +99,7 @@ const char *mutt_get_name (ADDRESS * a)
   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;
@@ -116,18 +111,15 @@ int compare_to (const void *a, const void *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';
+  m_strcpy(fa, sizeof(fa), mutt_get_name((*ppa)->env->to));
+  m_strcpy(fb, sizeof(fb), mutt_get_name((*ppb)->env->to));
 
-  strncpy (fb, mutt_get_name ((*ppb)->env->to), 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_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;
@@ -139,46 +131,33 @@ int compare_from (const void *a, const void *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';
-
-  strncpy (fb, mutt_get_name ((*ppb)->env->from), sizeof (fb));
-  fb[sizeof (fb) - 1] = '\0';
+  m_strcpy(fa, sizeof(fa), mutt_get_name((*ppa)->env->from));
+  m_strcpy(fb, sizeof(fb), mutt_get_name((*ppb)->env->from));
 
-  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;
@@ -193,14 +172,14 @@ int compare_spam (const void *a, const void *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);
   }
 
 
@@ -213,43 +192,43 @@ int compare_spam (const void *a, const void *b)
   /* 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 (mutt_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 = mutt_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 */
 }
@@ -279,7 +258,7 @@ void mutt_sort_headers (CONTEXT * ctx, int init)
   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);
   }