pop fixes.
[apps/madmutt.git] / pop.c
diff --git a/pop.c b/pop.c
index ea0cb8c..30dcf2d 100644 (file)
--- a/pop.c
+++ b/pop.c
@@ -105,16 +105,12 @@ static void pop_error(pop_data_t *pop_data, const char *msg)
 */
 static pop_query_status _pop_query(pop_data_t *pop_data, char *buf, ssize_t buflen)
 {
-    char *c;
-
     if (pop_data->status != POP_CONNECTED)
         return PQ_NOT_CONNECTED;
 
     mutt_socket_write(pop_data->conn, buf);
-
-    c  = strpbrk(buf, " \r\n");
-    *c = '\0';
-    snprintf(pop_data->err_msg, sizeof(pop_data->err_msg), "%s: ", buf);
+    snprintf(pop_data->err_msg, sizeof(pop_data->err_msg), "%.*s: ",
+             (int)(strpbrk(buf, " \r\n") - buf), buf);
 
     if (mutt_socket_readln(buf, buflen, pop_data->conn) < 0) {
         pop_data->status = POP_DISCONNECTED;
@@ -159,7 +155,7 @@ static pop_query_status pop_connect(pop_data_t * pop_data)
 
     p_delete(&pop_data->timestamp);
     if ((p = strchr(buf, '<')) && (q = strchr(p, '>'))) {
-        pop_data->timestamp = p_dupstr(p, q - p);
+        pop_data->timestamp = p_dupstr(p, q + 1 - p);
     }
     return PQ_OK;
 }
@@ -1221,18 +1217,18 @@ void pop_fetch_mail (void)
   pop_data_t *pop_data;
   ssize_t plen;
 
-  if (!PopHost) {
+  if (m_strisempty(PopHost)) {
     mutt_error _("POP host is not defined.");
     return;
   }
 
   plen = m_strlen(PopHost) + 7;
-  url = p = p_new(char, plen);
+  url  = p = p_new(char, plen);
   if (url_check_scheme (PopHost) == U_UNKNOWN) {
-    plen -= m_strcpy(url, plen, "pop://");
-    p += plen;
+      snprintf(p, plen, "pop://%s", PopHost);
+  } else {
+      m_strcpy(p, plen, PopHost);
   }
-  m_strcpy(p, plen, PopHost);
 
   ret = pop_parse_path (url, &act);
   p_delete(&url);