From: "Bryce Harrington" <[email protected]>

This provides a way to run weston with a modified configuration, such as
for testing purposes.

Signed-off-by: Bryce Harrington (http://osg.samsung.com) <[email protected]>
Signed-off-by: Bryce Harrington <[email protected]>
---
 man/weston.man   |  9 +++++++++
 src/compositor.c | 24 +++++++++++++++++++++++-
 2 files changed, 32 insertions(+), 1 deletion(-)

diff --git a/man/weston.man b/man/weston.man
index 735235f..5062edb 100644
--- a/man/weston.man
+++ b/man/weston.man
@@ -136,6 +136,15 @@ Do not read
 for the compositor. Avoids e.g. loading compositor modules via the
 configuration file, which is useful for unit tests.
 .TP
+.BR \-\-config\-overrides
+A comma-separated list of configuration parameters that will be set
+and take precidence over the loaded
+.I weston.ini
+file (if any).  No changes are written to the
+.I weston.ini
+on disk.  Parameters are formatted as 'section.key=value'; all three of
+section, key, and value must be specified.
+.TP
 \fB\-\^S\fR\fIname\fR, \fB\-\-socket\fR=\fIname\fR
 Weston will listen in the Wayland socket called
 .IR name .
diff --git a/src/compositor.c b/src/compositor.c
index b84658a..b2403bc 100644
--- a/src/compositor.c
+++ b/src/compositor.c
@@ -4571,6 +4571,7 @@ usage(int error_code)
                "  --modules\t\tLoad the comma-separated list of modules\n"
                "  --log=FILE\t\tLog to the given file\n"
                "  --no-config\t\tDo not read weston.ini\n"
+               "  --config-override\tComma-separated list of sect.key=val 
config params\n"
                "  -h, --help\t\tThis help message\n\n");
 
 #if defined(BUILD_DRM_COMPOSITOR)
@@ -4774,6 +4775,7 @@ int main(int argc, char *argv[])
        char *socket_name = NULL;
        int32_t version = 0;
        int32_t noconfig = 0;
+       char *config_overrides = NULL;
        int32_t numlock_on;
        struct weston_config *config = NULL;
        struct weston_config_section *section;
@@ -4791,6 +4793,7 @@ int main(int argc, char *argv[])
                { WESTON_OPTION_BOOLEAN, "help", 'h', &help },
                { WESTON_OPTION_BOOLEAN, "version", 0, &version },
                { WESTON_OPTION_BOOLEAN, "no-config", 0, &noconfig },
+               { WESTON_OPTION_STRING, "config-overrides", 0, 
&config_overrides },
        };
 
        parse_options(core_options, ARRAY_LENGTH(core_options), &argc, argv);
@@ -4834,6 +4837,7 @@ int main(int argc, char *argv[])
                goto out_signals;
        }
 
+       /* Load configuration */
        if (noconfig == 0)
                config = weston_config_parse("weston.ini");
        if (config != NULL) {
@@ -4842,8 +4846,26 @@ int main(int argc, char *argv[])
        } else {
                weston_log("Starting with no config file.\n");
        }
-       section = weston_config_get_section(config, "core", NULL, NULL);
 
+       /* Modify config based on command line options */
+       if (config_overrides) {
+               if (config == NULL)
+                       config = weston_config_create();
+               if (config == NULL) {
+                       ret = EXIT_FAILURE;
+                       goto out_signals;
+               }
+
+               if (!weston_config_update(config, config_overrides)) {
+                       weston_log("Could not update config with overrides 
'%s'.\n",
+                                  config_overrides);
+                       ret = EXIT_FAILURE;
+                       goto out_signals;
+               }
+       }
+
+       /* Set backend */
+       section = weston_config_get_section(config, "core", NULL, NULL);
        if (!backend) {
                weston_config_section_get_string(section, "backend", &backend,
                                                 NULL);
-- 
1.9.1

_______________________________________________
wayland-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to