Statistics
| Revision:

root / src / pop.h @ 1

History | View | Annotate | Download (3.36 KB)

1
/*
2
 * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
3
 * Copyright (C) 1999-2004 Hiroyuki Yamamoto
4
 *
5
 * This program is free software; you can redistribute it and/or modify
6
 * it under the terms of the GNU General Public License as published by
7
 * the Free Software Foundation; either version 2 of the License, or
8
 * (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18
 */
19

    
20
#ifndef __POP_H__
21
#define __POP_H__
22

    
23
#ifdef HAVE_CONFIG_H
24
#  include "config.h"
25
#endif
26

    
27
#include <glib.h>
28
#include <time.h>
29

    
30
#include "session.h"
31
#include "prefs_account.h"
32

    
33
typedef struct _Pop3MsgInfo        Pop3MsgInfo;
34
typedef struct _Pop3Session        Pop3Session;
35

    
36
#define POP3_SESSION(obj)        ((Pop3Session *)obj)
37

    
38
typedef enum {
39
        POP3_READY,
40
        POP3_GREETING,
41
#if USE_SSL
42
        POP3_STLS,
43
#endif
44
        POP3_GETAUTH_USER,
45
        POP3_GETAUTH_PASS,
46
        POP3_GETAUTH_APOP,
47
        POP3_GETRANGE_STAT,
48
        POP3_GETRANGE_LAST,
49
        POP3_GETRANGE_UIDL,
50
        POP3_GETRANGE_UIDL_RECV,
51
        POP3_GETSIZE_LIST,
52
        POP3_GETSIZE_LIST_RECV,
53
        POP3_RETR,
54
        POP3_RETR_RECV,
55
        POP3_DELETE,
56
        POP3_LOGOUT,
57
        POP3_ERROR,
58

    
59
        N_POP3_STATE
60
} Pop3State;
61

    
62
typedef enum {
63
        PS_SUCCESS        = 0,        /* command successful */
64
        PS_NOMAIL        = 1,        /* no mail available */
65
        PS_SOCKET        = 2,        /* socket I/O woes */
66
        PS_AUTHFAIL        = 3,        /* user authorization failed */
67
        PS_PROTOCOL        = 4,        /* protocol violation */
68
        PS_SYNTAX        = 5,        /* command-line syntax error */
69
        PS_IOERR        = 6,        /* file I/O error */
70
        PS_ERROR        = 7,        /* protocol error */
71
        PS_EXCLUDE        = 8,        /* client-side exclusion error */
72
        PS_LOCKBUSY        = 9,        /* server responded lock busy */
73
        PS_SMTP                = 10,        /* SMTP error */
74
        PS_DNS                = 11,        /* fatal DNS error */
75
        PS_BSMTP        = 12,        /* output batch could not be opened */
76
        PS_MAXFETCH        = 13,        /* poll ended by fetch limit */
77

    
78
        PS_NOTSUPPORTED        = 14,        /* command not supported */
79

    
80
        /* leave space for more codes */
81

    
82
        PS_CONTINUE        = 128        /* more responses may follow */
83
} Pop3ErrorValue;
84

    
85
typedef enum {
86
        RECV_TIME_NONE     = 0,
87
        RECV_TIME_RECEIVED = 1,
88
        RECV_TIME_KEEP     = 2,
89
        RECV_TIME_DELETE   = 3
90
} RecvTime;
91

    
92
typedef enum {
93
        DROP_OK = 0,
94
        DROP_DONT_RECEIVE = 1,
95
        DROP_DELETE = 2,
96
        DROP_ERROR = -1
97
} Pop3DropValue;
98

    
99
struct _Pop3MsgInfo
100
{
101
        gint size;
102
        gchar *uidl;
103
        time_t recv_time;
104
        guint received : 1;
105
        guint deleted  : 1;
106
};
107

    
108
struct _Pop3Session
109
{
110
        Session session;
111

    
112
        Pop3State state;
113

    
114
        PrefsAccount *ac_prefs;
115

    
116
        gchar *greeting;
117
        gchar *user;
118
        gchar *pass;
119
        gint count;
120
        gint total_bytes;
121
        gint cur_msg;
122
        gint cur_total_num;
123
        gint cur_total_bytes;
124
        gint cur_total_recv_bytes;
125

    
126
        Pop3MsgInfo *msg;
127

    
128
        GHashTable *uidl_table;
129

    
130
        gboolean new_msg_exist;
131
        gboolean uidl_is_valid;
132

    
133
        time_t current_time;
134

    
135
        Pop3ErrorValue error_val;
136
        gchar *error_msg;
137

    
138
        gpointer data;
139

    
140
        /* virtual method to drop message */
141
        gint (*drop_message)        (Pop3Session        *session,
142
                                 const gchar        *file);
143
};
144

    
145
#define POPBUFSIZE        512
146
/* #define IDLEN        128 */
147
#define IDLEN                POPBUFSIZE
148

    
149
Session *pop3_session_new        (PrefsAccount        *account);
150
GHashTable *pop3_get_uidl_table        (PrefsAccount        *account);
151
gint pop3_write_uidl_list        (Pop3Session        *session);
152

    
153
#endif /* __POP_H__ */