Mercurial > dovecot > core-2.2
comparison src/lib-dict/dict-fs.c @ 17751:77e71a45a475
lib-dict: Changed dict.init() API to take struct dict_settings and added dict_init_full().
This allows giving more settings to dict in future as needed. Unfortunately
it also breaks the internal dict API, but there aren't really any plugins
widely using it, so it's not a big problem.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Thu, 28 Aug 2014 21:56:41 +0900 |
parents | add8c00fb3cc |
children | 979e5a007248 |
comparison
equal
deleted
inserted
replaced
17750:d91b43496e72 | 17751:77e71a45a475 |
---|---|
14 char *username; | 14 char *username; |
15 }; | 15 }; |
16 | 16 |
17 static int | 17 static int |
18 fs_dict_init(struct dict *driver, const char *uri, | 18 fs_dict_init(struct dict *driver, const char *uri, |
19 enum dict_data_type value_type ATTR_UNUSED, | 19 const struct dict_settings *set, |
20 const char *username, | 20 struct dict **dict_r, const char **error_r) |
21 const char *base_dir, struct dict **dict_r, | |
22 const char **error_r) | |
23 { | 21 { |
24 struct fs_settings fs_set; | 22 struct fs_settings fs_set; |
25 struct fs *fs; | 23 struct fs *fs; |
26 struct fs_dict *dict; | 24 struct fs_dict *dict; |
27 const char *p, *fs_driver, *fs_args; | 25 const char *p, *fs_driver, *fs_args; |
34 fs_driver = t_strdup_until(uri, p); | 32 fs_driver = t_strdup_until(uri, p); |
35 fs_args = p+1; | 33 fs_args = p+1; |
36 } | 34 } |
37 | 35 |
38 memset(&fs_set, 0, sizeof(fs_set)); | 36 memset(&fs_set, 0, sizeof(fs_set)); |
39 fs_set.base_dir = base_dir; | 37 fs_set.username = set->username; |
38 fs_set.base_dir = set->base_dir; | |
40 if (fs_init(fs_driver, fs_args, &fs_set, &fs, error_r) < 0) | 39 if (fs_init(fs_driver, fs_args, &fs_set, &fs, error_r) < 0) |
41 return -1; | 40 return -1; |
42 | 41 |
43 dict = i_new(struct fs_dict, 1); | 42 dict = i_new(struct fs_dict, 1); |
44 dict->dict = *driver; | 43 dict->dict = *driver; |
45 dict->fs = fs; | 44 dict->fs = fs; |
46 dict->username = i_strdup(username); | 45 dict->username = i_strdup(set->username); |
47 | 46 |
48 *dict_r = &dict->dict; | 47 *dict_r = &dict->dict; |
49 return 0; | 48 return 0; |
50 } | 49 } |
51 | 50 |