Skip to content

Instantly share code, notes, and snippets.

@zdxerr
Created November 21, 2010 21:26
Show Gist options
  • Save zdxerr/709169 to your computer and use it in GitHub Desktop.
Save zdxerr/709169 to your computer and use it in GitHub Desktop.
GKeyFile example.
#include <gtk/gtk.h>
int main(void)
{
GKeyFile *key_file;
GError *error;
gsize length;
gchar *str_value;
gint int_value;
gdouble double_value;
key_file = g_key_file_new();
error = NULL;
guint group, key;
if(!g_key_file_load_from_file(key_file,
"test.ini",
G_KEY_FILE_KEEP_COMMENTS |
G_KEY_FILE_KEEP_TRANSLATIONS,
&error))
{
g_debug("%s", error->message);
}
else
{
str_value = g_key_file_get_string(key_file,
"test",
"str_value",
&error);
int_value = g_key_file_get_integer(key_file,
"test",
"int_value",
&error);
double_value = g_key_file_get_double(key_file,
"test",
"double_value",
&error);
g_debug("str: %s \nint: %d \ndouble: %f\n",
str_value, int_value, double_value);
g_key_file_set_string(key_file, "test", "str_value", str_value);
g_key_file_set_integer(key_file, "test", "int_value", int_value + 1);
g_key_file_set_integer(key_file, "test", "double_value", double_value * 2);
g_debug("%s", g_key_file_to_data(key_file, &length, &error));
gsize num_groups, num_keys;
gchar **groups, **keys, *value;
groups = g_key_file_get_groups(key_file, &num_groups);
for(group = 0;group < num_groups;group++)
{
g_debug("group %u/%u: \t%s", group, num_groups - 1, groups[group]);
keys = g_key_file_get_keys(key_file, groups[group], &num_keys, &error);
for(key = 0;key < num_keys;key++)
{
value = g_key_file_get_value(key_file,
groups[group],
keys[key],
&error);
g_debug("\t\tkey %u/%u: \t%s => %s", key, num_keys - 1, keys[key], value);
}
}
}
return 0;
}
GTK_CFLAGS = $(shell pkg-config gtk+-2.0 --cflags)
GTK_LIBS = $(shell pkg-config gtk+-2.0 --libs)
all: key_file
key_file: key_file.o
gcc -o key_file.exe key_file.o $(GTK_LIBS)
key_file.o: key_file.c
gcc -c key_file.c -o key_file.o $(GTK_CFLAGS)
clean:
rm -rf *o key_file
rm -rf *exe key_file
# test ini file
[test]
str_value=hello world
int_value=5
double_value=8.888765
[yoyo]
v1 = bla
v2=TRUE
v3=FALSE
test_var[bla]=yo
test_var[fla]=hoe
test_var[0]=s
test_var[1]=r
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment