projects
/
apps
/
madmutt.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
move debug.c
[apps/madmutt.git]
/
nntp
/
nntp.c
diff --git
a/nntp/nntp.c
b/nntp/nntp.c
index
64a6434
..
159d2e1
100644
(file)
--- a/
nntp/nntp.c
+++ b/
nntp/nntp.c
@@
-13,30
+13,35
@@
#include <config.h>
#endif
#include <config.h>
#endif
+#include <lib-lib/mem.h>
+#include <lib-lib/str.h>
+#include <lib-lib/file.h>
+#include <lib-lib/macros.h>
+#include <lib-lib/debug.h>
+
+#include <lib-mime/mime.h>
+
+#include <lib-ui/curses.h>
+
#include "mutt.h"
#include "mutt.h"
-#include "mutt_curses.h"
#include "sort.h"
#include "mx.h"
#include "mx_nntp.h"
#include "sort.h"
#include "mx.h"
#include "mx_nntp.h"
-#include "mime.h"
#include "rfc1524.h"
#include "rfc1524.h"
-#include "rfc2047.h"
#include "nntp.h"
#include "sidebar.h"
#include "buffy.h"
#include "nntp.h"
#include "sidebar.h"
#include "buffy.h"
-#include
"mutt_crypt.h"
+#include
<lib-crypt/crypt.h>
-#include "lib/mem.h"
-#include "lib/str.h"
-#include "lib/intl.h"
-#include "lib/debug.h"
#include <unistd.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
+#define WANT_LISTGROUP_COMMAND 0
+
static unsigned int _checked = 0;
void nntp_sync_sidebar (NNTP_DATA* data) {
static unsigned int _checked = 0;
void nntp_sync_sidebar (NNTP_DATA* data) {
@@
-60,7
+65,6
@@
void nntp_sync_sidebar (NNTP_DATA* data) {
*data->nserv->conn->account.pass ? data->nserv->conn->account.pass : "",
data->nserv->conn->account.host,
data->group);
*data->nserv->conn->account.pass ? data->nserv->conn->account.pass : "",
data->nserv->conn->account.host,
data->group);
- debug_print (4, ("group == '%s'\n", buf));
/* bail out if group not found via mailboxes */
if ((i = buffy_lookup (buf)) < 0)
/* bail out if group not found via mailboxes */
if ((i = buffy_lookup (buf)) < 0)
@@
-116,7
+120,7
@@
static int nntp_auth (NNTP_SERVER * serv)
return -1;
}
return -1;
}
- if (
str_ncmp
("281", buf, 3)) {
+ if (
m_strncmp
("281", buf, 3)) {
conn->account.flags = flags;
mutt_error _("Login failed.");
conn->account.flags = flags;
mutt_error _("Login failed.");
@@
-151,14
+155,14
@@
static int nntp_connect_and_auth (NNTP_SERVER * serv)
if (mutt_socket_readln (buf, sizeof (buf), conn) < 0)
return nntp_connect_error (serv);
if (mutt_socket_readln (buf, sizeof (buf), conn) < 0)
return nntp_connect_error (serv);
- if (!
str_ncmp
("200", buf, 3))
+ if (!
m_strncmp
("200", buf, 3))
mutt_message (_("Connected to %s. Posting ok."), conn->account.host);
mutt_message (_("Connected to %s. Posting ok."), conn->account.host);
- else if (!
str_ncmp
("201", buf, 3))
+ else if (!
m_strncmp
("201", buf, 3))
mutt_message (_("Connected to %s. Posting NOT ok."), conn->account.host);
else {
mutt_message (_("Connected to %s. Posting NOT ok."), conn->account.host);
else {
- mutt_socket_close
(conn);
-
str_skip_trailws
(buf);
- mutt_error
("%s", buf);
+ mutt_socket_close(conn);
+
m_strrtrim
(buf);
+ mutt_error("%s", buf);
sleep (2);
return -1;
}
sleep (2);
return -1;
}
@@
-175,7
+179,7
@@
static int nntp_connect_and_auth (NNTP_SERVER * serv)
if (mutt_socket_readln (buf, sizeof (buf), conn) < 0)
return nntp_connect_error (serv);
if (mutt_socket_readln (buf, sizeof (buf), conn) < 0)
return nntp_connect_error (serv);
- if (!(conn->account.flags & M_ACCT_USER) &&
str_ncmp
("480", buf, 3)) {
+ if (!(conn->account.flags & M_ACCT_USER) &&
m_strncmp
("480", buf, 3)) {
serv->status = NNTP_OK;
return 0;
}
serv->status = NNTP_OK;
return 0;
}
@@
-207,28
+211,30
@@
static int nntp_attempt_features (NNTP_SERVER * serv)
mutt_socket_write (conn, "XOVER\r\n");
if (mutt_socket_readln (buf, sizeof (buf), conn) < 0)
return nntp_connect_error (serv);
mutt_socket_write (conn, "XOVER\r\n");
if (mutt_socket_readln (buf, sizeof (buf), conn) < 0)
return nntp_connect_error (serv);
- if (
str_ncmp
("500", buf, 3))
+ if (
m_strncmp
("500", buf, 3))
serv->hasXOVER = 1;
mutt_socket_write (conn, "XPAT\r\n");
if (mutt_socket_readln (buf, sizeof (buf), conn) < 0)
return nntp_connect_error (serv);
serv->hasXOVER = 1;
mutt_socket_write (conn, "XPAT\r\n");
if (mutt_socket_readln (buf, sizeof (buf), conn) < 0)
return nntp_connect_error (serv);
- if (
str_ncmp
("500", buf, 3))
+ if (
m_strncmp
("500", buf, 3))
serv->hasXPAT = 1;
serv->hasXPAT = 1;
+#if WANT_LISTGROUP_COMMAND
mutt_socket_write (conn, "LISTGROUP\r\n");
if (mutt_socket_readln (buf, sizeof (buf), conn) < 0)
return (nntp_connect_error (serv));
mutt_socket_write (conn, "LISTGROUP\r\n");
if (mutt_socket_readln (buf, sizeof (buf), conn) < 0)
return (nntp_connect_error (serv));
- if (
str_ncmp
("500", buf, 3))
+ if (
m_strncmp
("500", buf, 3))
serv->hasLISTGROUP = 1;
serv->hasLISTGROUP = 1;
+#endif
mutt_socket_write (conn, "XGTITLE +\r\n");
if (mutt_socket_readln (buf, sizeof (buf), conn) < 0)
return nntp_connect_error (serv);
mutt_socket_write (conn, "XGTITLE +\r\n");
if (mutt_socket_readln (buf, sizeof (buf), conn) < 0)
return nntp_connect_error (serv);
- if (
str_ncmp
("500", buf, 3))
+ if (
m_strncmp
("500", buf, 3))
serv->hasXGTITLE = 1;
serv->hasXGTITLE = 1;
- if (!
str_ncmp
("282", buf, 3)) {
+ if (!
m_strncmp
("282", buf, 3)) {
do {
if (mutt_socket_readln (buf, sizeof (buf), conn) < 0)
return nntp_connect_error (serv);
do {
if (mutt_socket_readln (buf, sizeof (buf), conn) < 0)
return nntp_connect_error (serv);
@@
-257,7
+263,7
@@
static int nntp_reconnect (NNTP_SERVER * serv)
mutt_socket_close (serv->conn);
mutt_socket_close (serv->conn);
-
FOREVER
{
+
for (;;)
{
if (nntp_connect_and_auth (serv) == 0)
return 0;
if (nntp_connect_and_auth (serv) == 0)
return 0;
@@
-302,11
+308,11
@@
static int mutt_nntp_query (NNTP_DATA * data, char *line, size_t linelen)
if (*line)
done = FALSE;
}
if (*line)
done = FALSE;
}
- else if ((!
str_ncmp
("480", buf, 3)) && nntp_auth (data->nserv) < 0)
+ else if ((!
m_strncmp
("480", buf, 3)) && nntp_auth (data->nserv) < 0)
return -1;
} while (!done);
return -1;
} while (!done);
-
strfcpy (line, buf, linelen
);
+
m_strcpy(line, linelen, buf
);
return 0;
}
return 0;
}
@@
-320,19
+326,20
@@
static int mutt_nntp_query (NNTP_DATA * data, char *line, size_t linelen)
* -2 - invalid command or execution error,
* -3 - error in funct(*line, *data).
*/
* -2 - invalid command or execution error,
* -3 - error in funct(*line, *data).
*/
-static int mutt_nntp_fetch (NNTP_DATA * nntp_data, char *query, char *msg,
-
int (*funct) (char *, void *), void *data
,
- int tagged)
+static int mutt_nntp_fetch (NNTP_DATA * nntp_data, c
onst c
har *query, char *msg,
+
progress_t* bar, int (*funct) (char *, void *)
,
+
void *data,
int tagged)
{
char buf[LONG_STRING];
char *inbuf, *p;
int done = FALSE;
int chunk, line;
{
char buf[LONG_STRING];
char *inbuf, *p;
int done = FALSE;
int chunk, line;
+ long pos = 0;
size_t lenbuf = 0;
int ret;
do {
size_t lenbuf = 0;
int ret;
do {
-
strfcpy (buf, query, sizeof (buf)
);
+
m_strcpy(buf, sizeof(buf), query
);
if (mutt_nntp_query (nntp_data, buf, sizeof (buf)) < 0)
return -1;
if (buf[0] == '5')
if (mutt_nntp_query (nntp_data, buf, sizeof (buf)) < 0)
return -1;
if (buf[0] == '5')
@@
-342,9
+349,9
@@
static int mutt_nntp_fetch (NNTP_DATA * nntp_data, char *query, char *msg,
ret = 0;
line = 0;
ret = 0;
line = 0;
- inbuf =
mem_malloc (sizeof
(buf));
+ inbuf =
p_new(char, sizeof
(buf));
-
FOREVER
{
+
for (;;)
{
chunk = mutt_socket_readln_d (buf, sizeof (buf), nntp_data->nserv->conn,
M_SOCK_LOG_HDR);
if (chunk < 0)
chunk = mutt_socket_readln_d (buf, sizeof (buf), nntp_data->nserv->conn,
M_SOCK_LOG_HDR);
if (chunk < 0)
@@
-360,18
+367,23
@@
static int mutt_nntp_fetch (NNTP_DATA * nntp_data, char *query, char *msg,
p++;
}
p++;
}
- strfcpy (inbuf + lenbuf, p, sizeof (buf));
+ m_strcpy(inbuf + lenbuf, sizeof(buf), p);
+ pos += chunk;
if (chunk >= sizeof (buf)) {
if (chunk >= sizeof (buf)) {
- lenbuf +=
str_len
(p);
+ lenbuf +=
m_strlen
(p);
}
else {
}
else {
- line++;
- if (msg && ReadInc && (line % ReadInc == 0)) {
- if (tagged)
- mutt_message (_("%s (tagged: %d) %d"), msg, tagged, line);
- else
- mutt_message ("%s %d", msg, line);
+ if (bar) {
+ mutt_progress_bar (bar, pos);
+ } else if (msg) {
+ line++;
+ if (ReadInc && (line % ReadInc == 0)) {
+ if (tagged)
+ mutt_message (_("%s (tagged: %d) %d"), msg, tagged, line);
+ else
+ mutt_message ("%s %d", msg, line);
+ }
}
if (ret == 0 && funct (inbuf, data) < 0)
}
if (ret == 0 && funct (inbuf, data) < 0)
@@
-379,9
+391,9
@@
static int mutt_nntp_fetch (NNTP_DATA * nntp_data, char *query, char *msg,
lenbuf = 0;
}
lenbuf = 0;
}
-
mem_realloc
(&inbuf, lenbuf + sizeof (buf));
+
p_realloc
(&inbuf, lenbuf + sizeof (buf));
}
}
-
mem_free
(&inbuf);
+
p_delete
(&inbuf);
funct (NULL, data);
}
while (!done);
funct (NULL, data);
}
while (!done);
@@
-430,7
+442,7
@@
static void nntp_parse_xref (CONTEXT * ctx, char *group, char *xref,
*colon = '\0';
colon++;
nntp_get_status (ctx, h, b, atoi (colon));
*colon = '\0';
colon++;
nntp_get_status (ctx, h, b, atoi (colon));
- if (h && h->article_num == 0 &&
str_cmp
(group, b) == 0)
+ if (h && h->article_num == 0 &&
m_strcmp
(group, b) == 0)
h->article_num = atoi (colon);
}
}
h->article_num = atoi (colon);
}
}
@@
-461,7
+473,7
@@
static int nntp_read_header (CONTEXT * ctx, const char *msgid,
else
snprintf (buf, sizeof (buf), "HEAD %s\r\n", msgid);
else
snprintf (buf, sizeof (buf), "HEAD %s\r\n", msgid);
- ret = mutt_nntp_fetch (nntp_data, buf, NULL, nntp_read_tempfile, f, 0);
+ ret = mutt_nntp_fetch (nntp_data, buf, NULL,
NULL,
nntp_read_tempfile, f, 0);
if (ret) {
if (ret != -1)
debug_print (1, ("%s\n", buf));
if (ret) {
if (ret != -1)
debug_print (1, ("%s\n", buf));
@@
-502,15
+514,15
@@
static int parse_description (char *line, void *n)
d++;
debug_print (2, ("group: %s, desc: %s\n", line, d));
if ((data = (NNTP_DATA *) hash_find (news->newsgroups, line)) != NULL &&
d++;
debug_print (2, ("group: %s, desc: %s\n", line, d));
if ((data = (NNTP_DATA *) hash_find (news->newsgroups, line)) != NULL &&
-
str_cmp
(d, data->desc)) {
-
mem_free
(&data->desc);
- data->desc =
str_dup
(d);
+
m_strcmp
(d, data->desc)) {
+
p_delete
(&data->desc);
+ data->desc =
m_strdup
(d);
}
return 0;
#undef news
}
}
return 0;
#undef news
}
-static void nntp_get_desc (NNTP_DATA * data, c
har *mask, char *msg
)
+static void nntp_get_desc (NNTP_DATA * data, c
onst char *mask, char *msg, progress_t* bar
)
{
char buf[STRING];
{
char buf[STRING];
@@
-522,7
+534,7
@@
static void nntp_get_desc (NNTP_DATA * data, char *mask, char *msg)
snprintf (buf, sizeof (buf), "XGTITLE %s\r\n", mask);
else
snprintf (buf, sizeof (buf), "LIST NEWSGROUPS %s\r\n", mask);
snprintf (buf, sizeof (buf), "XGTITLE %s\r\n", mask);
else
snprintf (buf, sizeof (buf), "LIST NEWSGROUPS %s\r\n", mask);
- if (mutt_nntp_fetch (data, buf, msg, parse_description, data->nserv, 0) !=
+ if (mutt_nntp_fetch (data, buf, msg,
bar,
parse_description, data->nserv, 0) !=
0) {
#ifdef DEBUG
nntp_error ("nntp_get_desc()", buf);
0) {
#ifdef DEBUG
nntp_error ("nntp_get_desc()", buf);
@@
-544,11
+556,11
@@
static int nntp_parse_xover (CONTEXT * ctx, char *buf, HEADER * hdr)
char *p, *b;
int x, done = 0;
char *p, *b;
int x, done = 0;
- hdr->env =
mutt_new_envelope
();
- hdr->env->newsgroups =
str_dup
(nntp_data->group);
+ hdr->env =
envelope_new
();
+ hdr->env->newsgroups =
m_strdup
(nntp_data->group);
hdr->content = mutt_new_body ();
hdr->content->type = TYPETEXT;
hdr->content = mutt_new_body ();
hdr->content->type = TYPETEXT;
- hdr->content->subtype =
str_dup
("plain");
+ hdr->content->subtype =
m_strdup
("plain");
hdr->content->encoding = ENC7BIT;
hdr->content->disposition = DISPINLINE;
hdr->content->length = -1;
hdr->content->encoding = ENC7BIT;
hdr->content->disposition = DISPINLINE;
hdr->content->length = -1;
@@
-569,10
+581,10
@@
static int nntp_parse_xover (CONTEXT * ctx, char *buf, HEADER * hdr)
nntp_get_status (ctx, hdr, NULL, hdr->article_num);
break;
case 1:
nntp_get_status (ctx, hdr, NULL, hdr->article_num);
break;
case 1:
- hdr->env->subject =
str_dup
(b);
+ hdr->env->subject =
m_strdup
(b);
break;
case 2:
break;
case 2:
-
rfc822_free_address
(&hdr->env->from);
+
address_delete
(&hdr->env->from);
hdr->env->from = rfc822_parse_adrlist (hdr->env->from, b);
/* same as for mutt_parse_rfc822_line():
* don't leave from info NULL if there's an invalid address (or
hdr->env->from = rfc822_parse_adrlist (hdr->env->from, b);
/* same as for mutt_parse_rfc822_line():
* don't leave from info NULL if there's an invalid address (or
@@
-580,8
+592,8
@@
static int nntp_parse_xover (CONTEXT * ctx, char *buf, HEADER * hdr)
* and mark mail/(esp.) news article as your own. aaargh! this
* bothered me for _years_ */
if (!hdr->env->from) {
* and mark mail/(esp.) news article as your own. aaargh! this
* bothered me for _years_ */
if (!hdr->env->from) {
- hdr->env->from =
rfc822_new_address
();
- hdr->env->from->personal =
str_dup
(b);
+ hdr->env->from =
address_new
();
+ hdr->env->from->personal =
m_strdup
(b);
}
break;
case 3:
}
break;
case 3:
@@
-589,8
+601,8
@@
static int nntp_parse_xover (CONTEXT * ctx, char *buf, HEADER * hdr)
hdr->received = hdr->date_sent;
break;
case 4:
hdr->received = hdr->date_sent;
break;
case 4:
-
mem_free
(&hdr->env->message_id);
- hdr->env->message_id =
str_dup
(b);
+
p_delete
(&hdr->env->message_id);
+ hdr->env->message_id =
m_strdup
(b);
break;
case 5:
mutt_free_list (&hdr->env->references);
break;
case 5:
mutt_free_list (&hdr->env->references);
@@
-604,12
+616,12
@@
static int nntp_parse_xover (CONTEXT * ctx, char *buf, HEADER * hdr)
break;
case 8:
if (!hdr->read)
break;
case 8:
if (!hdr->read)
-
mem_free
(&hdr->env->xref);
+
p_delete
(&hdr->env->xref);
b = b + 6; /* skips the "Xref: " */
b = b + 6; /* skips the "Xref: " */
- hdr->env->xref =
str_dup
(b);
+ hdr->env->xref =
m_strdup
(b);
nntp_parse_xref (ctx, nntp_data->group, b, hdr);
}
nntp_parse_xref (ctx, nntp_data->group, b, hdr);
}
- rfc2047_decode_envelope
(hdr->env);
+ rfc2047_decode_envelope(hdr->env);
if (!*p)
return -1;
b = p;
if (!*p)
return -1;
b = p;
@@
-627,6
+639,8
@@
typedef struct {
} FETCH_CONTEXT;
#define fc ((FETCH_CONTEXT *) c)
} FETCH_CONTEXT;
#define fc ((FETCH_CONTEXT *) c)
+
+#if WANT_LISTGROUP_COMMAND
static int _nntp_fetch_numbers (unsigned int num, void *c)
{
if (num < fc->base || num > fc->last)
static int _nntp_fetch_numbers (unsigned int num, void *c)
{
if (num < fc->base || num > fc->last)
@@
-640,6
+654,7
@@
static int nntp_fetch_numbers (char *line, void *c)
return 0;
return (_nntp_fetch_numbers ((unsigned int) atoi (line), c));
}
return 0;
return (_nntp_fetch_numbers ((unsigned int) atoi (line), c));
}
+#endif
static int add_xover_line (char *line, void *c)
{
static int add_xover_line (char *line, void *c)
{
@@
-652,7
+667,7
@@
static int add_xover_line (char *line, void *c)
if (ctx->msgcount >= ctx->hdrmax)
mx_alloc_memory (ctx);
if (ctx->msgcount >= ctx->hdrmax)
mx_alloc_memory (ctx);
- ctx->hdrs[ctx->msgcount] =
mutt_new_header
();
+ ctx->hdrs[ctx->msgcount] =
header_new
();
ctx->hdrs[ctx->msgcount]->index = ctx->msgcount;
nntp_parse_xover (ctx, line, ctx->hdrs[ctx->msgcount]);
ctx->hdrs[ctx->msgcount]->index = ctx->msgcount;
nntp_parse_xover (ctx, line, ctx->hdrs[ctx->msgcount]);
@@
-668,7
+683,7
@@
static int add_xover_line (char *line, void *c)
mutt_message ("%s %d/%d", fc->msg, num, total);
}
else
mutt_message ("%s %d/%d", fc->msg, num, total);
}
else
-
mutt_free_header
(&ctx->hdrs[ctx->msgcount]); /* skip it */
+
header_delete
(&ctx->hdrs[ctx->msgcount]); /* skip it */
return 0;
}
return 0;
}
@@
-699,24
+714,28
@@
static int nntp_fetch_headers (CONTEXT * ctx, unsigned int first,
fc.ctx = ctx;
fc.base = first;
fc.last = last;
fc.ctx = ctx;
fc.base = first;
fc.last = last;
- fc.messages = mem_calloc (last - first + 1, sizeof (unsigned short));
+ fc.messages = p_new(unsigned short, last - first + 1);
+#if WANT_LISTGROUP_COMMAND
if (nntp_data->nserv->hasLISTGROUP) {
snprintf (buf, sizeof (buf), "LISTGROUP %s\r\n", nntp_data->group);
if (nntp_data->nserv->hasLISTGROUP) {
snprintf (buf, sizeof (buf), "LISTGROUP %s\r\n", nntp_data->group);
- if (mutt_nntp_fetch (nntp_data, buf, NULL, nntp_fetch_numbers, &fc, 0) !=
+ if (mutt_nntp_fetch (nntp_data, buf, NULL,
NULL,
nntp_fetch_numbers, &fc, 0) !=
0) {
mutt_error (_("LISTGROUP command failed: %s"), buf);
sleep (2);
#ifdef DEBUG
nntp_error ("nntp_fetch_headers()", buf);
#endif
0) {
mutt_error (_("LISTGROUP command failed: %s"), buf);
sleep (2);
#ifdef DEBUG
nntp_error ("nntp_fetch_headers()", buf);
#endif
-
mem_free
(&fc.messages);
+
p_delete
(&fc.messages);
return -1;
}
}
else {
return -1;
}
}
else {
+#endif
for (num = 0; num < last - first + 1; num++)
fc.messages[num] = 1;
for (num = 0; num < last - first + 1; num++)
fc.messages[num] = 1;
+#if WANT_LISTGROUP_COMMAND
}
}
+#endif
/* CACHE: must be loaded xover cache here */
num = nntp_data->lastCached - first + 1;
/* CACHE: must be loaded xover cache here */
num = nntp_data->lastCached - first + 1;
@@
-753,7
+772,7
@@
static int nntp_fetch_headers (CONTEXT * ctx, unsigned int first,
}
num = last - first + 1;
if (num <= 0) {
}
num = last - first + 1;
if (num <= 0) {
-
mem_free
(&fc.messages);
+
p_delete
(&fc.messages);
return 0;
}
return 0;
}
@@
-768,7
+787,7
@@
static int nntp_fetch_headers (CONTEXT * ctx, unsigned int first,
fc.last = last;
fc.msg = msg;
snprintf (buf, sizeof (buf), "XOVER %d-%d\r\n", first, last);
fc.last = last;
fc.msg = msg;
snprintf (buf, sizeof (buf), "XOVER %d-%d\r\n", first, last);
- ret = mutt_nntp_fetch (nntp_data, buf, NULL, add_xover_line, &fc, 0);
+ ret = mutt_nntp_fetch (nntp_data, buf, NULL,
NULL,
add_xover_line, &fc, 0);
if (ctx->msgcount > oldmsgcount)
mx_update_context (ctx, ctx->msgcount - oldmsgcount);
if (ret != 0) {
if (ctx->msgcount > oldmsgcount)
mx_update_context (ctx, ctx->msgcount - oldmsgcount);
if (ret != 0) {
@@
-776,7
+795,7
@@
static int nntp_fetch_headers (CONTEXT * ctx, unsigned int first,
#ifdef DEBUG
nntp_error ("nntp_fetch_headers()", buf);
#endif
#ifdef DEBUG
nntp_error ("nntp_fetch_headers()", buf);
#endif
-
mem_free
(&fc.messages);
+
p_delete
(&fc.messages);
return -1;
}
/* fetched OK */
return -1;
}
/* fetched OK */
@@
-793,7
+812,7
@@
static int nntp_fetch_headers (CONTEXT * ctx, unsigned int first,
if (ctx->msgcount >= ctx->hdrmax)
mx_alloc_memory (ctx);
if (ctx->msgcount >= ctx->hdrmax)
mx_alloc_memory (ctx);
- h = ctx->hdrs[ctx->msgcount] =
mutt_new_header
();
+ h = ctx->hdrs[ctx->msgcount] =
header_new
();
h->index = ctx->msgcount;
ret = nntp_read_header (ctx, NULL, current);
h->index = ctx->msgcount;
ret = nntp_read_header (ctx, NULL, current);
@@
-803,16
+822,16
@@
static int nntp_fetch_headers (CONTEXT * ctx, unsigned int first,
mx_update_context (ctx, 1);
}
else
mx_update_context (ctx, 1);
}
else
-
mutt_free_header
(&h); /* skip it */
+
header_delete
(&h); /* skip it */
if (ret == -1) {
if (ret == -1) {
-
mem_free
(&fc.messages);
+
p_delete
(&fc.messages);
return -1;
}
if (current > nntp_data->lastLoaded)
nntp_data->lastLoaded = current;
}
return -1;
}
if (current > nntp_data->lastLoaded)
nntp_data->lastLoaded = current;
}
-
mem_free
(&fc.messages);
+
p_delete
(&fc.messages);
nntp_data->lastLoaded = last;
mutt_clear_error ();
return 0;
nntp_data->lastLoaded = last;
mutt_clear_error ();
return 0;
@@
-831,7
+850,7
@@
int nntp_open_mailbox (CONTEXT * ctx)
unsigned int first;
ACCOUNT acct;
unsigned int first;
ACCOUNT acct;
-
memset (&acct, 0, sizeof (ACCOUNT)
);
+
p_clear(&acct, 1
);
if (nntp_parse_url (ctx->path, &acct, buf, sizeof (buf)) < 0 || !*buf) {
mutt_error (_("%s is an invalid newsgroup specification!"), ctx->path);
if (nntp_parse_url (ctx->path, &acct, buf, sizeof (buf)) < 0 || !*buf) {
mutt_error (_("%s is an invalid newsgroup specification!"), ctx->path);
@@
-848,7
+867,7
@@
int nntp_open_mailbox (CONTEXT * ctx)
/* create NNTP-specific state struct if nof found in list */
if ((nntp_data = (NNTP_DATA *) hash_find (serv->newsgroups, buf)) == NULL) {
/* create NNTP-specific state struct if nof found in list */
if ((nntp_data = (NNTP_DATA *) hash_find (serv->newsgroups, buf)) == NULL) {
- nntp_data =
mem_calloc (1, sizeof (NNTP_DATA) + str_len
(buf) + 1);
+ nntp_data =
xmalloc(sizeof(NNTP_DATA) + m_strlen
(buf) + 1);
nntp_data->group = (char *) nntp_data + sizeof (NNTP_DATA);
strcpy (nntp_data->group, buf);
hash_insert (serv->newsgroups, nntp_data->group, nntp_data, 0);
nntp_data->group = (char *) nntp_data + sizeof (NNTP_DATA);
strcpy (nntp_data->group, buf);
hash_insert (serv->newsgroups, nntp_data->group, nntp_data, 0);
@@
-860,7
+879,7
@@
int nntp_open_mailbox (CONTEXT * ctx)
mutt_message (_("Selecting %s..."), nntp_data->group);
if (!nntp_data->desc) {
mutt_message (_("Selecting %s..."), nntp_data->group);
if (!nntp_data->desc) {
- nntp_get_desc (nntp_data, nntp_data->group, NULL);
+ nntp_get_desc (nntp_data, nntp_data->group, NULL
, NULL
);
if (nntp_data->desc)
nntp_save_cache_index (serv);
}
if (nntp_data->desc)
nntp_save_cache_index (serv);
}
@@
-873,11
+892,11
@@
int nntp_open_mailbox (CONTEXT * ctx)
return -1;
}
return -1;
}
- if (
str_ncmp
("211", buf, 3)) {
+ if (
m_strncmp
("211", buf, 3)) {
LIST *l = serv->list;
/* GROUP command failed */
LIST *l = serv->list;
/* GROUP command failed */
- if (!
str_ncmp
("411", buf, 3)) {
+ if (!
m_strncmp
("411", buf, 3)) {
mutt_error (_("Newsgroup %s not found on server %s"),
nntp_data->group, serv->conn->account.host);
mutt_error (_("Newsgroup %s not found on server %s"),
nntp_data->group, serv->conn->account.host);
@@
-920,8
+939,8
@@
int nntp_fetch_message (MESSAGE * msg, CONTEXT * ctx, int msgno)
char buf[LONG_STRING];
char path[_POSIX_PATH_MAX];
NNTP_CACHE *cache;
char buf[LONG_STRING];
char path[_POSIX_PATH_MAX];
NNTP_CACHE *cache;
- char *m = _("Fetching message...");
int ret;
int ret;
+ progress_t bar;
/* see if we already have the message in our cache */
cache =
/* see if we already have the message in our cache */
cache =
@@
-935,15
+954,13
@@
int nntp_fetch_message (MESSAGE * msg, CONTEXT * ctx, int msgno)
/* clear the previous entry */
unlink (cache->path);
/* clear the previous entry */
unlink (cache->path);
- free (cache->path);
-
- mutt_message (m);
+ p_delete(&cache->path);
cache->index = ctx->hdrs[msgno]->index;
mutt_mktemp (path);
cache->index = ctx->hdrs[msgno]->index;
mutt_mktemp (path);
- cache->path =
str_dup
(path);
+ cache->path =
m_strdup
(path);
if (!(msg->fp = safe_fopen (path, "w+"))) {
if (!(msg->fp = safe_fopen (path, "w+"))) {
-
mem_free
(&cache->path);
+
p_delete
(&cache->path);
return -1;
}
return -1;
}
@@
-954,7
+971,11
@@
int nntp_fetch_message (MESSAGE * msg, CONTEXT * ctx, int msgno)
snprintf (buf, sizeof (buf), "ARTICLE %d\r\n",
ctx->hdrs[msgno]->article_num);
snprintf (buf, sizeof (buf), "ARTICLE %d\r\n",
ctx->hdrs[msgno]->article_num);
- ret = mutt_nntp_fetch ((NNTP_DATA *) ctx->data, buf, m, nntp_read_tempfile,
+ bar.msg = _("Fetching message...");
+ bar.size = 0;
+ mutt_progress_bar (&bar, 0);
+
+ ret = mutt_nntp_fetch ((NNTP_DATA *) ctx->data, buf, NULL, &bar, nntp_read_tempfile,
msg->fp, ctx->tagged);
if (ret == 1) {
mutt_error (_("Article %d not found on server"),
msg->fp, ctx->tagged);
if (ret == 1) {
mutt_error (_("Article %d not found on server"),
@@
-965,16
+986,16
@@
int nntp_fetch_message (MESSAGE * msg, CONTEXT * ctx, int msgno)
if (ret) {
fclose (msg->fp);
unlink (path);
if (ret) {
fclose (msg->fp);
unlink (path);
-
mem_free
(&cache->path);
+
p_delete
(&cache->path);
return -1;
}
return -1;
}
-
mutt_free_envelope
(&ctx->hdrs[msgno]->env);
+
envelope_delete
(&ctx->hdrs[msgno]->env);
ctx->hdrs[msgno]->env =
mutt_read_rfc822_header (msg->fp, ctx->hdrs[msgno], 0, 0);
/* fix content length */
ctx->hdrs[msgno]->env =
mutt_read_rfc822_header (msg->fp, ctx->hdrs[msgno], 0, 0);
/* fix content length */
- fseek (msg->fp, 0, SEEK_END);
- ctx->hdrs[msgno]->content->length = ftell (msg->fp) -
+ fseek
o
(msg->fp, 0, SEEK_END);
+ ctx->hdrs[msgno]->content->length = ftell
o
(msg->fp) -
ctx->hdrs[msgno]->content->offset;
/* this is called in mutt before the open which fetches the message,
ctx->hdrs[msgno]->content->offset;
/* this is called in mutt before the open which fetches the message,
@@
-1019,7
+1040,7
@@
int nntp_post (const char *msg)
return -1;
}
return -1;
}
-
strfcpy (buf, "POST\r\n", sizeof (buf)
);
+
m_strcpy(buf, sizeof(buf), "POST\r\n"
);
if (mutt_nntp_query (nntp_data, buf, sizeof (buf)) < 0) {
mutt_error (_("Can't post article. Connection to %s lost."),
nntp_data->nserv->conn->account.host);
if (mutt_nntp_query (nntp_data, buf, sizeof (buf)) < 0) {
mutt_error (_("Can't post article. Connection to %s lost."),
nntp_data->nserv->conn->account.host);
@@
-1033,7
+1054,7
@@
int nntp_post (const char *msg)
buf[0] = '.';
buf[1] = '\0';
while (fgets (buf + 1, sizeof (buf) - 2, f) != NULL) {
buf[0] = '.';
buf[1] = '\0';
while (fgets (buf + 1, sizeof (buf) - 2, f) != NULL) {
- len =
str_len
(buf);
+ len =
m_strlen
(buf);
if (buf[len - 1] == '\n') {
buf[len - 1] = '\r';
buf[len] = '\n';
if (buf[len - 1] == '\n') {
buf[len - 1] = '\r';
buf[len] = '\n';
@@
-1047,7
+1068,7
@@
int nntp_post (const char *msg)
}
fclose (f);
}
fclose (f);
- if (buf[
str_len
(buf) - 1] != '\n')
+ if (buf[
m_strlen
(buf) - 1] != '\n')
mutt_socket_write_d (nntp_data->nserv->conn, "\r\n", M_SOCK_LOG_HDR);
mutt_socket_write_d (nntp_data->nserv->conn, ".\r\n", M_SOCK_LOG_HDR);
if (mutt_socket_readln (buf, sizeof (buf), nntp_data->nserv->conn) < 0) {
mutt_socket_write_d (nntp_data->nserv->conn, "\r\n", M_SOCK_LOG_HDR);
mutt_socket_write_d (nntp_data->nserv->conn, ".\r\n", M_SOCK_LOG_HDR);
if (mutt_socket_readln (buf, sizeof (buf), nntp_data->nserv->conn) < 0) {
@@
-1092,22
+1113,22
@@
static void nntp_free_acache (NNTP_DATA * data)
for (i = 0; i < NNTP_CACHE_LEN; i++) {
if (data->acache[i].path) {
unlink (data->acache[i].path);
for (i = 0; i < NNTP_CACHE_LEN; i++) {
if (data->acache[i].path) {
unlink (data->acache[i].path);
-
mem_free
(&data->acache[i].path);
+
p_delete
(&data->acache[i].path);
}
}
}
void nntp_delete_data (void *p)
{
}
}
}
void nntp_delete_data (void *p)
{
- NNTP_DATA *data = (NNTP_DATA *)
p;
+ NNTP_DATA *data = (NNTP_DATA *)p;
if (!p)
return;
if (!p)
return;
-
mem_free
(&data->entries);
-
mem_free
(&data->desc);
-
mem_free
(&data->cache);
+
p_delete
(&data->entries);
+
p_delete
(&data->desc);
+
p_delete
(&data->cache);
nntp_free_acache (data);
nntp_free_acache (data);
-
mem_free (p
);
+
p_delete(&data
);
}
int nntp_sync_mailbox (CONTEXT * ctx, int unused1, int* unused2)
}
int nntp_sync_mailbox (CONTEXT * ctx, int unused1, int* unused2)
@@
-1188,7
+1209,7
@@
static int _nntp_check_mailbox (CONTEXT * ctx, NNTP_DATA * nntp_data)
#endif
return -1;
}
#endif
return -1;
}
- if (
str_ncmp
("211", buf, 3)) {
+ if (
m_strncmp
("211", buf, 3)) {
buf[0] = 0;
if (mutt_nntp_query (nntp_data, buf, sizeof (buf)) < 0) {
#ifdef DEBUG
buf[0] = 0;
if (mutt_nntp_query (nntp_data, buf, sizeof (buf)) < 0) {
#ifdef DEBUG
@@
-1197,7
+1218,7
@@
static int _nntp_check_mailbox (CONTEXT * ctx, NNTP_DATA * nntp_data)
return -1;
}
}
return -1;
}
}
- if (!
str_ncmp
("211", buf, 3)) {
+ if (!
m_strncmp
("211", buf, 3)) {
int first;
int last;
int first;
int last;
@@
-1216,7
+1237,7
@@
static int _nntp_check_mailbox (CONTEXT * ctx, NNTP_DATA * nntp_data)
/* active was renumbered? */
if (last < nntp_data->lastLoaded) {
if (!nntp_data->max) {
/* active was renumbered? */
if (last < nntp_data->lastLoaded) {
if (!nntp_data->max) {
- nntp_data->entries =
mem_calloc (5, sizeof (NEWSRC_ENTRY)
);
+ nntp_data->entries =
p_new(NEWSRC_ENTRY, 5
);
nntp_data->max = 5;
}
nntp_data->lastCached = 0;
nntp_data->max = 5;
}
nntp_data->lastCached = 0;
@@
-1257,7
+1278,7
@@
static int add_group (char *buf, void *serv)
return 0;
if ((nntp_data = (NNTP_DATA *) hash_find (s->newsgroups, group)) == NULL) {
n++;
return 0;
if ((nntp_data = (NNTP_DATA *) hash_find (s->newsgroups, group)) == NULL) {
n++;
- nntp_data =
mem_calloc (1, sizeof (NNTP_DATA) + str_len
(group) + 1);
+ nntp_data =
xmalloc(sizeof(NNTP_DATA) + m_strlen
(group) + 1);
nntp_data->group = (char *) nntp_data + sizeof (NNTP_DATA);
strcpy (nntp_data->group, group);
nntp_data->nserv = s;
nntp_data->group = (char *) nntp_data + sizeof (NNTP_DATA);
strcpy (nntp_data->group, group);
nntp_data->nserv = s;
@@
-1274,9
+1295,9
@@
static int add_group (char *buf, void *serv)
else
nntp_data->allowed = 0;
if (nntp_data->desc)
else
nntp_data->allowed = 0;
if (nntp_data->desc)
-
mem_free
(&nntp_data->desc);
+
p_delete
(&nntp_data->desc);
if (*desc)
if (*desc)
- nntp_data->desc =
str_dup
(desc);
+ nntp_data->desc =
m_strdup
(desc);
if (nntp_data->rc || nntp_data->lastCached)
mutt_newsgroup_stat (nntp_data);
else if (nntp_data->lastMessage &&
if (nntp_data->rc || nntp_data->lastCached)
mutt_newsgroup_stat (nntp_data);
else if (nntp_data->lastMessage &&
@@
-1332,7
+1353,7
@@
int nntp_check_newgroups (NNTP_SERVER * serv, int force)
else
nntp_data.group = NULL;
l = serv->tail;
else
nntp_data.group = NULL;
l = serv->tail;
- if (mutt_nntp_fetch (&nntp_data, buf, _("Adding new newsgroups..."),
+ if (mutt_nntp_fetch (&nntp_data, buf, _("Adding new newsgroups..."),
NULL,
add_group, serv, 0) != 0) {
#ifdef DEBUG
nntp_error ("nntp_check_newgroups()", buf);
add_group, serv, 0) != 0) {
#ifdef DEBUG
nntp_error ("nntp_check_newgroups()", buf);
@@
-1351,7
+1372,7
@@
int nntp_check_newgroups (NNTP_SERVER * serv, int force)
l = l->next;
((NNTP_DATA *) l->data)->new = 1;
nntp_get_desc ((NNTP_DATA *) l->data, ((NNTP_DATA *) l->data)->group,
l = l->next;
((NNTP_DATA *) l->data)->new = 1;
nntp_get_desc ((NNTP_DATA *) l->data, ((NNTP_DATA *) l->data)->group,
- NULL);
+ NULL
, NULL
);
}
if (emp.next)
nntp_save_cache_index (serv);
}
if (emp.next)
nntp_save_cache_index (serv);
@@
-1381,7
+1402,7
@@
int nntp_get_cache_all (NNTP_SERVER * serv)
return 0;
}
else {
return 0;
}
else {
-
mem_free
(&serv->cache);
+
p_delete
(&serv->cache);
return -1;
}
}
return -1;
}
}
@@
-1404,16
+1425,16
@@
int nntp_get_active (NNTP_SERVER * serv)
nntp_data.nserv = serv;
nntp_data.group = NULL;
nntp_data.nserv = serv;
nntp_data.group = NULL;
- if (mutt_nntp_fetch (&nntp_data, "LIST\r\n", msg, add_group, serv, 0) < 0) {
+ if (mutt_nntp_fetch (&nntp_data, "LIST\r\n", msg,
NULL,
add_group, serv, 0) < 0) {
#ifdef DEBUG
nntp_error ("nntp_get_active()", "LIST\r\n");
#endif
return -1;
}
#ifdef DEBUG
nntp_error ("nntp_get_active()", "LIST\r\n");
#endif
return -1;
}
-
strfcpy (msg, _("Loading descriptions..."), sizeof (msg
));
+
m_strcpy(msg, sizeof(msg), _("Loading descriptions..."
));
mutt_message (msg);
mutt_message (msg);
- nntp_get_desc (&nntp_data, "*", msg);
+ nntp_get_desc (&nntp_data, "*", msg
, NULL
);
for (tmp = serv->list; tmp; tmp = tmp->next) {
NNTP_DATA *data = (NNTP_DATA *) tmp->data;
for (tmp = serv->list; tmp; tmp = tmp->next) {
NNTP_DATA *data = (NNTP_DATA *) tmp->data;
@@
-1443,7
+1464,7
@@
int nntp_check_msgid (CONTEXT * ctx, const char *msgid)
return 1;
if (ctx->msgcount == ctx->hdrmax)
mx_alloc_memory (ctx);
return 1;
if (ctx->msgcount == ctx->hdrmax)
mx_alloc_memory (ctx);
- ctx->hdrs[ctx->msgcount] =
mutt_new_header
();
+ ctx->hdrs[ctx->msgcount] =
header_new
();
ctx->hdrs[ctx->msgcount]->index = ctx->msgcount;
mutt_message (_("Fetching %s from server..."), msgid);
ctx->hdrs[ctx->msgcount]->index = ctx->msgcount;
mutt_message (_("Fetching %s from server..."), msgid);
@@
-1451,7
+1472,7
@@
int nntp_check_msgid (CONTEXT * ctx, const char *msgid)
/* since nntp_read_header() may set read flag, we must reset it */
ctx->hdrs[ctx->msgcount]->read = 0;
if (ret != 0)
/* since nntp_read_header() may set read flag, we must reset it */
ctx->hdrs[ctx->msgcount]->read = 0;
if (ret != 0)
-
mutt_free_header
(&ctx->hdrs[ctx->msgcount]);
+
header_delete
(&ctx->hdrs[ctx->msgcount]);
else {
ctx->msgcount++;
mx_update_context (ctx, 1);
else {
ctx->msgcount++;
mx_update_context (ctx, 1);
@@
-1478,7
+1499,7
@@
static int check_children (char *s, void *c)
if (cc->ctx->hdrs[i]->article_num == n)
return 0;
if (cc->num >= cc->max)
if (cc->ctx->hdrs[i]->article_num == n)
return 0;
if (cc->num >= cc->max)
-
mem_realloc (&cc->child, sizeof (unsigned int) * (cc->max += 25)
);
+
p_realloc(&cc->child, cc->max += 25
);
cc->child[cc->num++] = n;
return 0;
cc->child[cc->num++] = n;
return 0;
@@
-1509,9
+1530,9
@@
int nntp_check_children (CONTEXT * ctx, const char *msgid)
cc.ctx = ctx;
cc.num = 0;
cc.max = 25;
cc.ctx = ctx;
cc.num = 0;
cc.max = 25;
- cc.child =
mem_malloc (sizeof (unsigned int) *
25);
- if (mutt_nntp_fetch (nntp_data, buf, NULL, check_children, &cc, 0)) {
-
mem_free
(&cc.child);
+ cc.child =
p_new(unsigned int,
25);
+ if (mutt_nntp_fetch (nntp_data, buf, NULL,
NULL,
check_children, &cc, 0)) {
+
p_delete
(&cc.child);
return -1;
}
/* dont try to read the xover cache. check_children() already
return -1;
}
/* dont try to read the xover cache. check_children() already
@@
-1531,6
+1552,6
@@
int nntp_check_children (CONTEXT * ctx, const char *msgid)
}
if (tmp)
set_option (OPTNEWSCACHE);
}
if (tmp)
set_option (OPTNEWSCACHE);
-
mem_free
(&cc.child);
+
p_delete
(&cc.child);
return ret;
}
return ret;
}