1
2 #include "common.h"
3
4 #include "log.h"
5
6 #include "block-backend.h"
7
8 extern BlockBackend *
9 block_backend_fs_new (const char *block_dir, const char *tmp_dir);
10
11 BlockBackend*
load_filesystem_block_backend(GKeyFile * config)12 load_filesystem_block_backend(GKeyFile *config)
13 {
14 BlockBackend *bend;
15 char *tmp_dir;
16 char *block_dir;
17
18 block_dir = g_key_file_get_string (config, "block_backend", "block_dir", NULL);
19 if (!block_dir) {
20 seaf_warning ("Block dir not set in config.\n");
21 return NULL;
22 }
23
24 tmp_dir = g_key_file_get_string (config, "block_backend", "tmp_dir", NULL);
25 if (!tmp_dir) {
26 seaf_warning ("Block tmp dir not set in config.\n");
27 return NULL;
28 }
29
30 bend = block_backend_fs_new (block_dir, tmp_dir);
31
32 g_free (block_dir);
33 g_free (tmp_dir);
34 return bend;
35 }
36
37 BlockBackend*
load_block_backend(GKeyFile * config)38 load_block_backend (GKeyFile *config)
39 {
40 char *backend;
41 BlockBackend *bend;
42
43 backend = g_key_file_get_string (config, "block_backend", "name", NULL);
44 if (!backend) {
45 return NULL;
46 }
47
48 if (strcmp(backend, "filesystem") == 0) {
49 bend = load_filesystem_block_backend(config);
50 g_free (backend);
51 return bend;
52 }
53
54 seaf_warning ("Unknown backend\n");
55 return NULL;
56 }
57