/* * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client * Copyright (C) 1999-2003 Hiroyuki Yamamoto * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef __POP_H__ #define __POP_H__ #ifdef HAVE_CONFIG_H # include "config.h" #endif #include #include #include "session.h" #include "prefs_account.h" typedef struct _Pop3MsgInfo Pop3MsgInfo; typedef struct _Pop3Session Pop3Session; #define POP3_SESSION(obj) ((Pop3Session *)obj) typedef enum { POP3_READY, POP3_GREETING, #if USE_OPENSSL POP3_STLS, #endif POP3_GETAUTH_USER, POP3_GETAUTH_PASS, POP3_GETAUTH_APOP, POP3_GETRANGE_STAT, POP3_GETRANGE_LAST, POP3_GETRANGE_UIDL, POP3_GETRANGE_UIDL_RECV, POP3_GETSIZE_LIST, POP3_GETSIZE_LIST_RECV, POP3_RETR, POP3_RETR_RECV, POP3_DELETE, POP3_LOGOUT, POP3_ERROR, N_POP3_STATE } Pop3State; typedef enum { RECV_TIME_NONE = 0, RECV_TIME_RECEIVED = 1, RECV_TIME_KEEP = 2 } RecvTime; struct _Pop3MsgInfo { gint size; gchar *uidl; time_t recv_time; guint received : 1; guint deleted : 1; }; struct _Pop3Session { Session session; Pop3State state; gchar *prev_folder; PrefsAccount *ac_prefs; gchar *greeting; gchar *user; gchar *pass; gint count; gint total_bytes; gint cur_msg; gint cur_total_num; gint cur_total_bytes; gint cur_total_recv_bytes; Pop3MsgInfo *msg; GHashTable *uidl_table; gboolean new_msg_exist; gboolean uidl_is_valid; time_t current_time; gint error_val; gpointer data; }; #define POPBUFSIZE 512 #define IDLEN 128 /* exit code values */ #define PS_SUCCESS 0 /* successful receipt of messages */ #define PS_NOMAIL 1 /* no mail available */ #define PS_SOCKET 2 /* socket I/O woes */ #define PS_AUTHFAIL 3 /* user authorization failed */ #define PS_PROTOCOL 4 /* protocol violation */ #define PS_SYNTAX 5 /* command-line syntax error */ #define PS_IOERR 6 /* bad permissions on rc file */ #define PS_ERROR 7 /* protocol error */ #define PS_EXCLUDE 8 /* client-side exclusion error */ #define PS_LOCKBUSY 9 /* server responded lock busy */ #define PS_SMTP 10 /* SMTP error */ #define PS_DNS 11 /* fatal DNS error */ #define PS_BSMTP 12 /* output batch could not be opened */ #define PS_MAXFETCH 13 /* poll ended by fetch limit */ /* leave space for more codes */ #define PS_UNDEFINED 23 /* something I hadn't thought of */ #define PS_TRANSIENT 24 /* transient failure (internal use) */ #define PS_REFUSED 25 /* mail refused (internal use) */ #define PS_RETAINED 26 /* message retained (internal use) */ #define PS_TRUNCATED 27 /* headers incomplete (internal use) */ #define PS_CONTINUE 128 Session *pop3_session_new (PrefsAccount *account); GHashTable *pop3_get_uidl_table (PrefsAccount *account); gint pop3_write_uidl_list (Pop3Session *session); #endif /* __POP_H__ */