forked from nsf/bmpanel2
-
Notifications
You must be signed in to change notification settings - Fork 0
/
settings.c
41 lines (34 loc) · 790 Bytes
/
settings.c
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
#include <stdio.h>
#include "xdg.h"
#include "settings.h"
struct config_format_tree g_settings;
#define BMPANEL2_CONFIG_FILE "bmpanel2/bmpanel2rc"
void load_settings(const char *configfile)
{
if (configfile) {
load_config_format_tree(&g_settings, configfile);
return;
}
char buf[4096];
size_t config_dirs_len;
char **config_dirs = get_XDG_CONFIG_DIRS(&config_dirs_len);
int found = 0;
size_t i;
for (i = 0; i < config_dirs_len; ++i) {
snprintf(buf, sizeof(buf), "%s/" BMPANEL2_CONFIG_FILE,
config_dirs[i]);
buf[sizeof(buf)-1] = '\0';
if (is_file_exists(buf)) {
found = 1;
break;
}
}
free_XDG(config_dirs);
if (found)
load_config_format_tree(&g_settings, buf);
}
void free_settings()
{
if (g_settings.buf)
free_config_format_tree(&g_settings);
}