### Function

# Gio keyfile_settings_backend_new

#### Declaration [src]

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

#### Description [src]

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 setting the key `"/apps/example/enabled"` to 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.

#### 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` to disallow storing keys directly beneath `root_path`.

  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.