/usr/include/evolution-data-server/camel/camel-provider.h is in libcamel1.2-dev 3.28.1-1ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 | /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
/* camel-provider.h : provider definition
*
* Copyright (C) 1999-2008 Novell, Inc. (www.novell.com)
*
* This library is free software: you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
* for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this library. If not, see <http://www.gnu.org/licenses/>.
*
* Authors: Bertrand Guiheneuf <bertrand@helixcode.com>
* Jeffrey Stedfast <fejj@ximian.com>
*/
#if !defined (__CAMEL_H_INSIDE__) && !defined (CAMEL_COMPILATION)
#error "Only <camel/camel.h> can be included directly."
#endif
#ifndef CAMEL_PROVIDER_H
#define CAMEL_PROVIDER_H
#include <glib-object.h>
#include <camel/camel-enums.h>
#include <camel/camel-object-bag.h>
#include <camel/camel-url.h>
#define CAMEL_PROVIDER(obj) ((CamelProvider *)(obj))
#define CAMEL_TYPE_PROVIDER \
(camel_provider_get_type ())
/**
* EDS_CAMEL_PROVIDER_DIR:
*
* This environment variable configures where the camel
* provider modules are loaded from.
*/
#define EDS_CAMEL_PROVIDER_DIR "EDS_CAMEL_PROVIDER_DIR"
G_BEGIN_DECLS
extern gchar *camel_provider_type_name[CAMEL_NUM_PROVIDER_TYPES];
/* Flags for url_flags. "ALLOW" means the config dialog will let the
* user configure it. "NEED" implies "ALLOW" but means the user must
* configure it. Service code can assume that any url part for which
* it has set the NEED flag will be set when the service is
* created. "HIDE" also implies "ALLOW", but the setting will be
* hidden/no widgets created for it.
*/
#define CAMEL_URL_PART_USER (1 << 0)
#define CAMEL_URL_PART_AUTH (1 << 1)
#define CAMEL_URL_PART_PASSWORD (1 << 2)
#define CAMEL_URL_PART_HOST (1 << 3)
#define CAMEL_URL_PART_PORT (1 << 4)
#define CAMEL_URL_PART_PATH (1 << 5)
#define CAMEL_URL_PART_PATH_DIR (1 << 6)
#define CAMEL_URL_PART_NEED 8
#define CAMEL_URL_PART_HIDDEN (CAMEL_URL_PART_NEED + 8)
/* Use these macros to test a provider's url_flags */
#define CAMEL_PROVIDER_ALLOWS(prov, flags) \
(prov->url_flags & (flags | (flags << CAMEL_URL_PART_NEED) | (flags << CAMEL_URL_PART_HIDDEN)))
#define CAMEL_PROVIDER_NEEDS(prov, flags) \
(prov->url_flags & (flags << CAMEL_URL_PART_NEED))
#define CAMEL_PROVIDER_HIDDEN(prov, flags) \
(prov->url_flags & (flags << CAMEL_URL_PART_HIDDEN))
/* Providers use these macros to actually define their url_flags */
typedef enum {
CAMEL_URL_ALLOW_USER = CAMEL_URL_PART_USER,
CAMEL_URL_ALLOW_AUTH = CAMEL_URL_PART_AUTH,
CAMEL_URL_ALLOW_PASSWORD = CAMEL_URL_PART_PASSWORD,
CAMEL_URL_ALLOW_HOST = CAMEL_URL_PART_HOST,
CAMEL_URL_ALLOW_PORT = CAMEL_URL_PART_PORT,
CAMEL_URL_ALLOW_PATH = CAMEL_URL_PART_PATH,
CAMEL_URL_NEED_USER = CAMEL_URL_PART_USER << CAMEL_URL_PART_NEED,
CAMEL_URL_NEED_AUTH = CAMEL_URL_PART_AUTH << CAMEL_URL_PART_NEED,
CAMEL_URL_NEED_PASSWORD = CAMEL_URL_PART_PASSWORD << CAMEL_URL_PART_NEED,
CAMEL_URL_NEED_HOST = CAMEL_URL_PART_HOST << CAMEL_URL_PART_NEED,
CAMEL_URL_NEED_PORT = CAMEL_URL_PART_PORT << CAMEL_URL_PART_NEED,
CAMEL_URL_NEED_PATH = CAMEL_URL_PART_PATH << CAMEL_URL_PART_NEED,
CAMEL_URL_NEED_PATH_DIR = CAMEL_URL_PART_PATH_DIR << CAMEL_URL_PART_NEED,
CAMEL_URL_HIDDEN_USER = CAMEL_URL_PART_USER << CAMEL_URL_PART_HIDDEN,
CAMEL_URL_HIDDEN_AUTH = CAMEL_URL_PART_AUTH << CAMEL_URL_PART_HIDDEN,
CAMEL_URL_HIDDEN_PASSWORD = CAMEL_URL_PART_PASSWORD << CAMEL_URL_PART_HIDDEN,
CAMEL_URL_HIDDEN_HOST = CAMEL_URL_PART_HOST << CAMEL_URL_PART_HIDDEN,
CAMEL_URL_HIDDEN_PORT = CAMEL_URL_PART_PORT << CAMEL_URL_PART_HIDDEN,
CAMEL_URL_HIDDEN_PATH = CAMEL_URL_PART_PATH << CAMEL_URL_PART_HIDDEN,
CAMEL_URL_FRAGMENT_IS_PATH = 1 << 30, /* url uses fragment for folder name path, not path */
CAMEL_URL_PATH_IS_ABSOLUTE = 1 << 31,
} CamelProviderURLFlags;
#define CAMEL_PROVIDER_IS_STORE_AND_TRANSPORT(provider) \
((provider != NULL) && \
(provider->object_types[CAMEL_PROVIDER_STORE] != G_TYPE_INVALID) && \
(provider->object_types[CAMEL_PROVIDER_TRANSPORT] != G_TYPE_INVALID))
/* Generic extra config stuff */
typedef struct {
CamelProviderConfType type;
const gchar *name, *depname;
const gchar *text, *value;
} CamelProviderConfEntry;
/**
* CamelProviderPortEntry:
* @port: port number
* @desc: human description of the port
* @is_ssl: a boolean whether the port is used together with TLS/SSL
*
* Since: 3.2
**/
typedef struct {
gint port;
const gchar *desc;
gboolean is_ssl;
} CamelProviderPortEntry;
typedef gint (*CamelProviderAutoDetectFunc) (CamelURL *url, GHashTable **auto_detected, GError **error);
typedef struct {
/* Provider protocol name (e.g. "imap", "smtp"). */
const gchar *protocol;
/* Provider name as used by people. (May be the same as protocol) */
const gchar *name;
/* Description of the provider. A novice user should be able
* to read this description, and the information provided by
* an ISP, IS department, etc, and determine whether or not
* this provider is relevant to him, and if so, which
* information goes with it.
*/
const gchar *description;
/* The category of message that this provider works with.
* (evolution-mail will only list a provider in the store/transport
* config dialogs if its domain is "mail".)
*/
const gchar *domain;
/* Flags describing the provider, flags describing its URLs */
CamelProviderFlags flags;
CamelProviderURLFlags url_flags;
/* The ConfEntry and AutoDetect functions will probably be
* DEPRECATED in a future release */
/* Extra configuration information */
CamelProviderConfEntry *extra_conf;
/* The list of CamelProviderPortEntry structs. Each struct contains
* port number and a short string description ("Default IMAP port"
* or "POP3 over SSL" etc.
*/
CamelProviderPortEntry *port_entries;
/* auto-detection function */
CamelProviderAutoDetectFunc auto_detect;
/* GType(s) of its store and/or transport. If both are
* set, then they are assumed to be linked together and the
* transport type can only be used in an account that also
* uses the store type (eg, Exchange or NNTP).
*/
GType object_types[CAMEL_NUM_PROVIDER_TYPES];
/* GList of CamelServiceAuthTypes the provider supports */
GList *authtypes;
GHashFunc url_hash;
GEqualFunc url_equal;
/* gettext translation domain (NULL for providers in the
* evolution source tree).
*/
const gchar *translation_domain;
/* Private to the provider */
gpointer priv;
} CamelProvider;
typedef struct _CamelProviderModule CamelProviderModule;
struct _CamelProviderModule {
gchar *path;
GSList *types;
guint loaded : 1;
};
/* Introspection function */
GType camel_provider_get_type (void) G_GNUC_CONST;
void camel_provider_init (void);
gboolean camel_provider_load (const gchar *path,
GError **error);
void camel_provider_register (CamelProvider *provider);
GList * camel_provider_list (gboolean load);
CamelProvider * camel_provider_get (const gchar *protocol,
GError **error);
/* This is defined by each module, not by camel-provider.c. */
void camel_provider_module_init (void);
gint camel_provider_auto_detect (CamelProvider *provider,
CamelURL *url,
GHashTable **auto_detected,
GError **error);
G_END_DECLS
#endif /* CAMEL_PROVIDER_H */
|