summaryrefslogtreecommitdiff
path: root/noncore/net/mail/pop3wrapper.cpp
Unidiff
Diffstat (limited to 'noncore/net/mail/pop3wrapper.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/mail/pop3wrapper.cpp57
1 files changed, 41 insertions, 16 deletions
diff --git a/noncore/net/mail/pop3wrapper.cpp b/noncore/net/mail/pop3wrapper.cpp
index 46c854b..2411399 100644
--- a/noncore/net/mail/pop3wrapper.cpp
+++ b/noncore/net/mail/pop3wrapper.cpp
@@ -1,2 +1,2 @@
1 1#include <stdlib.h>
2#include "pop3wrapper.h" 2#include "pop3wrapper.h"
@@ -45,4 +45,5 @@ RecBody POP3wrapper::parseBody( const char *message )
45 int err = MAILIMF_NO_ERROR; 45 int err = MAILIMF_NO_ERROR;
46 size_t curTok; 46 /* these vars are used recurcive! set it to 0!!!!!!!!!!!!!!!!! */
47 mailimf_message *result; 47 size_t curTok = 0;
48 mailimf_message *result = 0;
48 RecBody body; 49 RecBody body;
@@ -50,3 +51,6 @@ RecBody POP3wrapper::parseBody( const char *message )
50 err = mailimf_message_parse( (char *) message, strlen( message ), &curTok, &result ); 51 err = mailimf_message_parse( (char *) message, strlen( message ), &curTok, &result );
51 if ( err != MAILIMF_NO_ERROR ) return body; 52 if ( err != MAILIMF_NO_ERROR ) {
53 if (result) mailimf_message_free(result);
54 return body;
55 }
52 56
@@ -54,6 +58,6 @@ RecBody POP3wrapper::parseBody( const char *message )
54 qDebug( "POP3: bodytext found" ); 58 qDebug( "POP3: bodytext found" );
55 // TODO: why does this line segfault???? gdb says segfault in strlen(), maybe a bug in libetpan. 59 // when curTok isn't set to 0 this line will fault! 'cause upper line faults!
56 body.setBodytext( QString( result->msg_body->bd_text ) ); 60 body.setBodytext( QString( result->msg_body->bd_text ) );
57 } 61 }
58 62 if (result) mailimf_message_free(result);
59 return body; 63 return body;
@@ -64,5 +68,6 @@ void POP3wrapper::listMessages(const QString &, QList<RecMail> &target )
64 int err = MAILPOP3_NO_ERROR; 68 int err = MAILPOP3_NO_ERROR;
65 char *header; 69 char * header = 0;
66 size_t length; 70 /* these vars are used recurcive! set it to 0!!!!!!!!!!!!!!!!! */
67 carray *messages; 71 size_t length = 0;
72 carray * messages = 0;
68 73
@@ -72,5 +77,6 @@ void POP3wrapper::listMessages(const QString &, QList<RecMail> &target )
72 77
73 for ( int i = carray_count( messages ); i > 0; i-- ) { 78 //for ( int i = carray_count( messages ); i > 0; i-- ) {
74 mailpop3_msg_info *info = (mailpop3_msg_info *) carray_get( messages, i - 1 ); 79 for (unsigned int i = 0; i < carray_count(messages);++i) {
75 80 mailpop3_msg_info *info;
81 int r = mailpop3_get_msg_info(m_pop3,i+1,&info);
76 err = mailpop3_header( m_pop3, info->msg_index, &header, &length ); 82 err = mailpop3_header( m_pop3, info->msg_index, &header, &length );
@@ -78,2 +84,3 @@ void POP3wrapper::listMessages(const QString &, QList<RecMail> &target )
78 qDebug( "POP3: error retrieving header msgid: %i", info->msg_index ); 84 qDebug( "POP3: error retrieving header msgid: %i", info->msg_index );
85 free(header);
79 logout(); 86 logout();
@@ -85,4 +92,4 @@ void POP3wrapper::listMessages(const QString &, QList<RecMail> &target )
85 target.append( mail ); 92 target.append( mail );
93 free(header);
86 } 94 }
87
88 logout(); 95 logout();
@@ -93,6 +100,8 @@ RecMail *POP3wrapper::parseHeader( const char *header )
93 int err = MAILIMF_NO_ERROR; 100 int err = MAILIMF_NO_ERROR;
94 size_t curTok; 101 size_t curTok = 0;
95 RecMail *mail = new RecMail(); 102 RecMail *mail = new RecMail();
96 mailimf_fields *fields; 103 mailimf_fields *fields;
97 104 mailimf_references * refs;
105 mailimf_keywords*keys;
106
98 err = mailimf_fields_parse( (char *) header, strlen( header ), &curTok, &fields ); 107 err = mailimf_fields_parse( (char *) header, strlen( header ), &curTok, &fields );
@@ -119,2 +128,18 @@ RecMail *POP3wrapper::parseHeader( const char *header )
119 break; 128 break;
129 case MAILIMF_FIELD_MESSAGE_ID:
130 mail->setMsgid(QString(field->fld_data.fld_message_id->mid_value));
131 break;
132 case MAILIMF_FIELD_REFERENCES:
133 refs = field->fld_data.fld_references;
134 if (refs && refs->mid_list && clist_count(refs->mid_list)) {
135 char * text = (char*)refs->mid_list->first->data;
136 mail->setReplyto(QString(text));
137 }
138 break;
139 case MAILIMF_FIELD_KEYWORDS:
140 keys = field->fld_data.fld_keywords;
141 for (clistcell*cur = clist_begin(keys->kw_list);cur!=0;cur=clist_next(cur)) {
142 qDebug("Keyword: %s",(char*)cur->data);
143 }
144 break;
120 default: 145 default:
@@ -123,3 +148,3 @@ RecMail *POP3wrapper::parseHeader( const char *header )
123 } 148 }
124 149 if (fields) mailimf_fields_free(fields);
125 return mail; 150 return mail;