1
<refentry id="camel-camel-provider">
3
<refentrytitle role="top_of_page" id="camel-camel-provider.top_of_page">camel-provider</refentrytitle>
4
<manvolnum>3</manvolnum>
5
<refmiscinfo>CAMEL Library</refmiscinfo>
9
<refname>camel-provider</refname>
10
<refpurpose></refpurpose>
13
<refsynopsisdiv id="camel-camel-provider.synopsis" role="synopsis">
14
<title role="synopsis.title">Synopsis</title>
17
<link linkend="CamelProvider">CamelProvider</link>;
18
enum <link linkend="CamelProviderType">CamelProviderType</link>;
19
#define <link linkend="CAMEL-PROVIDER-IS-LOCAL--CAPS">CAMEL_PROVIDER_IS_LOCAL</link>
20
#define <link linkend="CAMEL-PROVIDER-IS-EXTERNAL--CAPS">CAMEL_PROVIDER_IS_EXTERNAL</link>
21
#define <link linkend="CAMEL-PROVIDER-IS-SOURCE--CAPS">CAMEL_PROVIDER_IS_SOURCE</link>
22
#define <link linkend="CAMEL-PROVIDER-IS-STORAGE--CAPS">CAMEL_PROVIDER_IS_STORAGE</link>
23
#define <link linkend="CAMEL-PROVIDER-SUPPORTS-SSL--CAPS">CAMEL_PROVIDER_SUPPORTS_SSL</link>
24
#define <link linkend="CAMEL-PROVIDER-HAS-LICENSE--CAPS">CAMEL_PROVIDER_HAS_LICENSE</link>
25
#define <link linkend="CAMEL-PROVIDER-DISABLE-SENT-FOLDER--CAPS">CAMEL_PROVIDER_DISABLE_SENT_FOLDER</link>
26
#define <link linkend="CAMEL-URL-PART-USER--CAPS">CAMEL_URL_PART_USER</link>
27
#define <link linkend="CAMEL-URL-PART-AUTH--CAPS">CAMEL_URL_PART_AUTH</link>
28
#define <link linkend="CAMEL-URL-PART-PASSWORD--CAPS">CAMEL_URL_PART_PASSWORD</link>
29
#define <link linkend="CAMEL-URL-PART-HOST--CAPS">CAMEL_URL_PART_HOST</link>
30
#define <link linkend="CAMEL-URL-PART-PORT--CAPS">CAMEL_URL_PART_PORT</link>
31
#define <link linkend="CAMEL-URL-PART-PATH--CAPS">CAMEL_URL_PART_PATH</link>
32
#define <link linkend="CAMEL-URL-PART-PATH-DIR--CAPS">CAMEL_URL_PART_PATH_DIR</link>
33
#define <link linkend="CAMEL-URL-PART-NEED--CAPS">CAMEL_URL_PART_NEED</link>
34
#define <link linkend="CAMEL-URL-PART-HIDDEN--CAPS">CAMEL_URL_PART_HIDDEN</link>
35
#define <link linkend="CAMEL-PROVIDER-ALLOWS--CAPS">CAMEL_PROVIDER_ALLOWS</link> (prov, flags)
36
#define <link linkend="CAMEL-PROVIDER-NEEDS--CAPS">CAMEL_PROVIDER_NEEDS</link> (prov, flags)
37
#define <link linkend="CAMEL-PROVIDER-HIDDEN--CAPS">CAMEL_PROVIDER_HIDDEN</link> (prov, flags)
38
#define <link linkend="CAMEL-URL-ALLOW-USER--CAPS">CAMEL_URL_ALLOW_USER</link>
39
#define <link linkend="CAMEL-URL-ALLOW-AUTH--CAPS">CAMEL_URL_ALLOW_AUTH</link>
40
#define <link linkend="CAMEL-URL-ALLOW-PASSWORD--CAPS">CAMEL_URL_ALLOW_PASSWORD</link>
41
#define <link linkend="CAMEL-URL-ALLOW-HOST--CAPS">CAMEL_URL_ALLOW_HOST</link>
42
#define <link linkend="CAMEL-URL-ALLOW-PORT--CAPS">CAMEL_URL_ALLOW_PORT</link>
43
#define <link linkend="CAMEL-URL-ALLOW-PATH--CAPS">CAMEL_URL_ALLOW_PATH</link>
44
#define <link linkend="CAMEL-URL-NEED-USER--CAPS">CAMEL_URL_NEED_USER</link>
45
#define <link linkend="CAMEL-URL-NEED-AUTH--CAPS">CAMEL_URL_NEED_AUTH</link>
46
#define <link linkend="CAMEL-URL-NEED-PASSWORD--CAPS">CAMEL_URL_NEED_PASSWORD</link>
47
#define <link linkend="CAMEL-URL-NEED-HOST--CAPS">CAMEL_URL_NEED_HOST</link>
48
#define <link linkend="CAMEL-URL-NEED-PORT--CAPS">CAMEL_URL_NEED_PORT</link>
49
#define <link linkend="CAMEL-URL-NEED-PATH--CAPS">CAMEL_URL_NEED_PATH</link>
50
#define <link linkend="CAMEL-URL-NEED-PATH-DIR--CAPS">CAMEL_URL_NEED_PATH_DIR</link>
51
#define <link linkend="CAMEL-URL-HIDDEN-USER--CAPS">CAMEL_URL_HIDDEN_USER</link>
52
#define <link linkend="CAMEL-URL-HIDDEN-AUTH--CAPS">CAMEL_URL_HIDDEN_AUTH</link>
53
#define <link linkend="CAMEL-URL-HIDDEN-PASSWORD--CAPS">CAMEL_URL_HIDDEN_PASSWORD</link>
54
#define <link linkend="CAMEL-URL-HIDDEN-HOST--CAPS">CAMEL_URL_HIDDEN_HOST</link>
55
#define <link linkend="CAMEL-URL-HIDDEN-PORT--CAPS">CAMEL_URL_HIDDEN_PORT</link>
56
#define <link linkend="CAMEL-URL-HIDDEN-PATH--CAPS">CAMEL_URL_HIDDEN_PATH</link>
57
#define <link linkend="CAMEL-URL-FRAGMENT-IS-PATH--CAPS">CAMEL_URL_FRAGMENT_IS_PATH</link>
58
#define <link linkend="CAMEL-URL-PATH-IS-ABSOLUTE--CAPS">CAMEL_URL_PATH_IS_ABSOLUTE</link>
59
#define <link linkend="CAMEL-PROVIDER-IS-STORE-AND-TRANSPORT--CAPS">CAMEL_PROVIDER_IS_STORE_AND_TRANSPORT</link>(prov)
60
enum <link linkend="CamelProviderConfType">CamelProviderConfType</link>;
61
<link linkend="CamelProviderConfEntry">CamelProviderConfEntry</link>;
62
#define <link linkend="CAMEL-PROVIDER-CONF-DEFAULT-USERNAME--CAPS">CAMEL_PROVIDER_CONF_DEFAULT_USERNAME</link>
63
#define <link linkend="CAMEL-PROVIDER-CONF-DEFAULT-HOSTNAME--CAPS">CAMEL_PROVIDER_CONF_DEFAULT_HOSTNAME</link>
64
#define <link linkend="CAMEL-PROVIDER-CONF-DEFAULT-PATH--CAPS">CAMEL_PROVIDER_CONF_DEFAULT_PATH</link>
65
<link linkend="gint">gint</link> (<link linkend="CamelProviderAutoDetectFunc">*CamelProviderAutoDetectFunc</link>) (<link linkend="CamelURL">CamelURL</link> *url,
66
<link linkend="GHashTable">GHashTable</link> **auto_detected,
67
<link linkend="CamelException">CamelException</link> *ex);
68
<link linkend="CamelProviderModule">CamelProviderModule</link>;
69
<link linkend="void">void</link> <link linkend="camel-provider-init">camel_provider_init</link> (void);
70
<link linkend="void">void</link> <link linkend="camel-provider-load">camel_provider_load</link> (const <link linkend="gchar">gchar</link> *path,
71
<link linkend="CamelException">CamelException</link> *ex);
72
<link linkend="void">void</link> <link linkend="camel-provider-register">camel_provider_register</link> (<link linkend="CamelProvider">CamelProvider</link> *provider);
73
<link linkend="GList">GList</link> * <link linkend="camel-provider-list">camel_provider_list</link> (<link linkend="gboolean">gboolean</link> load);
74
<link linkend="CamelProvider">CamelProvider</link> * <link linkend="camel-provider-get">camel_provider_get</link> (const <link linkend="gchar">gchar</link> *url_string,
75
<link linkend="CamelException">CamelException</link> *ex);
76
<link linkend="void">void</link> <link linkend="camel-provider-module-init">camel_provider_module_init</link> (void);
77
<link linkend="gint">gint</link> <link linkend="camel-provider-auto-detect">camel_provider_auto_detect</link> (<link linkend="CamelProvider">CamelProvider</link> *provider,
78
<link linkend="CamelURL">CamelURL</link> *url,
79
<link linkend="GHashTable">GHashTable</link> **auto_detected,
80
<link linkend="CamelException">CamelException</link> *ex);
92
<refsect1 id="camel-camel-provider.description" role="desc">
93
<title role="desc.title">Description</title>
98
<refsect1 id="camel-camel-provider.details" role="details">
99
<title role="details.title">Details</title>
100
<refsect2 id="CamelProvider" role="struct">
101
<title>CamelProvider</title>
102
<indexterm zone="CamelProvider"><primary sortas="CamelProvider">CamelProvider</primary></indexterm><programlisting>typedef struct {
103
/* Provider name used in CamelURLs. */
104
const gchar *protocol;
106
/* Provider name as used by people. (May be the same as protocol) */
109
/* Description of the provider. A novice user should be able
110
* to read this description, and the information provided by
111
* an ISP, IS department, etc, and determine whether or not
112
* this provider is relevant to him, and if so, which
113
* information goes with it.
115
const gchar *description;
117
/* The category of message that this provider works with.
118
* (evolution-mail will only list a provider in the store/transport
119
* config dialogs if its domain is "mail".)
123
/* Flags describing the provider, flags describing its URLs */
124
gint flags, url_flags;
126
/* The ConfEntry and AutoDetect functions will probably be
127
* DEPRECATED in a future release */
129
/* Extra configuration information */
130
CamelProviderConfEntry *extra_conf;
132
/* auto-detection function */
133
CamelProviderAutoDetectFunc auto_detect;
135
/* CamelType(s) of its store and/or transport. If both are
136
* set, then they are assumed to be linked together and the
137
* transport type can only be used in an account that also
138
* uses the store type (eg, Exchange or NNTP).
140
CamelType object_types[CAMEL_NUM_PROVIDER_TYPES];
142
/* GList of CamelServiceAuthTypes the provider supports */
145
CamelObjectBag *service_cache[CAMEL_NUM_PROVIDER_TYPES];
148
GCompareFunc url_equal;
150
/* gettext translation domain (NULL for providers in the
151
* evolution source tree).
153
const gchar *translation_domain;
155
/* This string points to the provider's gconf key value
157
const gchar *license;
159
/* This holds the license file name [ ascii text format ] containing
160
* the license agreement. This should be the absolute file path. This
161
* is read only when the HAS_LICENSE flag is set
163
const gchar *license_file;
165
/* Private to the provider */
171
<refsect2 id="CamelProviderType" role="enum">
172
<title>enum CamelProviderType</title>
173
<indexterm zone="CamelProviderType"><primary sortas="CamelProviderType">CamelProviderType</primary></indexterm><programlisting>typedef enum {
174
CAMEL_PROVIDER_STORE,
175
CAMEL_PROVIDER_TRANSPORT,
176
CAMEL_NUM_PROVIDER_TYPES
181
<refsect2 id="CAMEL-PROVIDER-IS-LOCAL--CAPS" role="macro">
182
<title>CAMEL_PROVIDER_IS_LOCAL</title>
183
<indexterm zone="CAMEL-PROVIDER-IS-LOCAL--CAPS"><primary sortas="CAMEL_PROVIDER_IS_LOCAL">CAMEL_PROVIDER_IS_LOCAL</primary></indexterm><programlisting>#define CAMEL_PROVIDER_IS_LOCAL (1 << 1)
187
<refsect2 id="CAMEL-PROVIDER-IS-EXTERNAL--CAPS" role="macro">
188
<title>CAMEL_PROVIDER_IS_EXTERNAL</title>
189
<indexterm zone="CAMEL-PROVIDER-IS-EXTERNAL--CAPS"><primary sortas="CAMEL_PROVIDER_IS_EXTERNAL">CAMEL_PROVIDER_IS_EXTERNAL</primary></indexterm><programlisting>#define CAMEL_PROVIDER_IS_EXTERNAL (1 << 2)
193
<refsect2 id="CAMEL-PROVIDER-IS-SOURCE--CAPS" role="macro">
194
<title>CAMEL_PROVIDER_IS_SOURCE</title>
195
<indexterm zone="CAMEL-PROVIDER-IS-SOURCE--CAPS"><primary sortas="CAMEL_PROVIDER_IS_SOURCE">CAMEL_PROVIDER_IS_SOURCE</primary></indexterm><programlisting>#define CAMEL_PROVIDER_IS_SOURCE (1 << 3)
199
<refsect2 id="CAMEL-PROVIDER-IS-STORAGE--CAPS" role="macro">
200
<title>CAMEL_PROVIDER_IS_STORAGE</title>
201
<indexterm zone="CAMEL-PROVIDER-IS-STORAGE--CAPS"><primary sortas="CAMEL_PROVIDER_IS_STORAGE">CAMEL_PROVIDER_IS_STORAGE</primary></indexterm><programlisting>#define CAMEL_PROVIDER_IS_STORAGE (1 << 4)
205
<refsect2 id="CAMEL-PROVIDER-SUPPORTS-SSL--CAPS" role="macro">
206
<title>CAMEL_PROVIDER_SUPPORTS_SSL</title>
207
<indexterm zone="CAMEL-PROVIDER-SUPPORTS-SSL--CAPS"><primary sortas="CAMEL_PROVIDER_SUPPORTS_SSL">CAMEL_PROVIDER_SUPPORTS_SSL</primary></indexterm><programlisting>#define CAMEL_PROVIDER_SUPPORTS_SSL (1 << 5)
211
<refsect2 id="CAMEL-PROVIDER-HAS-LICENSE--CAPS" role="macro">
212
<title>CAMEL_PROVIDER_HAS_LICENSE</title>
213
<indexterm zone="CAMEL-PROVIDER-HAS-LICENSE--CAPS"><primary sortas="CAMEL_PROVIDER_HAS_LICENSE">CAMEL_PROVIDER_HAS_LICENSE</primary></indexterm><programlisting>#define CAMEL_PROVIDER_HAS_LICENSE (1 << 6)
217
<refsect2 id="CAMEL-PROVIDER-DISABLE-SENT-FOLDER--CAPS" role="macro">
218
<title>CAMEL_PROVIDER_DISABLE_SENT_FOLDER</title>
219
<indexterm zone="CAMEL-PROVIDER-DISABLE-SENT-FOLDER--CAPS"><primary sortas="CAMEL_PROVIDER_DISABLE_SENT_FOLDER">CAMEL_PROVIDER_DISABLE_SENT_FOLDER</primary></indexterm><programlisting>#define CAMEL_PROVIDER_DISABLE_SENT_FOLDER (1 << 7)
223
<refsect2 id="CAMEL-URL-PART-USER--CAPS" role="macro">
224
<title>CAMEL_URL_PART_USER</title>
225
<indexterm zone="CAMEL-URL-PART-USER--CAPS"><primary sortas="CAMEL_URL_PART_USER">CAMEL_URL_PART_USER</primary></indexterm><programlisting>#define CAMEL_URL_PART_USER (1 << 0)
229
<refsect2 id="CAMEL-URL-PART-AUTH--CAPS" role="macro">
230
<title>CAMEL_URL_PART_AUTH</title>
231
<indexterm zone="CAMEL-URL-PART-AUTH--CAPS"><primary sortas="CAMEL_URL_PART_AUTH">CAMEL_URL_PART_AUTH</primary></indexterm><programlisting>#define CAMEL_URL_PART_AUTH (1 << 1)
235
<refsect2 id="CAMEL-URL-PART-PASSWORD--CAPS" role="macro">
236
<title>CAMEL_URL_PART_PASSWORD</title>
237
<indexterm zone="CAMEL-URL-PART-PASSWORD--CAPS"><primary sortas="CAMEL_URL_PART_PASSWORD">CAMEL_URL_PART_PASSWORD</primary></indexterm><programlisting>#define CAMEL_URL_PART_PASSWORD (1 << 2)
241
<refsect2 id="CAMEL-URL-PART-HOST--CAPS" role="macro">
242
<title>CAMEL_URL_PART_HOST</title>
243
<indexterm zone="CAMEL-URL-PART-HOST--CAPS"><primary sortas="CAMEL_URL_PART_HOST">CAMEL_URL_PART_HOST</primary></indexterm><programlisting>#define CAMEL_URL_PART_HOST (1 << 3)
247
<refsect2 id="CAMEL-URL-PART-PORT--CAPS" role="macro">
248
<title>CAMEL_URL_PART_PORT</title>
249
<indexterm zone="CAMEL-URL-PART-PORT--CAPS"><primary sortas="CAMEL_URL_PART_PORT">CAMEL_URL_PART_PORT</primary></indexterm><programlisting>#define CAMEL_URL_PART_PORT (1 << 4)
253
<refsect2 id="CAMEL-URL-PART-PATH--CAPS" role="macro">
254
<title>CAMEL_URL_PART_PATH</title>
255
<indexterm zone="CAMEL-URL-PART-PATH--CAPS"><primary sortas="CAMEL_URL_PART_PATH">CAMEL_URL_PART_PATH</primary></indexterm><programlisting>#define CAMEL_URL_PART_PATH (1 << 5)
259
<refsect2 id="CAMEL-URL-PART-PATH-DIR--CAPS" role="macro">
260
<title>CAMEL_URL_PART_PATH_DIR</title>
261
<indexterm zone="CAMEL-URL-PART-PATH-DIR--CAPS"><primary sortas="CAMEL_URL_PART_PATH_DIR">CAMEL_URL_PART_PATH_DIR</primary></indexterm><programlisting>#define CAMEL_URL_PART_PATH_DIR (1 << 6)
265
<refsect2 id="CAMEL-URL-PART-NEED--CAPS" role="macro">
266
<title>CAMEL_URL_PART_NEED</title>
267
<indexterm zone="CAMEL-URL-PART-NEED--CAPS"><primary sortas="CAMEL_URL_PART_NEED">CAMEL_URL_PART_NEED</primary></indexterm><programlisting>#define CAMEL_URL_PART_NEED 8
271
<refsect2 id="CAMEL-URL-PART-HIDDEN--CAPS" role="macro">
272
<title>CAMEL_URL_PART_HIDDEN</title>
273
<indexterm zone="CAMEL-URL-PART-HIDDEN--CAPS"><primary sortas="CAMEL_URL_PART_HIDDEN">CAMEL_URL_PART_HIDDEN</primary></indexterm><programlisting>#define CAMEL_URL_PART_HIDDEN (CAMEL_URL_PART_NEED + 8)
277
<refsect2 id="CAMEL-PROVIDER-ALLOWS--CAPS" role="macro">
278
<title>CAMEL_PROVIDER_ALLOWS()</title>
279
<indexterm zone="CAMEL-PROVIDER-ALLOWS--CAPS"><primary sortas="CAMEL_PROVIDER_ALLOWS">CAMEL_PROVIDER_ALLOWS</primary></indexterm><programlisting>#define CAMEL_PROVIDER_ALLOWS(prov, flags) (prov->url_flags & (flags | (flags << CAMEL_URL_PART_NEED) | (flags << CAMEL_URL_PART_HIDDEN)))
282
</para><variablelist role="params">
283
<varlistentry><term><parameter>prov</parameter> :</term>
285
</simpara></listitem></varlistentry>
286
<varlistentry><term><parameter>flags</parameter> :</term>
288
</simpara></listitem></varlistentry>
289
</variablelist></refsect2>
290
<refsect2 id="CAMEL-PROVIDER-NEEDS--CAPS" role="macro">
291
<title>CAMEL_PROVIDER_NEEDS()</title>
292
<indexterm zone="CAMEL-PROVIDER-NEEDS--CAPS"><primary sortas="CAMEL_PROVIDER_NEEDS">CAMEL_PROVIDER_NEEDS</primary></indexterm><programlisting>#define CAMEL_PROVIDER_NEEDS(prov, flags) (prov->url_flags & (flags << CAMEL_URL_PART_NEED))
295
</para><variablelist role="params">
296
<varlistentry><term><parameter>prov</parameter> :</term>
298
</simpara></listitem></varlistentry>
299
<varlistentry><term><parameter>flags</parameter> :</term>
301
</simpara></listitem></varlistentry>
302
</variablelist></refsect2>
303
<refsect2 id="CAMEL-PROVIDER-HIDDEN--CAPS" role="macro">
304
<title>CAMEL_PROVIDER_HIDDEN()</title>
305
<indexterm zone="CAMEL-PROVIDER-HIDDEN--CAPS"><primary sortas="CAMEL_PROVIDER_HIDDEN">CAMEL_PROVIDER_HIDDEN</primary></indexterm><programlisting>#define CAMEL_PROVIDER_HIDDEN(prov, flags) (prov->url_flags & (flags << CAMEL_URL_PART_HIDDEN))
308
</para><variablelist role="params">
309
<varlistentry><term><parameter>prov</parameter> :</term>
311
</simpara></listitem></varlistentry>
312
<varlistentry><term><parameter>flags</parameter> :</term>
314
</simpara></listitem></varlistentry>
315
</variablelist></refsect2>
316
<refsect2 id="CAMEL-URL-ALLOW-USER--CAPS" role="macro">
317
<title>CAMEL_URL_ALLOW_USER</title>
318
<indexterm zone="CAMEL-URL-ALLOW-USER--CAPS"><primary sortas="CAMEL_URL_ALLOW_USER">CAMEL_URL_ALLOW_USER</primary></indexterm><programlisting>#define CAMEL_URL_ALLOW_USER (CAMEL_URL_PART_USER)
322
<refsect2 id="CAMEL-URL-ALLOW-AUTH--CAPS" role="macro">
323
<title>CAMEL_URL_ALLOW_AUTH</title>
324
<indexterm zone="CAMEL-URL-ALLOW-AUTH--CAPS"><primary sortas="CAMEL_URL_ALLOW_AUTH">CAMEL_URL_ALLOW_AUTH</primary></indexterm><programlisting>#define CAMEL_URL_ALLOW_AUTH (CAMEL_URL_PART_AUTH)
328
<refsect2 id="CAMEL-URL-ALLOW-PASSWORD--CAPS" role="macro">
329
<title>CAMEL_URL_ALLOW_PASSWORD</title>
330
<indexterm zone="CAMEL-URL-ALLOW-PASSWORD--CAPS"><primary sortas="CAMEL_URL_ALLOW_PASSWORD">CAMEL_URL_ALLOW_PASSWORD</primary></indexterm><programlisting>#define CAMEL_URL_ALLOW_PASSWORD (CAMEL_URL_PART_PASSWORD)
334
<refsect2 id="CAMEL-URL-ALLOW-HOST--CAPS" role="macro">
335
<title>CAMEL_URL_ALLOW_HOST</title>
336
<indexterm zone="CAMEL-URL-ALLOW-HOST--CAPS"><primary sortas="CAMEL_URL_ALLOW_HOST">CAMEL_URL_ALLOW_HOST</primary></indexterm><programlisting>#define CAMEL_URL_ALLOW_HOST (CAMEL_URL_PART_HOST)
340
<refsect2 id="CAMEL-URL-ALLOW-PORT--CAPS" role="macro">
341
<title>CAMEL_URL_ALLOW_PORT</title>
342
<indexterm zone="CAMEL-URL-ALLOW-PORT--CAPS"><primary sortas="CAMEL_URL_ALLOW_PORT">CAMEL_URL_ALLOW_PORT</primary></indexterm><programlisting>#define CAMEL_URL_ALLOW_PORT (CAMEL_URL_PART_PORT)
346
<refsect2 id="CAMEL-URL-ALLOW-PATH--CAPS" role="macro">
347
<title>CAMEL_URL_ALLOW_PATH</title>
348
<indexterm zone="CAMEL-URL-ALLOW-PATH--CAPS"><primary sortas="CAMEL_URL_ALLOW_PATH">CAMEL_URL_ALLOW_PATH</primary></indexterm><programlisting>#define CAMEL_URL_ALLOW_PATH (CAMEL_URL_PART_PATH)
352
<refsect2 id="CAMEL-URL-NEED-USER--CAPS" role="macro">
353
<title>CAMEL_URL_NEED_USER</title>
354
<indexterm zone="CAMEL-URL-NEED-USER--CAPS"><primary sortas="CAMEL_URL_NEED_USER">CAMEL_URL_NEED_USER</primary></indexterm><programlisting>#define CAMEL_URL_NEED_USER (CAMEL_URL_PART_USER << CAMEL_URL_PART_NEED)
358
<refsect2 id="CAMEL-URL-NEED-AUTH--CAPS" role="macro">
359
<title>CAMEL_URL_NEED_AUTH</title>
360
<indexterm zone="CAMEL-URL-NEED-AUTH--CAPS"><primary sortas="CAMEL_URL_NEED_AUTH">CAMEL_URL_NEED_AUTH</primary></indexterm><programlisting>#define CAMEL_URL_NEED_AUTH (CAMEL_URL_PART_AUTH << CAMEL_URL_PART_NEED)
364
<refsect2 id="CAMEL-URL-NEED-PASSWORD--CAPS" role="macro">
365
<title>CAMEL_URL_NEED_PASSWORD</title>
366
<indexterm zone="CAMEL-URL-NEED-PASSWORD--CAPS"><primary sortas="CAMEL_URL_NEED_PASSWORD">CAMEL_URL_NEED_PASSWORD</primary></indexterm><programlisting>#define CAMEL_URL_NEED_PASSWORD (CAMEL_URL_PART_PASSWORD << CAMEL_URL_PART_NEED)
370
<refsect2 id="CAMEL-URL-NEED-HOST--CAPS" role="macro">
371
<title>CAMEL_URL_NEED_HOST</title>
372
<indexterm zone="CAMEL-URL-NEED-HOST--CAPS"><primary sortas="CAMEL_URL_NEED_HOST">CAMEL_URL_NEED_HOST</primary></indexterm><programlisting>#define CAMEL_URL_NEED_HOST (CAMEL_URL_PART_HOST << CAMEL_URL_PART_NEED)
376
<refsect2 id="CAMEL-URL-NEED-PORT--CAPS" role="macro">
377
<title>CAMEL_URL_NEED_PORT</title>
378
<indexterm zone="CAMEL-URL-NEED-PORT--CAPS"><primary sortas="CAMEL_URL_NEED_PORT">CAMEL_URL_NEED_PORT</primary></indexterm><programlisting>#define CAMEL_URL_NEED_PORT (CAMEL_URL_PART_PORT << CAMEL_URL_PART_NEED)
382
<refsect2 id="CAMEL-URL-NEED-PATH--CAPS" role="macro">
383
<title>CAMEL_URL_NEED_PATH</title>
384
<indexterm zone="CAMEL-URL-NEED-PATH--CAPS"><primary sortas="CAMEL_URL_NEED_PATH">CAMEL_URL_NEED_PATH</primary></indexterm><programlisting>#define CAMEL_URL_NEED_PATH (CAMEL_URL_PART_PATH << CAMEL_URL_PART_NEED)
388
<refsect2 id="CAMEL-URL-NEED-PATH-DIR--CAPS" role="macro">
389
<title>CAMEL_URL_NEED_PATH_DIR</title>
390
<indexterm zone="CAMEL-URL-NEED-PATH-DIR--CAPS"><primary sortas="CAMEL_URL_NEED_PATH_DIR">CAMEL_URL_NEED_PATH_DIR</primary></indexterm><programlisting>#define CAMEL_URL_NEED_PATH_DIR (CAMEL_URL_PART_PATH_DIR << CAMEL_URL_PART_NEED)
394
<refsect2 id="CAMEL-URL-HIDDEN-USER--CAPS" role="macro">
395
<title>CAMEL_URL_HIDDEN_USER</title>
396
<indexterm zone="CAMEL-URL-HIDDEN-USER--CAPS"><primary sortas="CAMEL_URL_HIDDEN_USER">CAMEL_URL_HIDDEN_USER</primary></indexterm><programlisting>#define CAMEL_URL_HIDDEN_USER (CAMEL_URL_PART_USER << CAMEL_URL_PART_HIDDEN)
400
<refsect2 id="CAMEL-URL-HIDDEN-AUTH--CAPS" role="macro">
401
<title>CAMEL_URL_HIDDEN_AUTH</title>
402
<indexterm zone="CAMEL-URL-HIDDEN-AUTH--CAPS"><primary sortas="CAMEL_URL_HIDDEN_AUTH">CAMEL_URL_HIDDEN_AUTH</primary></indexterm><programlisting>#define CAMEL_URL_HIDDEN_AUTH (CAMEL_URL_PART_AUTH << CAMEL_URL_PART_HIDDEN)
406
<refsect2 id="CAMEL-URL-HIDDEN-PASSWORD--CAPS" role="macro">
407
<title>CAMEL_URL_HIDDEN_PASSWORD</title>
408
<indexterm zone="CAMEL-URL-HIDDEN-PASSWORD--CAPS"><primary sortas="CAMEL_URL_HIDDEN_PASSWORD">CAMEL_URL_HIDDEN_PASSWORD</primary></indexterm><programlisting>#define CAMEL_URL_HIDDEN_PASSWORD (CAMEL_URL_PART_PASSWORD << CAMEL_URL_PART_HIDDEN)
412
<refsect2 id="CAMEL-URL-HIDDEN-HOST--CAPS" role="macro">
413
<title>CAMEL_URL_HIDDEN_HOST</title>
414
<indexterm zone="CAMEL-URL-HIDDEN-HOST--CAPS"><primary sortas="CAMEL_URL_HIDDEN_HOST">CAMEL_URL_HIDDEN_HOST</primary></indexterm><programlisting>#define CAMEL_URL_HIDDEN_HOST (CAMEL_URL_PART_HOST << CAMEL_URL_PART_HIDDEN)
418
<refsect2 id="CAMEL-URL-HIDDEN-PORT--CAPS" role="macro">
419
<title>CAMEL_URL_HIDDEN_PORT</title>
420
<indexterm zone="CAMEL-URL-HIDDEN-PORT--CAPS"><primary sortas="CAMEL_URL_HIDDEN_PORT">CAMEL_URL_HIDDEN_PORT</primary></indexterm><programlisting>#define CAMEL_URL_HIDDEN_PORT (CAMEL_URL_PART_PORT << CAMEL_URL_PART_HIDDEN)
424
<refsect2 id="CAMEL-URL-HIDDEN-PATH--CAPS" role="macro">
425
<title>CAMEL_URL_HIDDEN_PATH</title>
426
<indexterm zone="CAMEL-URL-HIDDEN-PATH--CAPS"><primary sortas="CAMEL_URL_HIDDEN_PATH">CAMEL_URL_HIDDEN_PATH</primary></indexterm><programlisting>#define CAMEL_URL_HIDDEN_PATH (CAMEL_URL_PART_PATH << CAMEL_URL_PART_HIDDEN)
430
<refsect2 id="CAMEL-URL-FRAGMENT-IS-PATH--CAPS" role="macro">
431
<title>CAMEL_URL_FRAGMENT_IS_PATH</title>
432
<indexterm zone="CAMEL-URL-FRAGMENT-IS-PATH--CAPS"><primary sortas="CAMEL_URL_FRAGMENT_IS_PATH">CAMEL_URL_FRAGMENT_IS_PATH</primary></indexterm><programlisting>#define CAMEL_URL_FRAGMENT_IS_PATH (1 << 30) /* url uses fragment for folder name path, not path */
436
<refsect2 id="CAMEL-URL-PATH-IS-ABSOLUTE--CAPS" role="macro">
437
<title>CAMEL_URL_PATH_IS_ABSOLUTE</title>
438
<indexterm zone="CAMEL-URL-PATH-IS-ABSOLUTE--CAPS"><primary sortas="CAMEL_URL_PATH_IS_ABSOLUTE">CAMEL_URL_PATH_IS_ABSOLUTE</primary></indexterm><programlisting>#define CAMEL_URL_PATH_IS_ABSOLUTE (1 << 31)
442
<refsect2 id="CAMEL-PROVIDER-IS-STORE-AND-TRANSPORT--CAPS" role="macro">
443
<title>CAMEL_PROVIDER_IS_STORE_AND_TRANSPORT()</title>
444
<indexterm zone="CAMEL-PROVIDER-IS-STORE-AND-TRANSPORT--CAPS"><primary sortas="CAMEL_PROVIDER_IS_STORE_AND_TRANSPORT">CAMEL_PROVIDER_IS_STORE_AND_TRANSPORT</primary></indexterm><programlisting>#define CAMEL_PROVIDER_IS_STORE_AND_TRANSPORT(prov) (prov->object_types[CAMEL_PROVIDER_STORE] && prov->object_types[CAMEL_PROVIDER_TRANSPORT])
447
</para><variablelist role="params">
448
<varlistentry><term><parameter>prov</parameter> :</term>
450
</simpara></listitem></varlistentry>
451
</variablelist></refsect2>
452
<refsect2 id="CamelProviderConfType" role="enum">
453
<title>enum CamelProviderConfType</title>
454
<indexterm zone="CamelProviderConfType"><primary sortas="CamelProviderConfType">CamelProviderConfType</primary></indexterm><programlisting>typedef enum {
455
CAMEL_PROVIDER_CONF_END,
456
CAMEL_PROVIDER_CONF_SECTION_START,
457
CAMEL_PROVIDER_CONF_SECTION_END,
458
CAMEL_PROVIDER_CONF_CHECKBOX,
459
CAMEL_PROVIDER_CONF_CHECKSPIN,
460
CAMEL_PROVIDER_CONF_ENTRY,
461
CAMEL_PROVIDER_CONF_LABEL,
462
CAMEL_PROVIDER_CONF_HIDDEN,
463
CAMEL_PROVIDER_CONF_OPTIONS
464
} CamelProviderConfType;
468
<refsect2 id="CamelProviderConfEntry" role="struct">
469
<title>CamelProviderConfEntry</title>
470
<indexterm zone="CamelProviderConfEntry"><primary sortas="CamelProviderConfEntry">CamelProviderConfEntry</primary></indexterm><programlisting>typedef struct {
471
CamelProviderConfType type;
472
const gchar *name, *depname;
473
const gchar *text, *value;
474
} CamelProviderConfEntry;
478
<refsect2 id="CAMEL-PROVIDER-CONF-DEFAULT-USERNAME--CAPS" role="macro">
479
<title>CAMEL_PROVIDER_CONF_DEFAULT_USERNAME</title>
480
<indexterm zone="CAMEL-PROVIDER-CONF-DEFAULT-USERNAME--CAPS"><primary sortas="CAMEL_PROVIDER_CONF_DEFAULT_USERNAME">CAMEL_PROVIDER_CONF_DEFAULT_USERNAME</primary></indexterm><programlisting>#define CAMEL_PROVIDER_CONF_DEFAULT_USERNAME { CAMEL_PROVIDER_CONF_LABEL, "username", NULL, N_("User_name:"), NULL }
484
<refsect2 id="CAMEL-PROVIDER-CONF-DEFAULT-HOSTNAME--CAPS" role="macro">
485
<title>CAMEL_PROVIDER_CONF_DEFAULT_HOSTNAME</title>
486
<indexterm zone="CAMEL-PROVIDER-CONF-DEFAULT-HOSTNAME--CAPS"><primary sortas="CAMEL_PROVIDER_CONF_DEFAULT_HOSTNAME">CAMEL_PROVIDER_CONF_DEFAULT_HOSTNAME</primary></indexterm><programlisting>#define CAMEL_PROVIDER_CONF_DEFAULT_HOSTNAME { CAMEL_PROVIDER_CONF_LABEL, "hostname", NULL, N_("_Host:"), NULL }
490
<refsect2 id="CAMEL-PROVIDER-CONF-DEFAULT-PATH--CAPS" role="macro">
491
<title>CAMEL_PROVIDER_CONF_DEFAULT_PATH</title>
492
<indexterm zone="CAMEL-PROVIDER-CONF-DEFAULT-PATH--CAPS"><primary sortas="CAMEL_PROVIDER_CONF_DEFAULT_PATH">CAMEL_PROVIDER_CONF_DEFAULT_PATH</primary></indexterm><programlisting>#define CAMEL_PROVIDER_CONF_DEFAULT_PATH { CAMEL_PROVIDER_CONF_ENTRY, "path", NULL, N_("_Path:"), "" }
496
<refsect2 id="CamelProviderAutoDetectFunc" role="function">
497
<title>CamelProviderAutoDetectFunc ()</title>
498
<indexterm zone="CamelProviderAutoDetectFunc"><primary sortas="CamelProviderAutoDetectFunc">CamelProviderAutoDetectFunc</primary></indexterm><programlisting><link linkend="gint">gint</link> (*CamelProviderAutoDetectFunc) (<link linkend="CamelURL">CamelURL</link> *url,
499
<link linkend="GHashTable">GHashTable</link> **auto_detected,
500
<link linkend="CamelException">CamelException</link> *ex);</programlisting>
502
</para><variablelist role="params">
503
<varlistentry><term><parameter>url</parameter> :</term>
505
</simpara></listitem></varlistentry>
506
<varlistentry><term><parameter>auto_detected</parameter> :</term>
508
</simpara></listitem></varlistentry>
509
<varlistentry><term><parameter>ex</parameter> :</term>
511
</simpara></listitem></varlistentry>
512
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara>
513
</simpara></listitem></varlistentry>
514
</variablelist></refsect2>
515
<refsect2 id="CamelProviderModule" role="struct">
516
<title>CamelProviderModule</title>
517
<indexterm zone="CamelProviderModule"><primary sortas="CamelProviderModule">CamelProviderModule</primary></indexterm><programlisting>typedef struct {
521
} CamelProviderModule;
525
<refsect2 id="camel-provider-init" role="function">
526
<title>camel_provider_init ()</title>
527
<indexterm zone="camel-provider-init"><primary sortas="camel_provider_init">camel_provider_init</primary></indexterm><programlisting><link linkend="void">void</link> camel_provider_init (void);</programlisting>
529
Initialize the Camel provider system by reading in the .urls
530
files in the provider directory and creating a hash table mapping
531
URLs to module names.
534
A .urls file has the same initial prefix as the shared library it
535
correspond to, and consists of a series of lines containing the URL
536
protocols that that library handles.
539
TODO: This should be pathed?
540
TODO: This should be plugin-d?</para>
543
<refsect2 id="camel-provider-load" role="function">
544
<title>camel_provider_load ()</title>
545
<indexterm zone="camel-provider-load"><primary sortas="camel_provider_load">camel_provider_load</primary></indexterm><programlisting><link linkend="void">void</link> camel_provider_load (const <link linkend="gchar">gchar</link> *path,
546
<link linkend="CamelException">CamelException</link> *ex);</programlisting>
548
Loads the provider at <parameter>path</parameter>, and calls its initialization function,
549
passing <parameter>session</parameter> as an argument. The provider should then register
550
itself with <parameter>session</parameter>.</para>
552
</para><variablelist role="params">
553
<varlistentry><term><parameter>path</parameter> :</term>
554
<listitem><simpara> the path to a shared library
555
</simpara></listitem></varlistentry>
556
<varlistentry><term><parameter>ex</parameter> :</term>
557
<listitem><simpara> a CamelException
558
</simpara></listitem></varlistentry>
559
</variablelist></refsect2>
560
<refsect2 id="camel-provider-register" role="function">
561
<title>camel_provider_register ()</title>
562
<indexterm zone="camel-provider-register"><primary sortas="camel_provider_register">camel_provider_register</primary></indexterm><programlisting><link linkend="void">void</link> camel_provider_register (<link linkend="CamelProvider">CamelProvider</link> *provider);</programlisting>
564
Registers a provider.</para>
566
</para><variablelist role="params">
567
<varlistentry><term><parameter>provider</parameter> :</term>
568
<listitem><simpara> provider object
569
</simpara></listitem></varlistentry>
570
</variablelist></refsect2>
571
<refsect2 id="camel-provider-list" role="function">
572
<title>camel_provider_list ()</title>
573
<indexterm zone="camel-provider-list"><primary sortas="camel_provider_list">camel_provider_list</primary></indexterm><programlisting><link linkend="GList">GList</link> * camel_provider_list (<link linkend="gboolean">gboolean</link> load);</programlisting>
575
</para><variablelist role="params">
576
<varlistentry><term><parameter>load</parameter> :</term>
578
</simpara></listitem></varlistentry>
579
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara>
580
</simpara></listitem></varlistentry>
581
</variablelist></refsect2>
582
<refsect2 id="camel-provider-get" role="function">
583
<title>camel_provider_get ()</title>
584
<indexterm zone="camel-provider-get"><primary sortas="camel_provider_get">camel_provider_get</primary></indexterm><programlisting><link linkend="CamelProvider">CamelProvider</link> * camel_provider_get (const <link linkend="gchar">gchar</link> *url_string,
585
<link linkend="CamelException">CamelException</link> *ex);</programlisting>
587
This returns the CamelProvider that would be used to handle
588
<parameter>url_string</parameter>, loading it in from disk if necessary.</para>
590
</para><variablelist role="params">
591
<varlistentry><term><parameter>url_string</parameter> :</term>
592
<listitem><simpara> the URL for the service whose provider you want
593
</simpara></listitem></varlistentry>
594
<varlistentry><term><parameter>ex</parameter> :</term>
595
<listitem><simpara> a CamelException
596
</simpara></listitem></varlistentry>
597
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> the provider, or <link linkend="NULL--CAPS"><literal>NULL</literal></link>, in which case <parameter>ex</parameter> will be set.
598
</simpara></listitem></varlistentry>
599
</variablelist></refsect2>
600
<refsect2 id="camel-provider-module-init" role="function">
601
<title>camel_provider_module_init ()</title>
602
<indexterm zone="camel-provider-module-init"><primary sortas="camel_provider_module_init">camel_provider_module_init</primary></indexterm><programlisting><link linkend="void">void</link> camel_provider_module_init (void);</programlisting>
605
<refsect2 id="camel-provider-auto-detect" role="function">
606
<title>camel_provider_auto_detect ()</title>
607
<indexterm zone="camel-provider-auto-detect"><primary sortas="camel_provider_auto_detect">camel_provider_auto_detect</primary></indexterm><programlisting><link linkend="gint">gint</link> camel_provider_auto_detect (<link linkend="CamelProvider">CamelProvider</link> *provider,
608
<link linkend="CamelURL">CamelURL</link> *url,
609
<link linkend="GHashTable">GHashTable</link> **auto_detected,
610
<link linkend="CamelException">CamelException</link> *ex);</programlisting>
612
After filling in the standard Username/Hostname/Port/Path settings
613
(which must be set in <parameter>url</parameter>), if the provider supports it, you
614
may wish to have the provider auto-detect further settings based on
615
the aformentioned settings.
618
If the provider does not support auto-detection, <parameter>auto_detected</parameter>
619
will be set to <link linkend="NULL--CAPS"><literal>NULL</literal></link>. Otherwise the provider will attempt to
620
auto-detect whatever it can and file them into <parameter>auto_detected</parameter>. If
621
for some reason it cannot auto-detect anything (not enough
622
information provided in <parameter>url</parameter>?) then <parameter>auto_detected</parameter> will be
623
set to <link linkend="NULL--CAPS"><literal>NULL</literal></link> and an exception may be set to explain why it failed.</para>
625
</para><variablelist role="params">
626
<varlistentry><term><parameter>provider</parameter> :</term>
627
<listitem><simpara> camel provider
628
</simpara></listitem></varlistentry>
629
<varlistentry><term><parameter>url</parameter> :</term>
630
<listitem><simpara> a <link linkend="CamelURL"><type>CamelURL</type></link>
631
</simpara></listitem></varlistentry>
632
<varlistentry><term><parameter>auto_detected</parameter> :</term>
633
<listitem><simpara> output hash table of auto-detected values
634
</simpara></listitem></varlistentry>
635
<varlistentry><term><parameter>ex</parameter> :</term>
636
<listitem><simpara> exception
637
</simpara></listitem></varlistentry>
638
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> 0 on success or -1 on fail.
639
</simpara></listitem></varlistentry>
640
</variablelist></refsect2>