File: pop.h

package info (click to toggle)
mutt 1.5.13-1.1
  • links: PTS
  • area: main
  • in suites: etch-m68k
  • size: 14,124 kB
  • ctags: 5,052
  • sloc: ansic: 75,353; sh: 3,670; perl: 971; makefile: 673; yacc: 318; awk: 17
file content (115 lines) | stat: -rw-r--r-- 3,402 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
/*
 * Copyright (C) 2000-2003 Vsevolod Volkov <vvv@mutt.org.ua>
 * 
 *     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., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */ 

#ifndef _POP_H
#define _POP_H 1

#include "mailbox.h"
#include "mutt_socket.h"
#include "mutt_curses.h"
#include "bcache.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;
  body_cache_t *bcache;		/* body cache */
  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 *, progress_t *, 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