X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=pop%2Fpop.h;fp=pop%2Fpop.h;h=6adacc0f61e6b613da821ca8c0b33112f0287865;hp=0000000000000000000000000000000000000000;hb=36d6553c2d1a80b38e961b95ebbfe0290dd5b002;hpb=39d11f5b3feb125654d5c2a4e8f93637a12706c3 diff --git a/pop/pop.h b/pop/pop.h new file mode 100644 index 0000000..6adacc0 --- /dev/null +++ b/pop/pop.h @@ -0,0 +1,99 @@ +/* + * Copyright notice from original mutt: + * Copyright (C) 2000-2003 Vsevolod Volkov + * + * This file is part of mutt-ng, see http://www.muttng.org/. + * It's licensed under the GNU General Public License, + * please see the file GPL in the top level source directory. + */ + +#ifndef _POP_H +#define _POP_H 1 + +#include "mailbox.h" +#include "mutt_socket.h" + +#define POP_PORT 110 +#define POP_SSL_PORT 995 + +/* number of entries in the hash table */ +#define POP_CACHE_LEN 10 + +/* maximal length of the server response (RFC1939) */ +#define POP_CMD_RESPONSE 512 + +enum { + /* Status */ + POP_NONE = 0, + POP_CONNECTED, + POP_DISCONNECTED, + POP_BYE +}; + +typedef enum { + POP_A_SUCCESS = 0, + POP_A_SOCKET, + POP_A_FAILURE, + POP_A_UNAVAIL +} pop_auth_res_t; + +typedef struct { + unsigned int index; + char *path; +} POP_CACHE; + +typedef struct { + CONNECTION *conn; + unsigned int status:2; + unsigned int capabilities:1; + unsigned int use_stls:2; + unsigned int cmd_capa:1; /* optional command CAPA */ + unsigned int cmd_stls:1; /* optional command STLS */ + unsigned int cmd_user:2; /* optional command USER */ + unsigned int cmd_uidl:2; /* optional command UIDL */ + unsigned int cmd_top:2; /* optional command TOP */ + unsigned int resp_codes:1; /* server supports extended response codes */ + unsigned int expire:1; /* expire is greater than 0 */ + unsigned int clear_cache:1; + size_t size; + time_t check_time; + time_t login_delay; /* minimal login delay capability */ + char *auth_list; /* list of auth mechanisms */ + char *timestamp; + char err_msg[POP_CMD_RESPONSE]; + POP_CACHE cache[POP_CACHE_LEN]; +} POP_DATA; + +typedef struct { + /* do authentication, using named method or any available if method is NULL */ + pop_auth_res_t (*authenticate) (POP_DATA *, const char *); + /* name of authentication method supported, NULL means variable. If this + * is not null, authenticate may ignore the second parameter. */ + const char *method; +} pop_auth_t; + +/* pop_auth.c */ +int pop_authenticate (POP_DATA *); +void pop_apop_timestamp (POP_DATA *, char *); + +/* pop_lib.c */ +#define pop_query(A,B,C) pop_query_d(A,B,C,NULL) +int pop_parse_path (const char *, ACCOUNT *); +int pop_connect (POP_DATA *); +int pop_open_connection (POP_DATA *); +int pop_query_d (POP_DATA *, char *, size_t, char *); +int pop_fetch_data (POP_DATA *, char *, char *, int (*funct) (char *, void *), + void *); +int pop_reconnect (CONTEXT *); +void pop_logout (CONTEXT *); +void pop_error (POP_DATA *, char *); + +/* pop.c */ +int pop_check_mailbox (CONTEXT *, int *); +int pop_open_mailbox (CONTEXT *); +int pop_sync_mailbox (CONTEXT *, int *); +int pop_fetch_message (MESSAGE *, CONTEXT *, int); +void pop_close_mailbox (CONTEXT *); +void pop_fetch_mail (void); + +#endif