### Function

# Gio keyfile_settings_backend_new

since: 2.0

#### Declaration

    GSettingsBackend*
    g_keyfile_settings_backend_new (
      const gchar* filename,
      const gchar* root_path,
      const gchar* root_group
    )

#### Description

Creates a keyfile-backed `GSettingsBackend`.

The filename of the keyfile to use is given by `filename`.

All settings read to or written from the backend must fall under the path given in `root_path` (which must start and end with a slash and not contain two consecutive slashes). `root_path` may be “/”.

If `root_group` is non-`NULL` then it specifies the name of the keyfile group used for keys that are written directly below `root_path`. For example, if `root_path` is “/apps/example/” and `root_group` is “toplevel”, then settings the key “/apps/example/enabled” to a value of `TRUE` will cause the following to appear in the keyfile:

      [toplevel]
      enabled=true

If `root_group` is `NULL` then it is not permitted to store keys directly below the `root_path`.

For keys not stored directly below `root_path` (ie: in a sub-path), the name of the subpath (with the final slash stripped) is used as the name of the keyfile group. To continue the example, if “/apps/example/profiles/default/font-size” were set to 12 then the following would appear in the keyfile:

      [profiles/default]
      font-size=12

The backend will refuse writes (and return writability as being `FALSE`) for keys outside of `root_path` and, in the event that `root_group` is `NULL`, also for keys directly under `root_path`. Writes will also be refused if the backend detects that it has the inability to rewrite the keyfile (ie: the containing directory is not writable).

There is no checking done for your key namespace clashing with the syntax of the key file format. For example, if you have ‘[‘ or ‘]’ characters in your path names or ‘=’ in your key names you may be in trouble.

The backend reads default values from a keyfile called `defaults` in the directory specified by the `GKeyfileSettingsBackend:defaults-dir` property, and a list of locked keys from a text file with the name `locks` in the same location.

Available since: 2.0

#### Parameters

`filename`

  Type: `const gchar*`

  The filename of the keyfile.

  The data is owned by the caller of the function.
  The value is a NUL terminated UTF-8 string.

`root_path`

  Type: `const gchar*`

  The path under which all settings keys appear.

  The data is owned by the caller of the function.
  The value is a NUL terminated UTF-8 string.

`root_group`

  Type: `const gchar*`

  The group name corresponding to `root_path`, or `NULL`.

  The argument can be `NULL`.
  The data is owned by the caller of the function.
  The value is a NUL terminated UTF-8 string.

#### Return value

Type: `GSettingsBackend`

A keyfile-backed `GSettingsBackend`.

The caller of the function takes ownership of the data, and is responsible for freeing it.