Andreas Krennmair:
[apps/madmutt.git] / pop / pop.h
diff --git a/pop/pop.h b/pop/pop.h
new file mode 100644 (file)
index 0000000..6adacc0
--- /dev/null
+++ b/pop/pop.h
@@ -0,0 +1,99 @@
+/*
+ * Copyright notice from original mutt:
+ * Copyright (C) 2000-2003 Vsevolod Volkov <vvv@mutt.org.ua>
+ *
+ * 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