config-parser: Make weston_config_parse() tkae a file name
Take a basename of the config file to parse instead of an fd.
This commit is contained in:
@@ -1280,17 +1280,13 @@ panel_add_launchers(struct panel *panel, struct desktop *desktop)
|
|||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
struct desktop desktop = { 0 };
|
struct desktop desktop = { 0 };
|
||||||
int config_fd;
|
|
||||||
struct output *output;
|
struct output *output;
|
||||||
struct weston_config_section *s;
|
struct weston_config_section *s;
|
||||||
|
|
||||||
desktop.unlock_task.run = unlock_dialog_finish;
|
desktop.unlock_task.run = unlock_dialog_finish;
|
||||||
wl_list_init(&desktop.outputs);
|
wl_list_init(&desktop.outputs);
|
||||||
|
|
||||||
config_fd = open_config_file("weston.ini");
|
desktop.config = weston_config_parse("weston.ini");
|
||||||
desktop.config = weston_config_parse(config_fd);
|
|
||||||
close(config_fd);
|
|
||||||
|
|
||||||
s = weston_config_get_section(desktop.config, "shell", NULL, NULL);
|
s = weston_config_get_section(desktop.config, "shell", NULL, NULL);
|
||||||
weston_config_section_get_bool(s, "locking", &desktop.locking, 1);
|
weston_config_section_get_bool(s, "locking", &desktop.locking, 1);
|
||||||
|
|
||||||
|
|||||||
@@ -412,7 +412,6 @@ int main(int argc, char *argv[])
|
|||||||
{
|
{
|
||||||
struct tablet tablet = { 0 };
|
struct tablet tablet = { 0 };
|
||||||
struct display *display;
|
struct display *display;
|
||||||
int config_fd;
|
|
||||||
struct output *output;
|
struct output *output;
|
||||||
struct weston_config *config;
|
struct weston_config *config;
|
||||||
struct weston_config_section *s;
|
struct weston_config_section *s;
|
||||||
@@ -438,10 +437,7 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
wl_list_init(&tablet.homescreen->launcher_list);
|
wl_list_init(&tablet.homescreen->launcher_list);
|
||||||
|
|
||||||
config_fd = open_config_file("weston.ini");
|
config = weston_config_parse("weston.ini");
|
||||||
config = weston_config_parse(config_fd);
|
|
||||||
close(config_fd);
|
|
||||||
|
|
||||||
s = weston_config_get_section(config, "shell", NULL, NULL);
|
s = weston_config_get_section(config, "shell", NULL, NULL);
|
||||||
weston_config_section_get_string(s, "lockscreen-icon",
|
weston_config_section_get_string(s, "lockscreen-icon",
|
||||||
&key_lockscreen_icon, NULL);
|
&key_lockscreen_icon, NULL);
|
||||||
|
|||||||
+1
-5
@@ -2793,7 +2793,6 @@ int main(int argc, char *argv[])
|
|||||||
struct terminal *terminal;
|
struct terminal *terminal;
|
||||||
struct weston_config *config;
|
struct weston_config *config;
|
||||||
struct weston_config_section *s;
|
struct weston_config_section *s;
|
||||||
int config_fd;
|
|
||||||
|
|
||||||
/* as wcwidth is locale-dependent,
|
/* as wcwidth is locale-dependent,
|
||||||
wcwidth needs setlocale call to function properly. */
|
wcwidth needs setlocale call to function properly. */
|
||||||
@@ -2803,10 +2802,7 @@ int main(int argc, char *argv[])
|
|||||||
if (!option_shell)
|
if (!option_shell)
|
||||||
option_shell = "/bin/bash";
|
option_shell = "/bin/bash";
|
||||||
|
|
||||||
config_fd = open_config_file("weston.ini");
|
config = weston_config_parse("weston.ini");
|
||||||
config = weston_config_parse(config_fd);
|
|
||||||
close(config_fd);
|
|
||||||
|
|
||||||
s = weston_config_get_section(config, "terminal", NULL, NULL);
|
s = weston_config_get_section(config, "terminal", NULL, NULL);
|
||||||
weston_config_section_get_string(s, "font", &option_font, "mono");
|
weston_config_section_get_string(s, "font", &option_font, "mono");
|
||||||
weston_config_section_get_int(s, "font-size", &option_font_size, 14);
|
weston_config_section_get_int(s, "font-size", &option_font_size, 14);
|
||||||
|
|||||||
+2
-5
@@ -1309,15 +1309,12 @@ create_cursors(struct display *display)
|
|||||||
{
|
{
|
||||||
struct weston_config *config;
|
struct weston_config *config;
|
||||||
struct weston_config_section *s;
|
struct weston_config_section *s;
|
||||||
int config_fd, size;
|
int size;
|
||||||
char *theme = NULL;
|
char *theme = NULL;
|
||||||
unsigned int i, j;
|
unsigned int i, j;
|
||||||
struct wl_cursor *cursor;
|
struct wl_cursor *cursor;
|
||||||
|
|
||||||
config_fd = open_config_file("weston.ini");
|
config = weston_config_parse("weston.ini");
|
||||||
config = weston_config_parse(config_fd);
|
|
||||||
close(config_fd);
|
|
||||||
|
|
||||||
s = weston_config_get_section(config, "shell", NULL, NULL);
|
s = weston_config_get_section(config, "shell", NULL, NULL);
|
||||||
weston_config_section_get_string(s, "cursor-theme", &theme, NULL);
|
weston_config_section_get_string(s, "cursor-theme", &theme, NULL);
|
||||||
weston_config_section_get_int(s, "cursor-size", &size, 32);
|
weston_config_section_get_int(s, "cursor-size", &size, 32);
|
||||||
|
|||||||
+13
-6
@@ -41,7 +41,7 @@
|
|||||||
const __typeof__( ((type *)0)->member ) *__mptr = (ptr); \
|
const __typeof__( ((type *)0)->member ) *__mptr = (ptr); \
|
||||||
(type *)( (char *)__mptr - offsetof(type,member) );})
|
(type *)( (char *)__mptr - offsetof(type,member) );})
|
||||||
|
|
||||||
int
|
static int
|
||||||
open_config_file(const char *name)
|
open_config_file(const char *name)
|
||||||
{
|
{
|
||||||
const char *config_dir = getenv("XDG_CONFIG_HOME");
|
const char *config_dir = getenv("XDG_CONFIG_HOME");
|
||||||
@@ -51,6 +51,9 @@ open_config_file(const char *name)
|
|||||||
const char *p, *next;
|
const char *p, *next;
|
||||||
int fd;
|
int fd;
|
||||||
|
|
||||||
|
if (name[0] == '/')
|
||||||
|
return open(name, O_RDONLY | O_CLOEXEC);
|
||||||
|
|
||||||
/* Precedence is given to config files in the home directory,
|
/* Precedence is given to config files in the home directory,
|
||||||
* and then to directories listed in XDG_CONFIG_DIRS and
|
* and then to directories listed in XDG_CONFIG_DIRS and
|
||||||
* finally to the current working directory. */
|
* finally to the current working directory. */
|
||||||
@@ -312,13 +315,13 @@ section_add_entry(struct weston_config_section *section,
|
|||||||
}
|
}
|
||||||
|
|
||||||
struct weston_config *
|
struct weston_config *
|
||||||
weston_config_parse(int fd)
|
weston_config_parse(const char *name)
|
||||||
{
|
{
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
char line[512], *p;
|
char line[512], *p;
|
||||||
struct weston_config *config;
|
struct weston_config *config;
|
||||||
struct weston_config_section *section = NULL;
|
struct weston_config_section *section = NULL;
|
||||||
int i;
|
int i, fd;
|
||||||
|
|
||||||
config = malloc(sizeof *config);
|
config = malloc(sizeof *config);
|
||||||
if (config == NULL)
|
if (config == NULL)
|
||||||
@@ -326,13 +329,17 @@ weston_config_parse(int fd)
|
|||||||
|
|
||||||
wl_list_init(&config->section_list);
|
wl_list_init(&config->section_list);
|
||||||
|
|
||||||
fp = fdopen(dup(fd), "r");
|
fd = open_config_file(name);
|
||||||
if (fp == NULL) {
|
if (fd == -1) {
|
||||||
free(config);
|
free(config);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
rewind(fp);
|
fp = fdopen(fd, "r");
|
||||||
|
if (fp == NULL) {
|
||||||
|
free(config);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
while (fgets(line, sizeof line, fp)) {
|
while (fgets(line, sizeof line, fp)) {
|
||||||
switch (line[0]) {
|
switch (line[0]) {
|
||||||
|
|||||||
@@ -47,9 +47,6 @@ struct config_section {
|
|||||||
void (*done)(void *data);
|
void (*done)(void *data);
|
||||||
};
|
};
|
||||||
|
|
||||||
int
|
|
||||||
open_config_file(const char *name);
|
|
||||||
|
|
||||||
enum weston_option_type {
|
enum weston_option_type {
|
||||||
WESTON_OPTION_INTEGER,
|
WESTON_OPTION_INTEGER,
|
||||||
WESTON_OPTION_UNSIGNED_INTEGER,
|
WESTON_OPTION_UNSIGNED_INTEGER,
|
||||||
@@ -96,7 +93,7 @@ weston_config_section_get_bool(struct weston_config_section *section,
|
|||||||
const char *key,
|
const char *key,
|
||||||
int *value, int default_value);
|
int *value, int default_value);
|
||||||
struct weston_config *
|
struct weston_config *
|
||||||
weston_config_parse(int fd);
|
weston_config_parse(const char *name);
|
||||||
|
|
||||||
void
|
void
|
||||||
weston_config_destroy(struct weston_config *config);
|
weston_config_destroy(struct weston_config *config);
|
||||||
|
|||||||
+2
-5
@@ -3418,7 +3418,7 @@ int main(int argc, char *argv[])
|
|||||||
*(*backend_init)(struct wl_display *display,
|
*(*backend_init)(struct wl_display *display,
|
||||||
int *argc, char *argv[],
|
int *argc, char *argv[],
|
||||||
struct weston_config *config);
|
struct weston_config *config);
|
||||||
int i, config_fd;
|
int i;
|
||||||
char *backend = NULL;
|
char *backend = NULL;
|
||||||
char *shell = NULL;
|
char *shell = NULL;
|
||||||
char *modules, *option_modules = NULL;
|
char *modules, *option_modules = NULL;
|
||||||
@@ -3486,10 +3486,7 @@ int main(int argc, char *argv[])
|
|||||||
backend = WESTON_NATIVE_BACKEND;
|
backend = WESTON_NATIVE_BACKEND;
|
||||||
}
|
}
|
||||||
|
|
||||||
config_fd = open_config_file("weston.ini");
|
config = weston_config_parse("weston.ini");
|
||||||
config = weston_config_parse(config_fd);
|
|
||||||
close(config_fd);
|
|
||||||
|
|
||||||
section = weston_config_get_section(config, "core", NULL, NULL);
|
section = weston_config_get_section(config, "core", NULL, NULL);
|
||||||
weston_config_section_get_string(section, "modules", &modules, "");
|
weston_config_section_get_string(section, "modules", &modules, "");
|
||||||
|
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ run_test(const char *text)
|
|||||||
len = write(fd, text, strlen(text));
|
len = write(fd, text, strlen(text));
|
||||||
assert(len == (int) strlen(text));
|
assert(len == (int) strlen(text));
|
||||||
|
|
||||||
config = weston_config_parse(fd);
|
config = weston_config_parse(file);
|
||||||
close(fd);
|
close(fd);
|
||||||
unlink(file);
|
unlink(file);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user