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