Example #1
0
void config_parse_xresource_options ( xcb_stuff *xcb )
{
    xcb_xrm_database_t *xDB = xcb_xrm_database_from_default ( xcb->connection );
    if ( xDB ) {
        __config_parse_xresource_options ( xDB, CONFIG_XRESOURCES );
        __config_parse_xresource_options_dynamic ( xDB, CONFIG_XRESOURCES );
        xcb_xrm_database_free ( xDB );
    }
}
Example #2
0
static int test_from_file(void) {
    bool err = false;
    xcb_xrm_database_t *database;
    char *path;
    const char *srcdir;

    /* Set by automake, needed for out-of-tree builds */
    srcdir = getenv("srcdir");
    if (srcdir == NULL)
        srcdir = ".";

    /* Test xcb_xrm_database_from_file with relative #include directives */
    asprintf(&path, "%s/tests/resources/1/xresources1", srcdir);
    database = xcb_xrm_database_from_file(path);
    free(path);
    err |= check_database(database,
            "First: 1\n"
            "Third: 3\n"
            "Second: 2\n");
    xcb_xrm_database_free(database);

    /* Test that the inclusion depth is limited */
    asprintf(&path, "%s/tests/resources/3/loop.xresources", srcdir);
    database = xcb_xrm_database_from_file(path);
    free(path);
    err |= check_database(database,
            "First: 1\n"
            "Second: 2\n");
    xcb_xrm_database_free(database);

    /* Test xcb_xrm_database_from_default for resolution of $HOME. */
    set_env_var_to_path("HOME", srcdir, "tests/resources/2");
    set_env_var_to_path("XENVIRONMENT", srcdir, "tests/resources/2/xenvironment");
    database = xcb_xrm_database_from_default(conn);
    err |= check_database(database,
            "First: 1\n"
            "Second: 2\n");
    xcb_xrm_database_free(database);

    /* Test xcb_xrm_database_from_resource_manager. */
    xcb_change_property_checked(conn, XCB_PROP_MODE_REPLACE, screen->root, XCB_ATOM_RESOURCE_MANAGER,
            XCB_ATOM_STRING, 8, strlen("First: 1\n*Second: 2") + 1, "First: 1\n*Second: 2\0");
    xcb_flush(conn);
    database = xcb_xrm_database_from_resource_manager(conn, screen);
    err |= check_database(database,
            "First: 1\n"
            "*Second: 2\n");
    xcb_xrm_database_free(database);

    return err;
}