X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=pop%2Fpop_lib.c;h=f6587efc5789c723f1dde80db1c6be79bcdf6783;hp=763dffc3051ed1bd8d8be82ce803a3604cf48adc;hb=8fac066483c9ae3176984527c037190fca9dc7f0;hpb=238b70e39b78f585c586bd51aef41988b3cc73d1 diff --git a/pop/pop_lib.c b/pop/pop_lib.c index 763dffc..f6587ef 100644 --- a/pop/pop_lib.c +++ b/pop/pop_lib.c @@ -7,51 +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 "mutt.h" -#include "mx.h" -#include "url.h" #include "pop.h" -#if defined (USE_SSL) || defined (USE_GNUTLS) -# include "mutt_ssl.h" -#endif - -#include "lib/debug.h" - -#include -#include -#include /* 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; } @@ -68,15 +51,13 @@ void pop_error (POP_DATA * pop_data, char *msg) c = msg; if (!m_strncmp(msg, "-ERR ", 5)) { - c2 = msg + 5; - SKIPWS (c2); - + c2 = vskipspaces(msg + 5); if (*c2) c = c2; } m_strcpy(t, sizeof(pop_data->err_msg) - strlen(pop_data->err_msg), c); - str_skip_trailws (pop_data->err_msg); + m_strrtrim(pop_data->err_msg); } /* Parse CAPA output */ @@ -87,8 +68,7 @@ static int fetch_capa (char *line, void *data) if (!ascii_strncasecmp (line, "SASL", 4)) { p_delete(&pop_data->auth_list); - c = line + 4; - SKIPWS (c); + c = vskipspaces(line + 4); pop_data->auth_list = m_strdup(c); } @@ -111,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; } @@ -261,7 +243,6 @@ 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)) @@ -284,9 +265,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); @@ -310,7 +289,6 @@ pop_query_status pop_open_connection (POP_DATA * pop_data) mutt_sleep (1); return -2; } -#endif ret = pop_authenticate (pop_data); if (ret == PQ_NOT_CONNECTED) @@ -385,23 +363,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'; @@ -447,8 +416,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; @@ -465,10 +433,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) @@ -486,14 +453,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; } }