Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

g_key_file_set_string

41K
15 июля 2013 года
Govard
28 / / 26.10.2011
Доброго времени суток всем! Надеюсь на помощь.
Пишу небольшую консольную программку для Linux. Настройки решил хранить в ini файле. Для чего воспользовался возможностями библиотеки glib. В ней есть простенький парсер ini файлов, функции его описаны в заголовке gkeyfile.h.
Для удобства программирования я впихнул операции с файлом в функции. Первая функция возвращает значение:

Код:
gchar *GetVal ( const char *group, const char *var )
{
    gchar *out;
    GError *error;
    GKeyFile *ini_file = g_key_file_new();
   
    g_key_file_load_from_file(ini_file, CONF_FILE, G_KEY_FILE_KEEP_COMMENTS, &error);
    out = g_key_file_get_string(ini_file, group, var, &error);
    g_key_file_free (ini_file);
   
    return out;
}
С этим нет никаких проблем - все работает. Для записи я написал другую функцию с использованием g_key_file_set_string. И... стыдно спросить, но как это сделать?

Привожу функцию ниже (она не работает):

 
Код:
void SetVal ( const char *group, const char *var, const char *data )
{
    GError *error;
    GKeyFile *ini_file = g_key_file_new();
   
    g_key_file_load_from_file(ini_file, CONF_FILE, G_KEY_FILE_KEEP_COMMENTS, &error);
    g_key_file_set_string(ini_file, group, var, data);
    g_key_file_free (ini_file);
}
Функция, согласно описанию, должна создать и группу, и ключ, если их нет, и присвоить ключу значение. Не работает. Никаких ошибок в консоль не валится, но в файле нет изменений. Файл есть, путь к нему верный (он хранится в константе CONF_FILE), запись файл разрешена. Входные данные, в общем, проверил на сто раз. Ничего.
Мне оно не горит, пишу для себя, но когда из-за одной ерунды все колом встало, то... Очень надеюсь на подсказку.
414
15 июля 2013 года
CassandraDied
763 / / 24.05.2012
А как проверяется, что ошибок не было? Вижу, g_key_file_set_string не записывает в error код ошибки. Эта функция что-нибудь возвращает?
41K
15 июля 2013 года
Govard
28 / / 26.10.2011
Цитата: CassandraDied
А как проверяется, что ошибок не было? Вижу, g_key_file_set_string не записывает в error код ошибки. Эта функция что-нибудь возвращает?


Да, точно, не записывает... И не рассчитана она на прием этого аргумента, судя по заголовку. А сама функция ничего не возвращает - она void.

414
15 июля 2013 года
CassandraDied
763 / / 24.05.2012
Проверь, что все четыре переменные не равны 0 и указывают на валидные ресурсы. Если в данных нет эскейп последовательностей, то попробуй использовать g_key_file_set_value. А вообще — отладчик в руки. Программа-то с исходниками у тебя. Так ничего не скажешь, если никаких ошибок нет.
41K
15 июля 2013 года
Govard
28 / / 26.10.2011
Вынес в отдельный проект только две этих функции. Чтение работает - запись нет. Данные верны. Ладно, с gdb уже завтра буду колдовать.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог