summaryrefslogtreecommitdiff
path: root/imap4d
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2003-01-21 08:03:51 +0000
committerSergey Poznyakoff <gray@gnu.org.ua>2003-01-21 08:03:51 +0000
commitfa686270cc881e43c7aabcd9fbdb85e1fecb9c46 (patch)
treea2087c8e169731bdf6407c3d2ef377875b1585ad /imap4d
parent45896e4a106e80db1b5acf9b4dae75e05cbd89c6 (diff)
downloadmailutils-fa686270cc881e43c7aabcd9fbdb85e1fecb9c46.tar.gz
mailutils-fa686270cc881e43c7aabcd9fbdb85e1fecb9c46.tar.bz2
(imap4d_capability_add,imap4d_capability_remove,imap4d_capability_init): New functions
Diffstat (limited to 'imap4d')
-rw-r--r--imap4d/capability.c53
-rw-r--r--imap4d/imap4d.h5
2 files changed, 44 insertions, 14 deletions
diff --git a/imap4d/capability.c b/imap4d/capability.c
index 30da859de..b90e69878 100644
--- a/imap4d/capability.c
+++ b/imap4d/capability.c
@@ -17,12 +17,43 @@
#include "imap4d.h"
-char *capa[] = {
- "IMAP4rev1",
- "NAMESPACE",
- "X-VERSION",
- NULL
-};
+static list_t capa_list;
+
+void
+imap4d_capability_add (const char *str)
+{
+ if (!capa_list)
+ list_create (&capa_list);
+ list_append (capa_list, (void*)str);
+}
+
+void
+imap4d_capability_remove (const char *str)
+{
+ list_remove (capa_list, (void*)str);
+}
+
+void
+imap4d_capability_init ()
+{
+ static char *capa[] = {
+ "IMAP4rev1",
+ "NAMESPACE",
+ "X-VERSION",
+ NULL
+ };
+ int i;
+
+ for (i = 0; capa[i]; i++)
+ imap4d_capability_add (capa[i]);
+}
+
+static int
+print_capa (void *item, void *data)
+{
+ util_send (" %s", (char *)item);
+ return 0;
+}
int
imap4d_capability (struct imap4d_command *command, char *arg)
@@ -32,14 +63,8 @@ imap4d_capability (struct imap4d_command *command, char *arg)
(void) arg;
util_send ("* CAPABILITY");
- for (i = 0; capa[i]; i++)
- util_send (" %s", capa[i]);
-
-#ifdef WITH_TLS
- if (tls_available && !tls_done)
- util_send (" STARTTLS");
-#endif /* WITH_TLS */
-
+ list_do (capa_list, print_capa, NULL);
+
imap4d_auth_capability ();
util_send ("\r\n");
diff --git a/imap4d/imap4d.h b/imap4d/imap4d.h
index 4b9f131d5..b5c3f05f1 100644
--- a/imap4d/imap4d.h
+++ b/imap4d/imap4d.h
@@ -153,6 +153,7 @@ extern struct mu_auth_data *auth_data;
#ifdef WITH_TLS
extern int tls_available;
extern int tls_done;
+extern int login_disabled;
#endif /* WITH_TLS */
#ifndef HAVE_STRTOK_R
@@ -218,6 +219,10 @@ extern int namespace_init __P((char *path));
extern char * namespace_getfullpath __P((char *name, const char *delim));
extern char * namespace_checkfullpath __P((char *name, const char *pattern,
const char *delim));
+/* Capability functions */
+extern void imap4d_capability_add __P((const char *str));
+extern void imap4d_capability_remove __P((const char *str));
+extern void imap4d_capability_init __P((void));
/* Helper functions. */
extern int util_out __P ((int, const char *, ...));

Return to:

Send suggestions and report system problems to the System administrator.