Поддержка старой версии libconfig config_setting_get_string
У меня есть программа на C, которая отлично работала в Debian Box. Меня попросили скомпилировать и запустить его на CentOs 6.5. Все отлично компилируется, кроме той части, где я пытаюсь получить значение из файла конфигурации. Код написан так:
char config_file[150]="file.conf";
config_t cfg;
config_setting_t *ssl_xor_key;
char xkey[256];
ssl_xor_key = config_lookup(&cfg, "ssl.xor.key");
strcpy(xkey,config_setting_get_string(ssl_xor_key));
Файл конфигурации содержит это:
ssl:
{
xor:
{
key="textexttextexttextext";
};
};
Когда программа прибывает в config_setting_get_string, она падает. Я попытался просто установить строку в команде strcpy, и она работает. Я видел это в / var / log / messages:
kernel: mysql-proxy[9808]: segfault at 8 ip 00007f3ba9d53d12 sp 00007f3baab8a0d8 error 4 in libconfig.so.8.0.0[7f3ba9d51000+a000]
Я видел, что хотя в исходной коробке Debian была библиотека libconfig 1.4.9, самой последней версией CentO является 1.3.2. Я не уверен, поддерживается ли команда в этой версии, так как я не смог найти документацию старой версии.
Я также пытался скомпилировать новейшую версию на Centos Box, но я получаю ошибки в процессе, поэтому я думаю, что это не поддерживается.
Любая идея о том, что может быть решением?
1 ответ
Похоже, что старая версия libconfig более чувствительна к ошибкам синтаксиса в файлах конфигурации. У меня была затуманивание финала; в файле. Теперь это работает.