diff options
author | Dan Winship <danw@src.gnome.org> | 2000-04-30 23:36:16 +0800 |
---|---|---|
committer | Dan Winship <danw@src.gnome.org> | 2000-04-30 23:36:16 +0800 |
commit | 0524f7c06a47544f26997da30317b35361c9d62b (patch) | |
tree | f682673b15a5b721325ba90d43fe84ce70074c83 /camel/providers | |
parent | 3c358f3c18ccbe888b77ea5d6fe67c9a385a715f (diff) | |
download | gsoc2013-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.am | 3 | ||||
-rw-r--r-- | camel/providers/mbox/camel-mbox-provider.c | 29 | ||||
-rw-r--r-- | camel/providers/mbox/libcamelmbox.urls | 1 | ||||
-rw-r--r-- | camel/providers/nntp/Makefile.am | 3 | ||||
-rw-r--r-- | camel/providers/nntp/camel-nntp-provider.c | 46 | ||||
-rw-r--r-- | camel/providers/nntp/libcamelnntp.urls | 2 | ||||
-rw-r--r-- | camel/providers/pop3/Makefile.am | 3 | ||||
-rw-r--r-- | camel/providers/pop3/camel-pop3-provider.c | 29 | ||||
-rw-r--r-- | camel/providers/pop3/libcamelpop3.urls | 1 | ||||
-rw-r--r-- | camel/providers/sendmail/Makefile.am | 3 | ||||
-rw-r--r-- | camel/providers/sendmail/camel-sendmail-provider.c | 25 | ||||
-rw-r--r-- | camel/providers/sendmail/libcamelsendmail.urls | 1 | ||||
-rw-r--r-- | camel/providers/smtp/Makefile.am | 3 | ||||
-rw-r--r-- | camel/providers/smtp/camel-smtp-provider.c | 26 | ||||
-rw-r--r-- | camel/providers/smtp/libcamelsmtp.urls | 1 |
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 |