aboutsummaryrefslogtreecommitdiffstats
path: root/camel/providers
diff options
context:
space:
mode:
authorDan Winship <danw@src.gnome.org>2000-04-30 23:36:16 +0800
committerDan Winship <danw@src.gnome.org>2000-04-30 23:36:16 +0800
commit0524f7c06a47544f26997da30317b35361c9d62b (patch)
treef682673b15a5b721325ba90d43fe84ce70074c83 /camel/providers
parent3c358f3c18ccbe888b77ea5d6fe67c9a385a715f (diff)
downloadgsoc2013-evolution-0524f7c06a47544f26997da30317b35361c9d62b.tar.gz
gsoc2013-evolution-0524f7c06a47544f26997da30317b35361c9d62b.tar.zst
gsoc2013-evolution-0524f7c06a47544f26997da30317b35361c9d62b.zip
Tweak the definition of CamelProvider. Among other things, a provider may
* camel-provider.h: Tweak the definition of CamelProvider. Among other things, a provider may now be both a store and a transport. * camel-provider.c: Remove a lot of code we had no intention of using. This now only contains two functions: camel_provider_init to read the installed .urls files, and camel_provider_load to load and register a new provider. * camel-session.c: Remove more unused code and simplify some of the remaining code. The list of available provider modules is now stored in the session, and it handles calling camel_provider_load to load them as needed. Provider registration is now done by calling back from the module init routine, which allows a single module to register providers for multiple URL types. * providers/*: Update provider structures and init routines for the new stuff. Add a .urls file to each provider specifying what urls it handles, and install that with the library. * providers/nntp/camel-nntp-provider.c: Add hints towards supporting both news: and nntp: URLs, and using nntp as both a store and a transport. svn path=/trunk/; revision=2691
Diffstat (limited to 'camel/providers')
-rw-r--r--camel/providers/mbox/Makefile.am3
-rw-r--r--camel/providers/mbox/camel-mbox-provider.c29
-rw-r--r--camel/providers/mbox/libcamelmbox.urls1
-rw-r--r--camel/providers/nntp/Makefile.am3
-rw-r--r--camel/providers/nntp/camel-nntp-provider.c46
-rw-r--r--camel/providers/nntp/libcamelnntp.urls2
-rw-r--r--camel/providers/pop3/Makefile.am3
-rw-r--r--camel/providers/pop3/camel-pop3-provider.c29
-rw-r--r--camel/providers/pop3/libcamelpop3.urls1
-rw-r--r--camel/providers/sendmail/Makefile.am3
-rw-r--r--camel/providers/sendmail/camel-sendmail-provider.c25
-rw-r--r--camel/providers/sendmail/libcamelsendmail.urls1
-rw-r--r--camel/providers/smtp/Makefile.am3
-rw-r--r--camel/providers/smtp/camel-smtp-provider.c26
-rw-r--r--camel/providers/smtp/libcamelsmtp.urls1
15 files changed, 92 insertions, 84 deletions
diff --git a/camel/providers/mbox/Makefile.am b/camel/providers/mbox/Makefile.am
index 258c01a94e..25a26e25db 100644
--- a/camel/providers/mbox/Makefile.am
+++ b/camel/providers/mbox/Makefile.am
@@ -8,6 +8,7 @@ libcamelmboxincludedir = $(includedir)/camel
providerdir = $(pkglibdir)/camel-providers/$(VERSION)
provider_LTLIBRARIES = libcamelmbox.la
+provider_DATA = libcamelmbox.urls
INCLUDES = -I.. \
-I$(srcdir)/.. \
@@ -37,5 +38,5 @@ libcamelmbox_la_LDFLAGS = -version-info 0:0:0 -rpath $(libdir)
libcamelmbox_la_LIBADD = $(top_builddir)/e-util/libeutil.la $(top_builddir)/libibex/libibex.la $(UNICODE_LIBS)
#libcamelmbox_la_LIBADD = $(top_builddir)/libibex/libibex.la $(UNICODE_LIBS)
-EXTRA_DIST =
+EXTRA_DIST = libcamelmbox.urls
diff --git a/camel/providers/mbox/camel-mbox-provider.c b/camel/providers/mbox/camel-mbox-provider.c
index 74c4345306..04ce88de12 100644
--- a/camel/providers/mbox/camel-mbox-provider.c
+++ b/camel/providers/mbox/camel-mbox-provider.c
@@ -26,32 +26,25 @@
#include "config.h"
#include "camel-mbox-store.h"
#include "camel-provider.h"
+#include "camel-session.h"
-
-static CamelProvider _mbox_provider = {
- (GtkType) 0,
- PROVIDER_STORE,
- 0,
-
+static CamelProvider mbox_provider = {
"mbox",
"UNIX mbox-format mail files",
"For reading mail delivered by the local system, and for "
"storing mail on local disk.",
- (GModule *) NULL
-};
-
-CamelProvider *
-camel_provider_module_init (void);
+ 0,
+ { 0, 0 }
+};
-CamelProvider *
-camel_provider_module_init (void)
+void
+camel_provider_module_init (CamelSession *session)
{
- _mbox_provider.object_type = camel_mbox_store_get_type();
- return &_mbox_provider;
-}
-
-
+ mbox_provider.object_types[CAMEL_PROVIDER_STORE] =
+ camel_mbox_store_get_type();
+ camel_session_register_provider (session, &mbox_provider);
+}
diff --git a/camel/providers/mbox/libcamelmbox.urls b/camel/providers/mbox/libcamelmbox.urls
new file mode 100644
index 0000000000..e021190356
--- /dev/null
+++ b/camel/providers/mbox/libcamelmbox.urls
@@ -0,0 +1 @@
+mbox
diff --git a/camel/providers/nntp/Makefile.am b/camel/providers/nntp/Makefile.am
index 2aabff29ef..ec393ea907 100644
--- a/camel/providers/nntp/Makefile.am
+++ b/camel/providers/nntp/Makefile.am
@@ -7,6 +7,7 @@ libcamelnntpincludedir = $(includedir)/camel
providerdir = $(pkglibdir)/camel-providers/$(VERSION)
provider_LTLIBRARIES = libcamelnntp.la
+provider_DATA = libcamelnntp.urls
INCLUDES = -I.. -I$(srcdir)/.. -I$(includedir) \
-I$(top_srcdir)/intl \
@@ -28,4 +29,4 @@ libcamelnntpinclude_HEADERS = \
libcamelnntp_la_LDFLAGS = -version-info 0:0:0 -rpath $(libdir)
-EXTRA_DIST =
+EXTRA_DIST = libcamelnntp.urls
diff --git a/camel/providers/nntp/camel-nntp-provider.c b/camel/providers/nntp/camel-nntp-provider.c
index 5ddda3f39d..449de945e6 100644
--- a/camel/providers/nntp/camel-nntp-provider.c
+++ b/camel/providers/nntp/camel-nntp-provider.c
@@ -26,27 +26,45 @@
#include "config.h"
#include "camel-nntp-store.h"
#include "camel-provider.h"
+#include "camel-session.h"
-
-static CamelProvider _nntp_provider = {
- (GtkType) 0,
- PROVIDER_STORE,
- PROVIDER_REMOTE,
+static CamelProvider news_provider = {
"news",
- "Camel default NNTP provider",
- "This is a provider that reads from a NNTP server.",
- (GModule *) NULL
+ "USENET news",
+
+ "This is a read-only provider for USENET newsgroups.",
+
+ CAMEL_PROVIDER_IS_REMOTE,
+
+ { 0, 0 }
};
-CamelProvider *
-camel_provider_module_init (void);
+static CamelProvider nntp_provider = {
+ "nntp",
+ "USENET news via NNTP",
+ "This is a provider for reading from and posting to"
+ "USENET newsgroups.",
-CamelProvider *
-camel_provider_module_init (void)
+ CAMEL_PROVIDER_IS_REMOTE,
+
+ { 0, 0 }
+};
+
+void
+camel_provider_module_init (CamelSession *session)
{
- _nntp_provider.object_type = camel_nntp_store_get_type();
- return &_nntp_provider;
+ news_provider.object_types[CAMEL_PROVIDER_STORE] =
+ camel_nntp_store_get_type();
+ nntp_provider.object_types[CAMEL_PROVIDER_STORE] =
+ camel_nntp_store_get_type();
+#ifdef NOTYET
+ nntp_provider.object_types[CAMEL_PROVIDER_TRANSPORT] =
+ camel_nntp_transport_get_type();
+#endif
+
+ camel_session_register_provider (session", &news_provider);
+ camel_session_register_provider (session", &nntp_provider);
}
diff --git a/camel/providers/nntp/libcamelnntp.urls b/camel/providers/nntp/libcamelnntp.urls
new file mode 100644
index 0000000000..dee2e70f14
--- /dev/null
+++ b/camel/providers/nntp/libcamelnntp.urls
@@ -0,0 +1,2 @@
+news
+nntp
diff --git a/camel/providers/pop3/Makefile.am b/camel/providers/pop3/Makefile.am
index 202320b3f0..4775c866d1 100644
--- a/camel/providers/pop3/Makefile.am
+++ b/camel/providers/pop3/Makefile.am
@@ -7,6 +7,7 @@ libcamelpop3includedir = $(includedir)/camel
providerdir = $(pkglibdir)/camel-providers/$(VERSION)
provider_LTLIBRARIES = libcamelpop3.la
+provider_DATA = libcamelpop3.urls
INCLUDES = \
-I.. \
@@ -30,4 +31,4 @@ libcamelpop3include_HEADERS = \
libcamelpop3_la_LDFLAGS = -version-info 0:0:0 -rpath $(libdir)
-EXTRA_DIST =
+EXTRA_DIST = libcamelpop3.urls
diff --git a/camel/providers/pop3/camel-pop3-provider.c b/camel/providers/pop3/camel-pop3-provider.c
index 8d9d4ac94d..dc6e2b9442 100644
--- a/camel/providers/pop3/camel-pop3-provider.c
+++ b/camel/providers/pop3/camel-pop3-provider.c
@@ -26,13 +26,9 @@
#include "config.h"
#include "camel-pop3-store.h"
#include "camel-provider.h"
+#include "camel-session.h"
-
-static CamelProvider _pop3_provider = {
- (GtkType) 0,
- PROVIDER_STORE,
- PROVIDER_REMOTE,
-
+static CamelProvider pop3_provider = {
"pop",
"POP",
@@ -40,19 +36,16 @@ static CamelProvider _pop3_provider = {
"to retrieve mail from certain web mail providers and proprietary "
"email systems.",
- (GModule *) NULL
-};
-
-CamelProvider *
-camel_provider_module_init (void);
+ CAMEL_PROVIDER_IS_REMOTE,
+ { 0, 0 }
+};
-CamelProvider *
-camel_provider_module_init (void)
+void
+camel_provider_module_init (CamelSession *session)
{
- _pop3_provider.object_type = camel_pop3_store_get_type();
- return &_pop3_provider;
-}
-
-
+ pop3_provider.object_types[CAMEL_PROVIDER_STORE] =
+ camel_pop3_store_get_type();
+ camel_session_register_provider (session, &pop3_provider);
+}
diff --git a/camel/providers/pop3/libcamelpop3.urls b/camel/providers/pop3/libcamelpop3.urls
new file mode 100644
index 0000000000..7fffa4d861
--- /dev/null
+++ b/camel/providers/pop3/libcamelpop3.urls
@@ -0,0 +1 @@
+pop
diff --git a/camel/providers/sendmail/Makefile.am b/camel/providers/sendmail/Makefile.am
index 9c9c3f356b..0c12a6e23d 100644
--- a/camel/providers/sendmail/Makefile.am
+++ b/camel/providers/sendmail/Makefile.am
@@ -8,6 +8,7 @@ libcamelsendmailincludedir = $(includedir)/camel
providerdir = $(pkglibdir)/camel-providers/$(VERSION)
provider_LTLIBRARIES = libcamelsendmail.la
+provider_DATA = libcamelsendmail.urls
INCLUDES = \
-I.. \
@@ -26,4 +27,4 @@ libcamelsendmailinclude_HEADERS = \
libcamelsendmail_la_LDFLAGS = -version-info 0:0:0 -rpath $(libdir)
-EXTRA_DIST =
+EXTRA_DIST = libcamelsendmail.urls
diff --git a/camel/providers/sendmail/camel-sendmail-provider.c b/camel/providers/sendmail/camel-sendmail-provider.c
index 5d3809b6f0..16ebce8b12 100644
--- a/camel/providers/sendmail/camel-sendmail-provider.c
+++ b/camel/providers/sendmail/camel-sendmail-provider.c
@@ -26,30 +26,27 @@
#include "config.h"
#include "camel-provider.h"
#include "camel-sendmail-transport.h"
+#include "camel-session.h"
-static CamelProvider _sendmail_provider = {
- (GtkType) 0,
- PROVIDER_TRANSPORT,
- 0,
-
+static CamelProvider sendmail_provider = {
"sendmail",
"Sendmail",
"For delivering mail by passing it to the \"sendmail\" program "
"on the local system.",
- (GModule *) NULL
-};
-
-CamelProvider *
-camel_provider_module_init (void);
+ 0,
+ { 0, 0 }
+};
-CamelProvider *
-camel_provider_module_init (void)
+void
+camel_provider_module_init (CamelSession *session)
{
- _sendmail_provider.object_type = camel_sendmail_transport_get_type();
- return &_sendmail_provider;
+ sendmail_provider.object_types[CAMEL_PROVIDER_TRANSPORT] =
+ camel_sendmail_transport_get_type();
+
+ camel_session_register_provider (session, &sendmail_provider);
}
diff --git a/camel/providers/sendmail/libcamelsendmail.urls b/camel/providers/sendmail/libcamelsendmail.urls
new file mode 100644
index 0000000000..ccad52828e
--- /dev/null
+++ b/camel/providers/sendmail/libcamelsendmail.urls
@@ -0,0 +1 @@
+sendmail
diff --git a/camel/providers/smtp/Makefile.am b/camel/providers/smtp/Makefile.am
index dee3a50abb..8c49e8778b 100644
--- a/camel/providers/smtp/Makefile.am
+++ b/camel/providers/smtp/Makefile.am
@@ -7,6 +7,7 @@ libcamelsmtpincludedir = $(includedir)/camel
providerdir = $(pkglibdir)/camel-providers/$(VERSION)
provider_LTLIBRARIES = libcamelsmtp.la
+provider_DATA = libcamelsmtp.urls
INCLUDES = \
-I.. \
@@ -27,4 +28,4 @@ libcamelsmtpinclude_HEADERS = \
libcamelsmtp_la_LDFLAGS = -version-info 0:0:0 -rpath $(libdir)
-EXTRA_DIST =
+EXTRA_DIST = libcamelsmtp.urls
diff --git a/camel/providers/smtp/camel-smtp-provider.c b/camel/providers/smtp/camel-smtp-provider.c
index 03ef1a9eb3..44560ce34c 100644
--- a/camel/providers/smtp/camel-smtp-provider.c
+++ b/camel/providers/smtp/camel-smtp-provider.c
@@ -26,30 +26,26 @@
#include "config.h"
#include "camel-smtp-transport.h"
#include "camel-provider.h"
+#include "camel-session.h"
-
-static CamelProvider _smtp_provider = {
- (GtkType) 0,
- PROVIDER_TRANSPORT,
- 0,
-
+static CamelProvider smtp_provider = {
"smtp",
"SMTP",
"For delivering mail by connecting to a remote mailhub using SMTP.",
- (GModule *) NULL
-};
-
-CamelProvider *
-camel_provider_module_init (void);
+ 0,
+ { 0, 0 }
+};
-CamelProvider *
-camel_provider_module_init (void)
+void
+camel_provider_module_init (CamelSession *session)
{
- _smtp_provider.object_type = camel_smtp_transport_get_type();
- return &_smtp_provider;
+ smtp_provider.object_types[CAMEL_TRANSPORT_TYPE] =
+ camel_smtp_transport_get_type();
+
+ camel_session_register_provider (session, &smtp_provider);
}
diff --git a/camel/providers/smtp/libcamelsmtp.urls b/camel/providers/smtp/libcamelsmtp.urls
new file mode 100644
index 0000000000..ec2fc0fc16
--- /dev/null
+++ b/camel/providers/smtp/libcamelsmtp.urls
@@ -0,0 +1 @@
+smtp