# include "mutt_ssl.h"
#endif
+#include "lib/mem.h"
+#include "lib/intl.h"
+#include "lib/debug.h"
+
#include <string.h>
#include <unistd.h>
#include <ctype.h>
t = strchr (pop_data->err_msg, '\0');
c = msg;
- if (!mutt_strncmp (msg, "-ERR ", 5)) {
+ if (!safe_strncmp (msg, "-ERR ", 5)) {
c2 = msg + 5;
SKIPWS (c2);
}
else if (!ascii_strncasecmp (line, "STLS", 4))
- pop_data->cmd_stls = 1;
+ pop_data->cmd_stls = CMD_AVAILABLE;
else if (!ascii_strncasecmp (line, "USER", 4))
- pop_data->cmd_user = 1;
+ pop_data->cmd_user = CMD_AVAILABLE;
else if (!ascii_strncasecmp (line, "UIDL", 4))
- pop_data->cmd_uidl = 1;
+ pop_data->cmd_uidl = CMD_AVAILABLE;
else if (!ascii_strncasecmp (line, "TOP", 3))
- pop_data->cmd_top = 1;
+ pop_data->cmd_top = CMD_AVAILABLE;
return 0;
}
/* init capabilities */
if (mode == 0) {
- pop_data->cmd_capa = 0;
- pop_data->cmd_stls = 0;
- pop_data->cmd_user = 0;
- pop_data->cmd_uidl = 0;
- pop_data->cmd_top = 0;
+ pop_data->cmd_capa = CMD_NOT_AVAILABLE;
+ pop_data->cmd_stls = CMD_NOT_AVAILABLE;
+ pop_data->cmd_user = CMD_NOT_AVAILABLE;
+ pop_data->cmd_uidl = CMD_NOT_AVAILABLE;
+ pop_data->cmd_top = CMD_NOT_AVAILABLE;
pop_data->resp_codes = 0;
pop_data->expire = 1;
pop_data->login_delay = 0;
}
/* Execute CAPA command */
- if (mode == 0 || pop_data->cmd_capa) {
+ if (mode == 0 || pop_data->cmd_capa != CMD_NOT_AVAILABLE) {
strfcpy (buf, "CAPA\r\n", sizeof (buf));
switch (pop_fetch_data (pop_data, buf, NULL, fetch_capa, pop_data)) {
case PQ_OK:
{
- pop_data->cmd_capa = 1;
+ pop_data->cmd_capa = CMD_AVAILABLE;
+ break;
+ }
+ case PQ_ERR:
+ {
+ pop_data->cmd_capa = CMD_NOT_AVAILABLE;
break;
}
case PQ_NOT_CONNECTED:
}
/* CAPA not supported, use defaults */
- if (mode == 0 && !pop_data->cmd_capa) {
- pop_data->cmd_user = 2;
- pop_data->cmd_uidl = 2;
- pop_data->cmd_top = 2;
+ if (mode == 0 && pop_data->cmd_capa == CMD_NOT_AVAILABLE) {
+ pop_data->cmd_user = CMD_UNKNOWN;
+ pop_data->cmd_uidl = CMD_UNKNOWN;
+ pop_data->cmd_top = CMD_UNKNOWN;
strfcpy (buf, "AUTH\r\n", sizeof (buf));
if (pop_fetch_data (pop_data, buf, NULL, fetch_auth, pop_data) == PQ_NOT_CONNECTED)
if (!pop_data->expire)
msg = _("Unable to leave messages on server.");
- if (!pop_data->cmd_top)
+ if (pop_data->cmd_top == CMD_NOT_AVAILABLE)
msg = _("Command TOP is not supported by server.");
- if (!pop_data->cmd_uidl)
+ if (pop_data->cmd_uidl == CMD_NOT_AVAILABLE)
msg = _("Command UIDL is not supported by server.");
- if (msg && pop_data->cmd_capa) {
+ if (msg && pop_data->cmd_capa != CMD_AVAILABLE) {
mutt_error (msg);
return PQ_ERR;
}
* -1 - conection lost,
* -2 - invalid response.
*/
-int pop_connect (POP_DATA * pop_data)
+pop_query_status pop_connect (POP_DATA * pop_data)
{
char buf[LONG_STRING];
mutt_socket_readln (buf, sizeof (buf), pop_data->conn) < 0) {
mutt_error (_("Error connecting to server: %s"),
pop_data->conn->account.host);
- return -1;
+ return PQ_NOT_CONNECTED;
}
pop_data->status = POP_CONNECTED;
- if (mutt_strncmp (buf, "+OK", 3)) {
+ if (safe_strncmp (buf, "+OK", 3)) {
*pop_data->err_msg = '\0';
pop_error (pop_data, buf);
mutt_error ("%s", pop_data->err_msg);
- return -2;
+ return PQ_ERR;
}
pop_apop_timestamp (pop_data, buf);
- return 0;
+ return PQ_OK;
}
/*
/* print msg instaed of real command */
if (msg) {
dbg = M_SOCK_LOG_FULL;
- dprint (M_SOCK_LOG_CMD, (debugfile, "> %s", msg));
+ debug_print (M_SOCK_LOG_CMD, ("> %s", msg));
}
#endif
pop_data->status = POP_DISCONNECTED;
return PQ_NOT_CONNECTED;
}
- if (!mutt_strncmp (buf, "+OK", 3))
+ if (!safe_strncmp (buf, "+OK", 3))
return PQ_OK;
pop_error (pop_data, buf);
sscanf (line, "%u %s", &index, line);
for (i = 0; i < ctx->msgcount; i++) {
- if (!mutt_strcmp (ctx->hdrs[i]->data, line)) {
+ if (!safe_strcmp (ctx->hdrs[i]->data, line)) {
ctx->hdrs[i]->refno = index;
break;
}
return 0;
}
-/* reconnect and verify idnexes if connection was lost */
+/* reconnect and verify indexes if connection was lost */
pop_query_status pop_reconnect (CONTEXT * ctx)
{
pop_query_status ret;