X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=pop%2Fpop_lib.c;h=693259d90325feb4554104a512123aeef4240fb2;hp=38454ef1476807b108a7038fb3eca2709b433afc;hb=4f1b1414371cc373f50ca79a888928635a3a3763;hpb=ccf2b75a9ed50a79c4d8e5d6235c7313fcd3719a;ds=sidebyside diff --git a/pop/pop_lib.c b/pop/pop_lib.c index 38454ef..693259d 100644 --- a/pop/pop_lib.c +++ b/pop/pop_lib.c @@ -7,50 +7,34 @@ * please see the file GPL in the top level source directory. */ -#if HAVE_CONFIG_H -# include "config.h" -#endif - -#include -#include -#include - -#include -#include -#include -#include -#include +#include +#include #include "mutt.h" -#include "mx.h" -#include "url.h" #include "pop.h" -#if defined (USE_SSL) || defined (USE_GNUTLS) -# include -#endif /* given an POP mailbox name, return host, port, username and password */ -int pop_parse_path (const char *path, ACCOUNT * acct) +int pop_parse_path (const char *path, ACCOUNT * act) { ciss_url_t url; char *c; int ret = -1; /* Defaults */ - acct->flags = 0; - acct->port = POP_PORT; - acct->type = M_ACCT_TYPE_POP; + act->flags = 0; + act->port = POP_PORT; + act->type = M_ACCT_TYPE_POP; c = m_strdup(path); url_parse_ciss (&url, c); if (url.scheme == U_POP || url.scheme == U_POPS) { if (url.scheme == U_POPS) { - acct->flags |= M_ACCT_SSL; - acct->port = POP_SSL_PORT; + act->flags |= M_ACCT_SSL; + act->port = POP_SSL_PORT; } - if ((!url.path || !*url.path) && mutt_account_fromurl (acct, &url) == 0) + if ((!url.path || !*url.path) && mutt_account_fromurl (act, &url) == 0) ret = 0; } @@ -107,15 +91,17 @@ static int fetch_capa (char *line, void *data) static int fetch_auth (char *line, void *data) { POP_DATA *pop_data = (POP_DATA *) data; + ssize_t auth_list_len; if (!pop_data->auth_list) { - pop_data->auth_list = p_new(char, strlen(line) + 1); + auth_list_len = m_strlen(line) + 1; + pop_data->auth_list = p_new(char, auth_list_len); } else { - p_realloc(&pop_data->auth_list, - strlen(pop_data->auth_list) + strlen(line) + 2); - strcat (pop_data->auth_list, " "); /* __STRCAT_CHECKED__ */ + auth_list_len = m_strlen(pop_data->auth_list) + m_strlen(line) + 2; + p_realloc(&pop_data->auth_list, auth_list_len); + m_strcat(pop_data->auth_list, auth_list_len, " "); } - strcat (pop_data->auth_list, line); /* __STRCAT_CHECKED__ */ + m_strcat(pop_data->auth_list, auth_list_len, line); return 0; } @@ -257,18 +243,13 @@ pop_query_status pop_open_connection (POP_DATA * pop_data) return PQ_ERR; } -#if (defined(USE_SSL) || defined(USE_GNUTLS)) /* Attempt STLS if available and desired. */ - if (!pop_data->conn->ssf && (pop_data->cmd_stls || option(OPTSSLFORCETLS))) { - if (option (OPTSSLFORCETLS)) + if (!pop_data->conn->ssf && (pop_data->cmd_stls || mod_ssl.force_tls)) { + if (mod_ssl.force_tls) pop_data->use_stls = 2; if (pop_data->use_stls == 0) { - ret = query_quadoption (OPT_SSLSTARTTLS, - _("Secure connection with TLS?")); - if (ret == -1) - return PQ_ERR; pop_data->use_stls = 1; - if (ret == M_YES) + if (mod_ssl.starttls) pop_data->use_stls = 2; } if (pop_data->use_stls == 2) { @@ -280,9 +261,7 @@ pop_query_status pop_open_connection (POP_DATA * pop_data) mutt_error ("%s", pop_data->err_msg); mutt_sleep (2); } -#if defined (USE_SSL) || defined (USE_GNUTLS) else if (mutt_ssl_starttls (pop_data->conn)) -#endif { mutt_error (_("Could not negotiate TLS connection")); mutt_sleep (2); @@ -301,12 +280,11 @@ pop_query_status pop_open_connection (POP_DATA * pop_data) } } - if (option(OPTSSLFORCETLS) && !pop_data->conn->ssf) { + if (mod_ssl.force_tls && !pop_data->conn->ssf) { mutt_error _("Encrypted connection unavailable"); mutt_sleep (1); return -2; } -#endif ret = pop_authenticate (pop_data); if (ret == PQ_NOT_CONNECTED) @@ -381,23 +359,14 @@ void pop_logout (CONTEXT * ctx) * -1 - conection lost, * -2 - invalid command or execution error. */ -pop_query_status pop_query_d (POP_DATA * pop_data, char *buf, size_t buflen, const char *msg) +pop_query_status pop_query (POP_DATA * pop_data, char *buf, size_t buflen) { - int dbg = M_SOCK_LOG_CMD; char *c; if (pop_data->status != POP_CONNECTED) return PQ_NOT_CONNECTED; -#ifdef DEBUG - /* print msg instaed of real command */ - if (msg) { - dbg = M_SOCK_LOG_FULL; - debug_print (M_SOCK_LOG_CMD, ("> %s", msg)); - } -#endif - - mutt_socket_write_d (pop_data->conn, buf, dbg); + mutt_socket_write(pop_data->conn, buf); c = strpbrk (buf, " \r\n"); *c = '\0'; @@ -443,8 +412,7 @@ pop_query_status pop_fetch_data (POP_DATA * pop_data, const char *query, progres for (;;) { chunk = - mutt_socket_readln_d (buf, sizeof (buf), pop_data->conn, - M_SOCK_LOG_HDR); + mutt_socket_readln(buf, sizeof (buf), pop_data->conn); if (chunk < 0) { pop_data->status = POP_DISCONNECTED; ret = PQ_NOT_CONNECTED; @@ -461,10 +429,9 @@ pop_query_status pop_fetch_data (POP_DATA * pop_data, const char *query, progres m_strcpy(inbuf + lenbuf,sizeof(buf), p); pos += chunk; - if (chunk >= sizeof (buf)) { + if (chunk >= ssizeof(buf)) { lenbuf += strlen (p); - } - else { + } else { if (bar) mutt_progress_bar (bar, pos); if (ret == 0 && funct (inbuf, data) < 0) @@ -482,14 +449,13 @@ pop_query_status pop_fetch_data (POP_DATA * pop_data, const char *query, progres /* find message with this UIDL and set refno */ static int check_uidl (char *line, void *data) { - int i; - unsigned int index; - CONTEXT *ctx = (CONTEXT *) data; + int i, idx; + CONTEXT *ctx = (CONTEXT *)data; - sscanf (line, "%u %s", &index, line); + sscanf (line, "%u %s", &idx, line); for (i = 0; i < ctx->msgcount; i++) { if (!m_strcmp(ctx->hdrs[i]->data, line)) { - ctx->hdrs[i]->refno = index; + ctx->hdrs[i]->refno = idx; break; } }