Andreas Krennmair:
[apps/madmutt.git] / pop.c
diff --git a/pop.c b/pop.c
index 7136ab0..cb35c70 100644 (file)
--- a/pop.c
+++ b/pop.c
@@ -14,7 +14,7 @@
  *     You should have received a copy of the GNU General Public License
  *     along with this program; if not, write to the Free Software
  *     Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
- */ 
+ */
 
 #if HAVE_CONFIG_H
 # include "config.h"
@@ -48,7 +48,7 @@ static int fetch_message (char *line, void *file)
  * -2 - invalid command or execution error,
  * -3 - error writing to tempfile
  */
-static int pop_read_header (POP_DATA *pop_data, HEADER *h)
+static int pop_read_header (POP_DATA * pop_data, HEADER * h)
 {
   FILE *f;
   int ret, index;
@@ -57,64 +57,58 @@ static int pop_read_header (POP_DATA *pop_data, HEADER *h)
   char tempfile[_POSIX_PATH_MAX];
 
   mutt_mktemp (tempfile);
-  if (!(f = safe_fopen (tempfile, "w+")))
-  {
+  if (!(f = safe_fopen (tempfile, "w+"))) {
     mutt_perror (tempfile);
     return -3;
   }
 
   snprintf (buf, sizeof (buf), "LIST %d\r\n", h->refno);
   ret = pop_query (pop_data, buf, sizeof (buf));
-  if (ret == 0)
-  {
+  if (ret == 0) {
     sscanf (buf, "+OK %d %ld", &index, &length);
 
     snprintf (buf, sizeof (buf), "TOP %d 0\r\n", h->refno);
     ret = pop_fetch_data (pop_data, buf, NULL, fetch_message, f);
 
-    if (pop_data->cmd_top == 2)
-    {
-      if (ret == 0)
-      {
-       pop_data->cmd_top = 1;
+    if (pop_data->cmd_top == 2) {
+      if (ret == 0) {
+        pop_data->cmd_top = 1;
 
-       dprint (1, (debugfile, "pop_read_header: set TOP capability\n"));
+        dprint (1, (debugfile, "pop_read_header: set TOP capability\n"));
       }
 
-      if (ret == -2)
-      {
-       pop_data->cmd_top = 0;
+      if (ret == -2) {
+        pop_data->cmd_top = 0;
 
-       dprint (1, (debugfile, "pop_read_header: unset TOP capability\n"));
-       snprintf (pop_data->err_msg, sizeof (pop_data->err_msg),
-               _("Command TOP is not supported by server."));
+        dprint (1, (debugfile, "pop_read_header: unset TOP capability\n"));
+        snprintf (pop_data->err_msg, sizeof (pop_data->err_msg),
+                  _("Command TOP is not supported by server."));
       }
     }
   }
 
-  switch (ret)
-  {
-    case 0:
+  switch (ret) {
+  case 0:
     {
       rewind (f);
       h->env = mutt_read_rfc822_header (f, h, 0, 0);
       h->content->length = length - h->content->offset + 1;
       rewind (f);
-      while (!feof (f))
-      {
-       h->content->length--;
-       fgets (buf, sizeof (buf), f);
+      while (!feof (f)) {
+        h->content->length--;
+        fgets (buf, sizeof (buf), f);
       }
       break;
     }
-    case -2:
+  case -2:
     {
       mutt_error ("%s", pop_data->err_msg);
       break;
     }
-    case -3:
+  case -3:
     {
       mutt_error _("Can't write header to temporary file!");
+
       break;
     }
   }
@@ -128,20 +122,21 @@ static int pop_read_header (POP_DATA *pop_data, HEADER *h)
 static int fetch_uidl (char *line, void *data)
 {
   int i, index;
-  CONTEXT *ctx = (CONTEXT *)data;
-  POP_DATA *pop_data = (POP_DATA *)ctx->data;
+  CONTEXT *ctx = (CONTEXT *) data;
+  POP_DATA *pop_data = (POP_DATA *) ctx->data;
 
   sscanf (line, "%d %s", &index, line);
   for (i = 0; i < ctx->msgcount; i++)
     if (!mutt_strcmp (line, ctx->hdrs[i]->data))
       break;
 
-  if (i == ctx->msgcount)
-  {
-    dprint (1, (debugfile, "pop_fetch_headers: new header %d %s\n", index, line));
+  if (i == ctx->msgcount) {
+    dprint (1,
+            (debugfile, "pop_fetch_headers: new header %d %s\n", index,
+             line));
 
     if (i >= ctx->hdrmax)
-      mx_alloc_memory(ctx);
+      mx_alloc_memory (ctx);
 
     ctx->msgcount++;
     ctx->hdrs[i] = mutt_new_header ();
@@ -164,10 +159,10 @@ static int fetch_uidl (char *line, void *data)
  * -2 - invalid command or execution error,
  * -3 - error writing to tempfile
  */
-static int pop_fetch_headers (CONTEXT *ctx)
+static int pop_fetch_headers (CONTEXT * ctx)
 {
   int i, ret, old_count, new_count;
-  POP_DATA *pop_data = (POP_DATA *)ctx->data;
+  POP_DATA *pop_data = (POP_DATA *) ctx->data;
 
   time (&pop_data->check_time);
   pop_data->clear_cache = 0;
@@ -180,39 +175,34 @@ static int pop_fetch_headers (CONTEXT *ctx)
   new_count = ctx->msgcount;
   ctx->msgcount = old_count;
 
-  if (pop_data->cmd_uidl == 2)
-  {
-    if (ret == 0)
-    {
+  if (pop_data->cmd_uidl == 2) {
+    if (ret == 0) {
       pop_data->cmd_uidl = 1;
 
       dprint (1, (debugfile, "pop_fetch_headers: set UIDL capability\n"));
     }
 
-    if (ret == -2 && pop_data->cmd_uidl == 2)
-    {
+    if (ret == -2 && pop_data->cmd_uidl == 2) {
       pop_data->cmd_uidl = 0;
 
       dprint (1, (debugfile, "pop_fetch_headers: unset UIDL capability\n"));
       snprintf (pop_data->err_msg, sizeof (pop_data->err_msg),
-             _("Command UIDL is not supported by server."));
+                _("Command UIDL is not supported by server."));
     }
   }
 
-  if (ret == 0)
-  {
+  if (ret == 0) {
     for (i = 0; i < old_count; i++)
       if (ctx->hdrs[i]->refno == -1)
-       ctx->hdrs[i]->deleted = 1;
+        ctx->hdrs[i]->deleted = 1;
 
-    for (i = old_count; i < new_count; i++)
-    {
+    for (i = old_count; i < new_count; i++) {
       mutt_message (_("Fetching message headers... [%d/%d]"),
-                   i + 1 - old_count, new_count - old_count);
+                    i + 1 - old_count, new_count - old_count);
 
       ret = pop_read_header (pop_data, ctx->hdrs[i]);
       if (ret < 0)
-       break;
+        break;
 
       ctx->msgcount++;
     }
@@ -221,8 +211,7 @@ static int pop_fetch_headers (CONTEXT *ctx)
       mx_update_context (ctx, i - old_count);
   }
 
-  if (ret < 0)
-  {
+  if (ret < 0) {
     for (i = ctx->msgcount; i < new_count; i++)
       mutt_free_header (&ctx->hdrs[i]);
     return ret;
@@ -233,7 +222,7 @@ static int pop_fetch_headers (CONTEXT *ctx)
 }
 
 /* open POP mailbox - fetch only headers */
-int pop_open_mailbox (CONTEXT *ctx)
+int pop_open_mailbox (CONTEXT * ctx)
 {
   int ret;
   char buf[LONG_STRING];
@@ -242,8 +231,7 @@ int pop_open_mailbox (CONTEXT *ctx)
   POP_DATA *pop_data;
   ciss_url_t url;
 
-  if (pop_parse_path (ctx->path, &acct))
-  {
+  if (pop_parse_path (ctx->path, &acct)) {
     mutt_error (_("%s is an invalid POP path"), ctx->path);
     mutt_sleep (2);
     return -1;
@@ -268,8 +256,7 @@ int pop_open_mailbox (CONTEXT *ctx)
 
   conn->data = pop_data;
 
-  FOREVER
-  {
+  FOREVER {
     if (pop_reconnect (ctx) < 0)
       return -1;
 
@@ -282,8 +269,7 @@ int pop_open_mailbox (CONTEXT *ctx)
     if (ret >= 0)
       return 0;
 
-    if (ret < -1)
-    {
+    if (ret < -1) {
       mutt_sleep (2);
       return -1;
     }
@@ -291,7 +277,7 @@ int pop_open_mailbox (CONTEXT *ctx)
 }
 
 /* delete all cached messages */
-static void pop_clear_cache (POP_DATA *pop_data)
+static void pop_clear_cache (POP_DATA * pop_data)
 {
   int i;
 
@@ -300,10 +286,8 @@ static void pop_clear_cache (POP_DATA *pop_data)
 
   dprint (1, (debugfile, "pop_clear_cache: delete cached messages\n"));
 
-  for (i = 0; i < POP_CACHE_LEN; i++)
-  {
-    if (pop_data->cache[i].path)
-    {
+  for (i = 0; i < POP_CACHE_LEN; i++) {
+    if (pop_data->cache[i].path) {
       unlink (pop_data->cache[i].path);
       FREE (&pop_data->cache[i].path);
     }
@@ -311,9 +295,9 @@ static void pop_clear_cache (POP_DATA *pop_data)
 }
 
 /* close POP mailbox */
-void pop_close_mailbox (CONTEXT *ctx)
+void pop_close_mailbox (CONTEXT * ctx)
 {
-  POP_DATA *pop_data = (POP_DATA *)ctx->data;
+  POP_DATA *pop_data = (POP_DATA *) ctx->data;
 
   if (!pop_data)
     return;
@@ -335,50 +319,46 @@ void pop_close_mailbox (CONTEXT *ctx)
 }
 
 /* fetch message from POP server */
-int pop_fetch_message (MESSAGE* msg, CONTEXT* ctx, int msgno)
+int pop_fetch_message (MESSAGE * msg, CONTEXT * ctx, int msgno)
 {
   int ret;
   void *uidl;
   char buf[LONG_STRING];
   char path[_POSIX_PATH_MAX];
   char *m = _("Fetching message...");
-  POP_DATA *pop_data = (POP_DATA *)ctx->data;
+  POP_DATA *pop_data = (POP_DATA *) ctx->data;
   POP_CACHE *cache;
   HEADER *h = ctx->hdrs[msgno];
 
   /* see if we already have the message in our cache */
   cache = &pop_data->cache[h->index % POP_CACHE_LEN];
 
-  if (cache->path)
-  {
-    if (cache->index == h->index)
-    {
+  if (cache->path) {
+    if (cache->index == h->index) {
       /* yes, so just return a pointer to the message */
       msg->fp = fopen (cache->path, "r");
       if (msg->fp)
-       return 0;
+        return 0;
 
       mutt_perror (cache->path);
       mutt_sleep (2);
       return -1;
     }
-    else
-    {
+    else {
       /* clear the previous entry */
       unlink (cache->path);
       FREE (&cache->path);
     }
   }
 
-  FOREVER
-  {
+  FOREVER {
     if (pop_reconnect (ctx) < 0)
       return -1;
 
     /* verify that massage index is correct */
-    if (h->refno < 0)
-    {
-      mutt_error _("The message index is incorrect. Try reopening the mailbox.");
+    if (h->refno < 0) {
+      mutt_error
+        _("The message index is incorrect. Try reopening the mailbox.");
       mutt_sleep (2);
       return -1;
     }
@@ -387,8 +367,7 @@ int pop_fetch_message (MESSAGE* msg, CONTEXT* ctx, int msgno)
 
     mutt_mktemp (path);
     msg->fp = safe_fopen (path, "w+");
-    if (!msg->fp)
-    {
+    if (!msg->fp) {
       mutt_perror (path);
       mutt_sleep (2);
       return -1;
@@ -403,16 +382,15 @@ int pop_fetch_message (MESSAGE* msg, CONTEXT* ctx, int msgno)
     safe_fclose (&msg->fp);
     unlink (path);
 
-    if (ret == -2)
-    {
+    if (ret == -2) {
       mutt_error ("%s", pop_data->err_msg);
       mutt_sleep (2);
       return -1;
     }
 
-    if (ret == -3)
-    {
+    if (ret == -3) {
       mutt_error _("Can't write message to temporary file!");
+
       mutt_sleep (2);
       return -1;
     }
@@ -430,8 +408,7 @@ int pop_fetch_message (MESSAGE* msg, CONTEXT* ctx, int msgno)
   h->data = uidl;
   h->lines = 0;
   fgets (buf, sizeof (buf), msg->fp);
-  while (!feof (msg->fp))
-  {
+  while (!feof (msg->fp)) {
     ctx->hdrs[msgno]->lines++;
     fgets (buf, sizeof (buf), msg->fp);
   }
@@ -442,53 +419,47 @@ int pop_fetch_message (MESSAGE* msg, CONTEXT* ctx, int msgno)
   if (!WithCrypto)
     h->security = crypt_query (h->content);
 
-  mutt_clear_error();
+  mutt_clear_error ();
   rewind (msg->fp);
 
   return 0;
 }
 
 /* update POP mailbox - delete messages from server */
-int pop_sync_mailbox (CONTEXT *ctx, int *index_hint)
+int pop_sync_mailbox (CONTEXT * ctx, int *index_hint)
 {
   int i, ret;
   char buf[LONG_STRING];
-  POP_DATA *pop_data = (POP_DATA *)ctx->data;
+  POP_DATA *pop_data = (POP_DATA *) ctx->data;
 
   pop_data->check_time = 0;
 
-  FOREVER
-  {
+  FOREVER {
     if (pop_reconnect (ctx) < 0)
       return -1;
 
     mutt_message (_("Marking %d messages deleted..."), ctx->deleted);
 
-    for (i = 0, ret = 0; ret == 0 && i < ctx->msgcount; i++)
-    {
-      if (ctx->hdrs[i]->deleted)
-      {
-       snprintf (buf, sizeof (buf), "DELE %d\r\n", ctx->hdrs[i]->refno);
-       ret = pop_query (pop_data, buf, sizeof (buf));
+    for (i = 0, ret = 0; ret == 0 && i < ctx->msgcount; i++) {
+      if (ctx->hdrs[i]->deleted) {
+        snprintf (buf, sizeof (buf), "DELE %d\r\n", ctx->hdrs[i]->refno);
+        ret = pop_query (pop_data, buf, sizeof (buf));
       }
     }
 
-    if (ret == 0)
-    {
+    if (ret == 0) {
       strfcpy (buf, "QUIT\r\n", sizeof (buf));
       ret = pop_query (pop_data, buf, sizeof (buf));
     }
 
-    if (ret == 0)
-    {
+    if (ret == 0) {
       pop_data->clear_cache = 1;
       pop_clear_cache (pop_data);
       pop_data->status = POP_DISCONNECTED;
       return 0;
     }
 
-    if (ret == -2)
-    {
+    if (ret == -2) {
       mutt_error ("%s", pop_data->err_msg);
       mutt_sleep (2);
       return -1;
@@ -497,10 +468,10 @@ int pop_sync_mailbox (CONTEXT *ctx, int *index_hint)
 }
 
 /* Check for new messages and fetch headers */
-int pop_check_mailbox (CONTEXT *ctx, int *index_hint)
+int pop_check_mailbox (CONTEXT * ctx, int *index_hint)
 {
   int ret;
-  POP_DATA *pop_data = (POP_DATA *)ctx->data;
+  POP_DATA *pop_data = (POP_DATA *) ctx->data;
 
   if ((pop_data->check_time + PopCheckTimeout) > time (NULL))
     return 0;
@@ -541,24 +512,22 @@ void pop_fetch_mail (void)
   ACCOUNT acct;
   POP_DATA *pop_data;
 
-  if (!PopHost)
-  {
+  if (!PopHost) {
     mutt_error _("POP host is not defined.");
+
     return;
   }
 
   url = p = safe_calloc (strlen (PopHost) + 7, sizeof (char));
-  if (url_check_scheme (PopHost) == U_UNKNOWN)
-  {
-    strcpy (url, "pop://");    /* __STRCPY_CHECKED__ */
+  if (url_check_scheme (PopHost) == U_UNKNOWN) {
+    strcpy (url, "pop://");     /* __STRCPY_CHECKED__ */
     p = strchr (url, '\0');
   }
-  strcpy (p, PopHost);         /* __STRCPY_CHECKED__ */
+  strcpy (p, PopHost);          /* __STRCPY_CHECKED__ */
 
   ret = pop_parse_path (url, &acct);
   FREE (&url);
-  if (ret)
-  {
+  if (ret) {
     mutt_error (_("%s is an invalid POP path"), PopHost);
     return;
   }
@@ -570,8 +539,7 @@ void pop_fetch_mail (void)
   pop_data = safe_calloc (1, sizeof (POP_DATA));
   pop_data->conn = conn;
 
-  if (pop_open_connection (pop_data) < 0)
-  {
+  if (pop_open_connection (pop_data) < 0) {
     mutt_socket_free (pop_data->conn);
     FREE (&pop_data);
     return;
@@ -586,8 +554,7 @@ void pop_fetch_mail (void)
   ret = pop_query (pop_data, buffer, sizeof (buffer));
   if (ret == -1)
     goto fail;
-  if (ret == -2)
-  {
+  if (ret == -2) {
     mutt_error ("%s", pop_data->err_msg);
     goto finish;
   }
@@ -595,8 +562,7 @@ void pop_fetch_mail (void)
   sscanf (buffer, "+OK %d %d", &msgs, &bytes);
 
   /* only get unread messages */
-  if (msgs > 0 && option (OPTPOPLAST))
-  {
+  if (msgs > 0 && option (OPTPOPLAST)) {
     strfcpy (buffer, "LAST\r\n", sizeof (buffer));
     ret = pop_query (pop_data, buffer, sizeof (buffer));
     if (ret == -1)
@@ -605,70 +571,66 @@ void pop_fetch_mail (void)
       sscanf (buffer, "+OK %d", &last);
   }
 
-  if (msgs <= last)
-  {
+  if (msgs <= last) {
     mutt_message _("No new mail in POP mailbox.");
+
     goto finish;
   }
 
   if (mx_open_mailbox (NONULL (Spoolfile), M_APPEND, &ctx) == NULL)
     goto finish;
 
-  delanswer = query_quadoption (OPT_POPDELETE, _("Delete messages from server?"));
+  delanswer =
+    query_quadoption (OPT_POPDELETE, _("Delete messages from server?"));
 
-  snprintf (msgbuf, sizeof (msgbuf), _("Reading new messages (%d bytes)..."), bytes);
+  snprintf (msgbuf, sizeof (msgbuf), _("Reading new messages (%d bytes)..."),
+            bytes);
   mutt_message ("%s", msgbuf);
 
-  for (i = last + 1 ; i <= msgs ; i++)
-  {
+  for (i = last + 1; i <= msgs; i++) {
     if ((msg = mx_open_new_message (&ctx, NULL, M_ADD_FROM)) == NULL)
       ret = -3;
-    else
-    {
+    else {
       snprintf (buffer, sizeof (buffer), "RETR %d\r\n", i);
       ret = pop_fetch_data (pop_data, buffer, NULL, fetch_message, msg->fp);
       if (ret == -3)
-       rset = 1;
+        rset = 1;
 
-      if (ret == 0 && mx_commit_message (msg, &ctx) != 0)
-      {
-       rset = 1;
-       ret = -3;
+      if (ret == 0 && mx_commit_message (msg, &ctx) != 0) {
+        rset = 1;
+        ret = -3;
       }
 
       mx_close_message (&msg);
     }
 
-    if (ret == 0 && delanswer == M_YES)
-    {
+    if (ret == 0 && delanswer == M_YES) {
       /* delete the message on the server */
       snprintf (buffer, sizeof (buffer), "DELE %d\r\n", i);
       ret = pop_query (pop_data, buffer, sizeof (buffer));
     }
 
-    if (ret == -1)
-    {
+    if (ret == -1) {
       mx_close_mailbox (&ctx, NULL);
       goto fail;
     }
-    if (ret == -2)
-    {
+    if (ret == -2) {
       mutt_error ("%s", pop_data->err_msg);
       break;
     }
-    if (ret == -3)
-    {
+    if (ret == -3) {
       mutt_error _("Error while writing mailbox!");
+
       break;
     }
 
-    mutt_message (_("%s [%d of %d messages read]"), msgbuf, i - last, msgs - last);
+    mutt_message (_("%s [%d of %d messages read]"), msgbuf, i - last,
+                  msgs - last);
   }
 
   mx_close_mailbox (&ctx, NULL);
 
-  if (rset)
-  {
+  if (rset) {
     /* make sure no messages get deleted */
     strfcpy (buffer, "RSET\r\n", sizeof (buffer));
     if (pop_query (pop_data, buffer, sizeof (buffer)) == -1)