1 /* 2 * libEtPan! -- a mail stuff library 3 * 4 * Copyright (C) 2001, 2005 - DINH Viet Hoa 5 * All rights reserved. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions 9 * are met: 10 * 1. Redistributions of source code must retain the above copyright 11 * notice, this list of conditions and the following disclaimer. 12 * 2. Redistributions in binary form must reproduce the above copyright 13 * notice, this list of conditions and the following disclaimer in the 14 * documentation and/or other materials provided with the distribution. 15 * 3. Neither the name of the libEtPan! project nor the names of its 16 * contributors may be used to endorse or promote products derived 17 * from this software without specific prior written permission. 18 * 19 * THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND 20 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 21 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 22 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE 23 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 24 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 25 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 26 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 27 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 28 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 29 * SUCH DAMAGE. 30 */ 31 32 /* 33 * $Id: mailpop3_types.h,v 1.19 2006/12/13 18:31:33 hoa Exp $ 34 */ 35 36 #ifndef MAILPOP3_TYPES_H 37 38 #define MAILPOP3_TYPES_H 39 40 #ifdef __cplusplus 41 extern "C" { 42 #endif 43 44 #include <libetpan/libetpan-config.h> 45 #include <libetpan/mailstream.h> 46 #include <libetpan/mmapstring.h> 47 #include <libetpan/carray.h> 48 #include <libetpan/clist.h> 49 50 enum { 51 MAILPOP3_NO_ERROR = 0, 52 MAILPOP3_ERROR_BAD_STATE, 53 MAILPOP3_ERROR_UNAUTHORIZED, 54 MAILPOP3_ERROR_STREAM, 55 MAILPOP3_ERROR_DENIED, 56 MAILPOP3_ERROR_BAD_USER, 57 MAILPOP3_ERROR_BAD_PASSWORD, 58 MAILPOP3_ERROR_CANT_LIST, 59 MAILPOP3_ERROR_NO_SUCH_MESSAGE, 60 MAILPOP3_ERROR_MEMORY, 61 MAILPOP3_ERROR_CONNECTION_REFUSED, 62 MAILPOP3_ERROR_APOP_NOT_SUPPORTED, 63 MAILPOP3_ERROR_CAPA_NOT_SUPPORTED, 64 MAILPOP3_ERROR_STLS_NOT_SUPPORTED, 65 MAILPOP3_ERROR_SSL, 66 MAILPOP3_ERROR_QUIT_FAILED 67 }; 68 69 typedef struct mailpop3 mailpop3; 70 71 struct mailpop3 72 { 73 char * pop3_response; /* response message */ 74 char * pop3_timestamp; /* connection timestamp */ 75 76 /* internals */ 77 mailstream * pop3_stream; 78 size_t pop3_progr_rate; 79 progress_function * pop3_progr_fun; 80 81 MMAPString * pop3_stream_buffer; /* buffer for lines reading */ 82 MMAPString * pop3_response_buffer; /* buffer for responses */ 83 84 carray * pop3_msg_tab; /* list of pop3_msg_info structures */ 85 int pop3_state; /* state */ 86 87 unsigned int pop3_deleted_count; 88 89 struct { 90 void * sasl_conn; 91 const char * sasl_server_fqdn; 92 const char * sasl_login; 93 const char * sasl_auth_name; 94 const char * sasl_password; 95 const char * sasl_realm; 96 void * sasl_secret; 97 } pop3_sasl; 98 99 time_t pop3_timeout; 100 mailprogress_function * pop3_progress_fun; 101 void * pop3_progress_context; 102 103 void (* pop3_logger)(mailpop3 * session, int log_type, const char * str, size_t size, void * context); 104 void * pop3_logger_context; 105 }; 106 107 struct mailpop3_msg_info 108 { 109 unsigned int msg_index; 110 uint32_t msg_size; 111 char * msg_uidl; 112 int msg_deleted; 113 }; 114 115 116 struct mailpop3_capa { 117 char * cap_name; 118 clist * cap_param; /* (char *) */ 119 }; 120 121 122 struct mailpop3_stat_response { 123 unsigned int msgs_count; 124 size_t msgs_size; 125 }; 126 127 #ifdef __cplusplus 128 } 129 #endif 130 131 #endif 132