1 /* Copyright (c) 2006, Nokia Corporation
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are
8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
13 * * Neither the name of the Nokia Corporation nor the names of its
14 * contributors may be used to endorse or promote products derived from
15 * this software without specific prior written permission.
17 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
18 * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
19 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
20 * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
21 * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
22 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
23 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
24 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
25 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
26 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
27 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 #include <string.h> /* for strcmp */
31 #include "modest-presets.h"
33 #define MODEST_PRESETS_KEY_MCC "MCC"
34 #define MODEST_PRESETS_KEY_INCOMING "IncomingMailServer"
35 #define MODEST_PRESETS_KEY_OUTGOING "OutgoingMailServer"
36 #define MODEST_PRESETS_KEY_MAILBOX_TYPE "MailboxType"
37 #define MODEST_PRESETS_KEY_MAILBOX_TYPE_POP "pop"
38 #define MODEST_PRESETS_KEY_MAILBOX_TYPE_IMAP "imap"
39 #define MODEST_PRESETS_KEY_APOP "APOPSecureLogin"
40 #define MODEST_PRESETS_KEY_SECURE_SMTP "SecureSMTP"
41 #define MODEST_PRESETS_KEY_TRUE "true"
45 modest_presets_new (const gchar *presetfile)
47 ModestPresets *presets = NULL;
50 g_return_val_if_fail (presetfile, NULL);
52 presets = g_new (ModestPresets, 1);
53 presets->keyfile = g_key_file_new ();
55 if (!presets->keyfile) {
56 g_printerr ("modest: cannot instantiate GKeyFile\n");
61 if (!g_key_file_load_from_file (presets->keyfile, presetfile,
62 G_KEY_FILE_NONE, &err)) {
63 g_printerr ("modest: cannot open keyfile: %s\n",
64 err ? err->message : "unknown reason");
74 modest_presets_get_providers (ModestPresets *self, guint mcc,
75 gboolean include_globals)
77 gchar **providers = NULL;
78 gchar **filtered = NULL;
82 g_return_val_if_fail (self && self->keyfile, NULL);
84 providers = g_key_file_get_groups (self->keyfile, NULL);
86 /* return *all* providers? */
87 if (mcc == 0 && include_globals)
90 /* nope: filter them */
91 len = g_strv_length(providers);
92 filtered = g_new(gchar*, len + 1);
94 for (i=0, j=0; i != len; ++i) {
97 this_mcc = g_key_file_get_integer (self->keyfile, providers[i],
98 MODEST_PRESETS_KEY_MCC, &err);
100 g_strfreev (providers);
101 g_strfreev (filtered);
103 g_printerr ("modest: error parsing keyfile: %s\n", err->message);
107 if (this_mcc == mcc || (this_mcc == 0 && include_globals)) {
108 filtered[j++] = providers[i];
109 filtered[j] = NULL; /* the array must be NULL-terminated */
110 providers[i] = NULL; /* g_strfreev: leave it alone */
114 g_strfreev (providers);
120 modest_presets_get_server (ModestPresets *self, const gchar *provider,
121 gboolean incoming_server)
123 g_return_val_if_fail (self && self->keyfile, NULL);
124 g_return_val_if_fail (provider, NULL);
126 return g_key_file_get_string (self->keyfile, provider,
128 MODEST_PRESETS_KEY_INCOMING :
129 MODEST_PRESETS_KEY_OUTGOING,
135 modest_presets_get_info (ModestPresets *self, const gchar *provider, gboolean incoming_server)
137 ModestPresetsInfo info = 0;
140 g_return_val_if_fail (self && self->keyfile, 0);
142 val = g_key_file_get_string (self->keyfile, provider,
143 MODEST_PRESETS_KEY_INCOMING, NULL);
146 val = g_key_file_get_string (self->keyfile, provider,
147 MODEST_PRESETS_KEY_MAILBOX_TYPE, NULL);
148 if (strcmp (val, MODEST_PRESETS_KEY_MAILBOX_TYPE_POP) == 0)
149 info |= MODEST_PRESETS_INFO_POP;
150 if (strcmp (val, MODEST_PRESETS_KEY_MAILBOX_TYPE_IMAP) == 0)
151 info |= MODEST_PRESETS_INFO_IMAP;
154 val = g_key_file_get_string (self->keyfile, provider,
155 MODEST_PRESETS_KEY_APOP, NULL);
156 if (val && strcmp(val, MODEST_PRESETS_KEY_TRUE) == 0)
157 info |= MODEST_PRESETS_INFO_APOP;
162 val = g_key_file_get_string (self->keyfile, provider,
163 MODEST_PRESETS_KEY_OUTGOING, NULL);
166 info |= MODEST_PRESETS_INFO_SMTP;
168 val = g_key_file_get_string (self->keyfile, provider,
169 MODEST_PRESETS_KEY_SECURE_SMTP, NULL);
170 if (val && strcmp(val,MODEST_PRESETS_KEY_TRUE) == 0)
171 info |= MODEST_PRESETS_INFO_SECURE_SMTP;
180 modest_presets_destroy (ModestPresets *self)
185 g_key_file_free (self->keyfile);
186 self->keyfile = NULL;