| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
| |
Remember whether a signal was signalled to dconf-service
so we don't call g_application_release() more than once.
https://bugzilla.gnome.org/show_bug.cgi?id=727549
|
| |
|
|
|
|
| |
We ought to be including this from each .c file.
|
|
|
|
| |
gcc doesn't like 'a && b;' so use 'if (a) b;'.
|
|
|
|
| |
Mostly missing 'static'.
|
|
|
|
|
| |
Fairly harmless leaks. One only happens in an error case (like the disk
being full) and the other only happens on startup.
|
|
|
|
|
|
|
|
|
|
|
|
| |
When emitting change signals, we call dconf_changeset_describe() to
enumerate the keys to send the signal for.
When the changeset is empty, this function returns NULL for the path
vector. We pass that NULL into the signal emitter and the service
crashes.
We can avoid this situation by refusing to handle empty changesets in
the first place.
|
|
|
|
|
|
|
|
| |
Avoid initialising all of GVfs for dconf-service in order to monitor a
local file for changes.
See https://bugzilla.gnome.org/show_bug.cgi?id=691618 for the
possibility of a better fix.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Use fcntl() on a lockfile when accessing a keyfile.
Now reading the keyfile, notifying local processes of changes in it,
applying changes from local request and rewriting it is all done under a
single acquire of the lock. This effectively means that concurrent
changes made to the database across several machines sharing a home
directory over NFS will be seen by all machines as having occurred in
the same order (decided by who won the race to the lock).
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Store the keyfile in ~/.config/dconf/$(name).txt instead of
~/.config/dconf-keyfile/name. Adjust the base writer not to pick up
filenames with dots in them (so we will skip the .txt files the keyfile
writer puts into the same directory).
Add file change monitoring and reload the file if anyone changes it.
Fix a crasher on the first write of a file if it does not yet exist.
Add proper finalize handling.
|
| |
|
| |
|
|
|
|
|
| |
Don't rewrite the gvdb file unless an actual change has been applied to
the database (unless creating a non-native database for the first time).
|
|
|
|
| |
It is now possible to have keyfile-based dconf databases.
|
|
|
|
| |
Fix two mistakes in the dconf-writer.h header.
|
|
|
|
|
|
|
| |
This diffs the given changeset with the uncommited changes in the
writer. The result is effectively the changeset that would have to be
applied to the writer to cause it to be equal to the passed-in
changeset.
|
|
|
|
|
|
|
|
|
| |
Add a shm service-db that does nothing. In effect this provides us with
a database maintained in the user runtime dir that never gets synced to
any permanent storage.
It can be used by putting a line like "service-db:shm/temp" in the dconf
profile.
|
|
|
|
|
|
| |
Add support for service-db to the service.
New types of service-dbs can be implemented via a GIOExtensionPoint.
|
| |
|
|
|
|
|
| |
Add the results of dconf_writer_list() to the output of the enumerate()
function on the subtree introspection interface.
|
|
|
|
|
| |
This populates a set with the names of databases available for a given
writer class.
|
|
|
|
|
|
| |
Add a thin wrapper around GHashTable for dealing with sets of strings.
Port the subtree introspection enumeration code to use it.
|
|
|
|
|
| |
dconf_writer_new() now takes a type so we can create subtypes of
DConfWriter.
|
|
|
|
|
|
|
| |
...and add a lot of ->priv.
This is not a public API because this header doesn't get installed, but
it can now be used by other things in-tree.
|
|
|
|
|
|
|
| |
If we fail to write the database file, try g_mkdir_with_parents() to
create the parent directory and try again.
https://bugzilla.gnome.org/show_bug.cgi?id=689136
|
|
|
|
|
|
|
|
|
|
|
|
| |
4fce559d81bdd3841cfe16fd3a3e6b8e6e9e60f2 changed from using GHashTable
to database-mode changesets for caching the state of the database in the
service but we missed a case of g_hash_table_unref being called.
Fix that now.
Problem reported and fix suggested by Philippe Coval.
https://bugzilla.gnome.org/show_bug.cgi?id=691013
|
|
|
|
|
|
| |
Was seeing crashes in the latest gnome-ostree on login.
https://bugzilla.gnome.org/show_bug.cgi?id=690316
|
|
|
|
|
|
| |
Also make sure the generated files get cleaned.
'make distcheck' fixing.
|
|
|
|
| |
Since we now have a hard dependency on the newer GLib anyway.
|
|
|
|
| |
More NFS safety: never mmap() a gvdb on the service side.
|
| |
|
|
|
|
|
|
|
|
| |
Factor the code for reading and writing DConfChangeset databases to the
gvdb file format out from dconf-writer.c.
This will allow those functions to be used by other backend
implementations that want to store things in gvdb format (like on NFS).
|
|
|
|
|
|
|
|
|
|
|
| |
Also, slightly change the rules about begin/change/commit/end.
It used to be theoretically possible to call:
begin(), change(), commit(), change(), end().
but that is no longer supported (and it was never used anyway). Now the
only valid thing to do after a commit() is end().
|
|
|
|
|
|
|
|
|
|
| |
Port the DConfWriter to use database-mode changesets to represent the
contents of the database.
This allows us to drop our own copy of the reset algorithm.
Also, fix a bug whereby we tried to acquire a list of items from a
NULL gvdb table (in the case where the database does not already exist).
|
|
|
|
|
| |
This ensures that we don't do the gdbus-codegen twice when running in
make -j.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Rewrite the dconf-service using gdbus-codegen and generally cleaning
things up a lot. The DConfWriter class can now be reasonably subclassed
to create more complex types of dconf databases (such as ones that
are stored in the local runtime dir and synced up with an NFS home
directory).
Keep a cache of the keys in the database (instead of re-reading it every
time we try to make a change).
Drop support for the old D-Bus interface (now that we are two stable
releases since it was used).
Modify the commandline tool for 'dconf blame' to call the new interface.
|
|
|
|
|
|
| |
Leak introduced in facae6ffcd5b2935f9b708eecb1fd5aa7c8ddf86.
Tracked down by Fabien Tassin in
https://bugzilla.gnome.org/show_bug.cgi?id=686573
|
|
|
|
|
|
|
|
| |
A long time ago before dconf supported profiles, the user database file
was called ~/.config/dconf. We've had migration code to rename it to
~/.config/dconf/user for two years now.
Drop that code.
|
|
|
|
| |
Use the new gvdb_table_get_names() instead.
|
|
|
|
|
|
|
| |
Disable C compiler warnings entirely while building Vala code.
Fix-up a couple of legitimate issues plus one false-positive
(in service.c).
|
|
|
|
|
|
|
|
|
|
| |
Clean up the Makefiles and make them as similar as possible.
Move CFLAGS to a common point of definition and stop using -I so much.
Replace the 'dbus stub' with libdconf-mock.a in tests/. Fill in some
stubs for future mock code for shm and gvdb (just to get things
compiling for now).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Remove the shm code from the engine and the service and put it in a
separate convenience library in shm/.
Remove the vestigial shmdir weirdness from the service (since shmdir is
now always relative to XDG_RUNTIME_DIR and has been for some time).
The purpose of this is so that dconf-engine can be properly unit-tested.
dconf-engine now has five points of contact with the world (excluding
the users of the engine themselves):
- the DCONF_PROFILE environment variable
- fopen() of profile files
- shm
- gvdb
- dbus
The environment variable is quite easily controlled. fopen() is
intercepted in the engine testcase with a interpose of the libc symbol.
With this commit now each of dbus, gvdb and shm are implemented in
separate utility modules that can be mocked from the testcases.
|
| |
|
|
|
|
| |
Add a "Change" method to the service for writing DConfChangesets.
|
|
|
|
|
|
|
| |
One -fPIC and one without.
This is done instead of pulling the various source files from other
Makefiles.
|
|
|
|
|
|
|
| |
Internally, the service was passing around GVariant values with an extra
layer of variant wrapping (ie: how we received them off the wire).
Stop doing that because it's pointless.
|
| |
|
|
|
|
|
|
|
|
| |
If DCONF_BLAME is in the environment or kernel commandline then
dconf-service will take steps to gather information about the first
request it received (ie: the one that caused it to be activated).
This is useful for helping to track down writes that occur at login.
|
|
|
|
|
|
| |
Mac OS echo doesn't like '-e' so avoid using it in our Makefile.
https://bugzilla.gnome.org/show_bug.cgi?id=667659
|