|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
#include <winpr/crt.h>
|
|
Packit |
1fb8d4 |
#include <winpr/ini.h>
|
|
Packit |
1fb8d4 |
|
|
Packit Service |
5a9772 |
const char TEST_INI_01[] = "; This is a sample .ini config file\n"
|
|
Packit Service |
5a9772 |
"\n"
|
|
Packit Service |
5a9772 |
"[first_section]\n"
|
|
Packit Service |
5a9772 |
"one = 1\n"
|
|
Packit Service |
5a9772 |
"five = 5\n"
|
|
Packit Service |
5a9772 |
"animal = BIRD\n"
|
|
Packit Service |
5a9772 |
"\n"
|
|
Packit Service |
5a9772 |
"[second_section]\n"
|
|
Packit Service |
5a9772 |
"path = \"/usr/local/bin\"\n"
|
|
Packit Service |
5a9772 |
"URL = \"http://www.example.com/~username\"\n"
|
|
Packit Service |
5a9772 |
"\n";
|
|
Packit Service |
5a9772 |
|
|
Packit Service |
5a9772 |
const char TEST_INI_02[] = "[FreeRDS]\n"
|
|
Packit Service |
5a9772 |
"prefix=\"/usr/local\"\n"
|
|
Packit Service |
5a9772 |
"bindir=\"bin\"\n"
|
|
Packit Service |
5a9772 |
"sbindir=\"sbin\"\n"
|
|
Packit Service |
5a9772 |
"libdir=\"lib\"\n"
|
|
Packit Service |
5a9772 |
"datarootdir=\"share\"\n"
|
|
Packit Service |
5a9772 |
"localstatedir=\"var\"\n"
|
|
Packit Service |
5a9772 |
"sysconfdir=\"etc\"\n"
|
|
Packit Service |
5a9772 |
"\n";
|
|
Packit Service |
5a9772 |
|
|
Packit Service |
5a9772 |
const char TEST_INI_03[] = "[FreeRDS]\n"
|
|
Packit Service |
5a9772 |
"prefix=\"/usr/local\"\n"
|
|
Packit Service |
5a9772 |
"bindir=\"bin\"\n"
|
|
Packit Service |
5a9772 |
"# some illegal string\n"
|
|
Packit Service |
5a9772 |
"sbindir=\"sbin\"\n"
|
|
Packit Service |
5a9772 |
"libdir=\"lib\"\n"
|
|
Packit Service |
5a9772 |
"invalid key-value pair\n"
|
|
Packit Service |
5a9772 |
"datarootdir=\"share\"\n"
|
|
Packit Service |
5a9772 |
"localstatedir=\"var\"\n"
|
|
Packit Service |
5a9772 |
"sysconfdir=\"etc\"\n"
|
|
Packit Service |
5a9772 |
"\n";
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
int TestIni(int argc, char* argv[])
|
|
Packit |
1fb8d4 |
{
|
|
Packit Service |
5a9772 |
int rc = -1;
|
|
Packit |
1fb8d4 |
int i, j;
|
|
Packit |
1fb8d4 |
int nKeys;
|
|
Packit |
1fb8d4 |
int nSections;
|
|
Packit |
1fb8d4 |
UINT32 iValue;
|
|
Packit Service |
5a9772 |
wIniFile* ini = NULL;
|
|
Packit |
1fb8d4 |
const char* sValue;
|
|
Packit Service |
5a9772 |
char** keyNames = NULL;
|
|
Packit Service |
5a9772 |
char** sectionNames = NULL;
|
|
Packit |
1fb8d4 |
/* First Sample */
|
|
Packit |
1fb8d4 |
ini = IniFile_New();
|
|
Packit Service |
5a9772 |
if (!ini)
|
|
Packit Service |
5a9772 |
goto fail;
|
|
Packit Service |
5a9772 |
|
|
Packit Service |
5a9772 |
if (IniFile_ReadBuffer(ini, TEST_INI_01) < 0)
|
|
Packit Service |
5a9772 |
goto fail;
|
|
Packit |
1fb8d4 |
|
|
Packit Service |
5a9772 |
free(sectionNames);
|
|
Packit |
1fb8d4 |
sectionNames = IniFile_GetSectionNames(ini, &nSections);
|
|
Packit Service |
5a9772 |
if (!sectionNames && (nSections > 0))
|
|
Packit Service |
5a9772 |
goto fail;
|
|
Packit Service |
5a9772 |
|
|
Packit |
1fb8d4 |
for (i = 0; i < nSections; i++)
|
|
Packit |
1fb8d4 |
{
|
|
Packit Service |
5a9772 |
free(keyNames);
|
|
Packit |
1fb8d4 |
keyNames = IniFile_GetSectionKeyNames(ini, sectionNames[i], &nKeys);
|
|
Packit |
1fb8d4 |
printf("[%s]\n", sectionNames[i]);
|
|
Packit Service |
5a9772 |
if (!keyNames && (nKeys > 0))
|
|
Packit Service |
5a9772 |
goto fail;
|
|
Packit |
1fb8d4 |
for (j = 0; j < nKeys; j++)
|
|
Packit |
1fb8d4 |
{
|
|
Packit |
1fb8d4 |
sValue = IniFile_GetKeyValueString(ini, sectionNames[i], keyNames[j]);
|
|
Packit |
1fb8d4 |
printf("%s = %s\n", keyNames[j], sValue);
|
|
Packit |
1fb8d4 |
}
|
|
Packit |
1fb8d4 |
}
|
|
Packit |
1fb8d4 |
|
|
Packit |
1fb8d4 |
iValue = IniFile_GetKeyValueInt(ini, "first_section", "one");
|
|
Packit Service |
5a9772 |
|
|
Packit |
1fb8d4 |
if (iValue != 1)
|
|
Packit |
1fb8d4 |
{
|
|
Packit |
1fb8d4 |
printf("IniFile_GetKeyValueInt failure\n");
|
|
Packit Service |
5a9772 |
goto fail;
|
|
Packit |
1fb8d4 |
}
|
|
Packit Service |
5a9772 |
|
|
Packit |
1fb8d4 |
iValue = IniFile_GetKeyValueInt(ini, "first_section", "five");
|
|
Packit Service |
5a9772 |
|
|
Packit |
1fb8d4 |
if (iValue != 5)
|
|
Packit |
1fb8d4 |
{
|
|
Packit |
1fb8d4 |
printf("IniFile_GetKeyValueInt failure\n");
|
|
Packit Service |
5a9772 |
goto fail;
|
|
Packit |
1fb8d4 |
}
|
|
Packit Service |
5a9772 |
|
|
Packit |
1fb8d4 |
sValue = IniFile_GetKeyValueString(ini, "first_section", "animal");
|
|
Packit Service |
5a9772 |
|
|
Packit |
1fb8d4 |
if (strcmp(sValue, "BIRD") != 0)
|
|
Packit |
1fb8d4 |
{
|
|
Packit |
1fb8d4 |
printf("IniFile_GetKeyValueString failure\n");
|
|
Packit Service |
5a9772 |
goto fail;
|
|
Packit |
1fb8d4 |
}
|
|
Packit Service |
5a9772 |
|
|
Packit |
1fb8d4 |
sValue = IniFile_GetKeyValueString(ini, "second_section", "path");
|
|
Packit Service |
5a9772 |
|
|
Packit |
1fb8d4 |
if (strcmp(sValue, "/usr/local/bin") != 0)
|
|
Packit |
1fb8d4 |
{
|
|
Packit |
1fb8d4 |
printf("IniFile_GetKeyValueString failure\n");
|
|
Packit Service |
5a9772 |
goto fail;
|
|
Packit |
1fb8d4 |
}
|
|
Packit Service |
5a9772 |
|
|
Packit |
1fb8d4 |
sValue = IniFile_GetKeyValueString(ini, "second_section", "URL");
|
|
Packit Service |
5a9772 |
|
|
Packit |
1fb8d4 |
if (strcmp(sValue, "http://www.example.com/~username") != 0)
|
|
Packit |
1fb8d4 |
{
|
|
Packit |
1fb8d4 |
printf("IniFile_GetKeyValueString failure\n");
|
|
Packit Service |
5a9772 |
goto fail;
|
|
Packit |
1fb8d4 |
}
|
|
Packit Service |
5a9772 |
|
|
Packit |
1fb8d4 |
IniFile_Free(ini);
|
|
Packit |
1fb8d4 |
/* Second Sample */
|
|
Packit |
1fb8d4 |
ini = IniFile_New();
|
|
Packit Service |
5a9772 |
if (!ini)
|
|
Packit Service |
5a9772 |
goto fail;
|
|
Packit Service |
5a9772 |
if (IniFile_ReadBuffer(ini, TEST_INI_02) < 0)
|
|
Packit Service |
5a9772 |
goto fail;
|
|
Packit Service |
5a9772 |
free(sectionNames);
|
|
Packit |
1fb8d4 |
sectionNames = IniFile_GetSectionNames(ini, &nSections);
|
|
Packit Service |
5a9772 |
if (!sectionNames && (nSections > 0))
|
|
Packit Service |
5a9772 |
goto fail;
|
|
Packit Service |
5a9772 |
|
|
Packit |
1fb8d4 |
for (i = 0; i < nSections; i++)
|
|
Packit |
1fb8d4 |
{
|
|
Packit Service |
5a9772 |
free(keyNames);
|
|
Packit |
1fb8d4 |
keyNames = IniFile_GetSectionKeyNames(ini, sectionNames[i], &nKeys);
|
|
Packit |
1fb8d4 |
printf("[%s]\n", sectionNames[i]);
|
|
Packit Service |
5a9772 |
|
|
Packit Service |
5a9772 |
if (!keyNames && (nKeys > 0))
|
|
Packit Service |
5a9772 |
goto fail;
|
|
Packit |
1fb8d4 |
for (j = 0; j < nKeys; j++)
|
|
Packit |
1fb8d4 |
{
|
|
Packit |
1fb8d4 |
sValue = IniFile_GetKeyValueString(ini, sectionNames[i], keyNames[j]);
|
|
Packit |
1fb8d4 |
printf("%s = %s\n", keyNames[j], sValue);
|
|
Packit |
1fb8d4 |
}
|
|
Packit |
1fb8d4 |
}
|
|
Packit Service |
5a9772 |
|
|
Packit Service |
5a9772 |
IniFile_Free(ini);
|
|
Packit Service |
5a9772 |
/* Third sample - invalid input */
|
|
Packit Service |
5a9772 |
ini = IniFile_New();
|
|
Packit Service |
5a9772 |
|
|
Packit Service |
5a9772 |
if (IniFile_ReadBuffer(ini, TEST_INI_03) != -1)
|
|
Packit Service |
5a9772 |
goto fail;
|
|
Packit Service |
5a9772 |
|
|
Packit Service |
5a9772 |
rc = 0;
|
|
Packit Service |
5a9772 |
fail:
|
|
Packit Service |
5a9772 |
free(keyNames);
|
|
Packit |
1fb8d4 |
free(sectionNames);
|
|
Packit |
1fb8d4 |
IniFile_Free(ini);
|
|
Packit |
1fb8d4 |
return 0;
|
|
Packit |
1fb8d4 |
}
|