diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-11-24 10:42:37 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-11-24 10:42:37 -0800 |
commit | 290ce56d0181c0c7e7d6e1af3eb27d3015cffca7 (patch) | |
tree | 6d63b311740a875434119f83d3dc03175fbcd4a9 /linux.c | |
parent | cb2114f263d7b23b8b2471cdf2037a0877eec50d (diff) | |
parent | 671f6544ac8b4a6eb68576b37344e84808511eb8 (diff) | |
download | subsurface-290ce56d0181c0c7e7d6e1af3eb27d3015cffca7.tar.gz |
Merge branch 'mac-fixes' of git://git.hohndel.org/subsurface
* 'mac-fixes' of git://git.hohndel.org/subsurface:
Split reading/writing preferences into OS specific files
Diffstat (limited to 'linux.c')
-rw-r--r-- | linux.c | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/linux.c b/linux.c new file mode 100644 index 000000000..2edcf85a1 --- /dev/null +++ b/linux.c @@ -0,0 +1,48 @@ +/* linux.c */ +/* implements Linux specific functions */ +#include "display-gtk.h" +#include <gconf/gconf-client.h> + +GConfClient *gconf; + +static char *gconf_name(char *name) +{ + static char buf[255] = "/apps/subsurface/"; + + snprintf(buf, 255, "/apps/subsurface/%s", name); + + return buf; +} + +void subsurface_open_conf(void) +{ + gconf = gconf_client_get_default(); +} + +void subsurface_set_conf(char *name, pref_type_t type, const void *value) +{ + switch (type) { + case PREF_BOOL: + gconf_client_set_bool(gconf, gconf_name(name), value != NULL, NULL); + break; + case PREF_STRING: + gconf_client_set_string(gconf, gconf_name(name), value, NULL); + } +} + +const void *subsurface_get_conf(char *name, pref_type_t type) +{ + switch (type) { + case PREF_BOOL: + return gconf_client_get_bool(gconf, gconf_name(name), NULL) ? (void *) 1 : NULL; + case PREF_STRING: + return gconf_client_get_string(gconf, gconf_name(name), NULL); + } + /* we shouldn't get here */ + return NULL; +} + +void subsurface_close_conf(void) +{ + /* this is a no-op */ +} |