size if zero (=unknown).
if (!NetInc)
mutt_message (progress->msg);
else {
- mutt_pretty_size (progress->sizestr, sizeof (progress->sizestr), progress->size);
+ if (progress->size)
+ mutt_pretty_size (progress->sizestr, sizeof (progress->sizestr), progress->size);
progress->pos = 0;
}
}
progress->pos = pos;
pos = pos / (NetInc << 10) * (NetInc << 10);
mutt_pretty_size (posstr, sizeof (posstr), pos);
- mutt_message ("%s %s/%s", progress->msg, posstr, progress->sizestr);
+ if (progress->size)
+ mutt_message ("%s %s/%s", progress->msg, posstr, progress->sizestr);
+ else
+ mutt_message ("%s %s", progress->msg, posstr);
}
}
#endif
#endif
#include "mutt.h"
+#include "mutt_curses.h"
#include "mx.h"
#include "pop.h"
#include "mutt_crypt.h"
void *uidl;
char buf[LONG_STRING];
char path[_POSIX_PATH_MAX];
- char *m = _("Fetching message...");
+ progress_t progressbar;
POP_DATA *pop_data = (POP_DATA *)ctx->data;
POP_CACHE *cache;
HEADER *h = ctx->hdrs[msgno];
return -1;
}
- mutt_message (m);
+ progressbar.size = h->content->length + h->content->offset - 1;
+ progressbar.msg = _("Fetching message...");
+ mutt_progress_bar (&progressbar, 0);
mutt_mktemp (path);
msg->fp = safe_fopen (path, "w+");
snprintf (buf, sizeof (buf), "RETR %d\r\n", h->refno);
- ret = pop_fetch_data (pop_data, buf, m, fetch_message, msg->fp);
+ ret = pop_fetch_data (pop_data, buf, &progressbar, fetch_message, msg->fp);
if (ret == 0)
break;
#include "mailbox.h"
#include "mutt_socket.h"
+#include "mutt_curses.h"
#define POP_PORT 110
#define POP_SSL_PORT 995
int pop_connect (POP_DATA *);
int pop_open_connection (POP_DATA *);
int pop_query_d (POP_DATA *, char *, size_t, char *);
-int pop_fetch_data (POP_DATA *, char *, char *, int (*funct) (char *, void *), void *);
+int pop_fetch_data (POP_DATA *, char *, progress_t *, int (*funct) (char *, void *), void *);
int pop_reconnect (CONTEXT *);
void pop_logout (CONTEXT *);
void pop_error (POP_DATA *, char *);
* -2 - invalid command or execution error,
* -3 - error in funct(*line, *data)
*/
-int pop_fetch_data (POP_DATA *pop_data, char *query, char *msg,
+int pop_fetch_data (POP_DATA *pop_data, char *query, progress_t *progressbar,
int (*funct) (char *, void *), void *data)
{
char buf[LONG_STRING];
char *inbuf;
char *p;
- int ret, chunk, line = 0;
+ int ret, chunk = 0;
+ long pos = 0;
size_t lenbuf = 0;
strfcpy (buf, query, sizeof (buf));
}
strfcpy (inbuf + lenbuf, p, sizeof (buf));
+ pos += chunk;
if (chunk >= sizeof (buf))
{
}
else
{
- line++;
- if (msg && ReadInc && (line % ReadInc == 0))
- mutt_message ("%s %d", msg, line);
+ if (progressbar)
+ mutt_progress_bar (progressbar, pos);
if (ret == 0 && funct (inbuf, data) < 0)
ret = -3;
lenbuf = 0;
{
int ret;
POP_DATA *pop_data = (POP_DATA *)ctx->data;
+ progress_t progressbar;
if (pop_data->status == POP_CONNECTED)
return 0;
ret = pop_open_connection (pop_data);
if (ret == 0)
{
- char *msg = _("Verifying message indexes...");
int i;
+ progressbar.msg = _("Verifying message indexes...");
+ progressbar.size = 0;
+ mutt_progress_bar (&progressbar, 0);
+
for (i = 0; i < ctx->msgcount; i++)
ctx->hdrs[i]->refno = -1;
- mutt_message (msg);
-
- ret = pop_fetch_data (pop_data, "UIDL\r\n", msg, check_uidl, ctx);
+ ret = pop_fetch_data (pop_data, "UIDL\r\n", &progressbar, check_uidl, ctx);
if (ret == -2)
{
mutt_error ("%s", pop_data->err_msg);