Ejemplo n.º 1
0
void ini_delete(Ini* ini) {
	int i;

	if (ini == NULL)
		return;

	for (i = 0 ; i < ini->sections->size ; i++)
		section_delete((Section*)list_get(ini->sections, i));

	list_delete(ini->sections);
}
Ejemplo n.º 2
0
void ini_delete(Ini *ini)
{
	size_t i;

	if (ini == NULL)
		return;

	for (i = 0; i < ini->nsections; i++)
		section_delete(ini->sections[i]);

	free(ini);
}
Ejemplo n.º 3
0
/* 最初のセクションの解釈 */
static void ini_parse_first_section(Ini *ini, const char **data)
{
	char *line;

	/* 空行をとばす */
	while (1) {
		line = sgetline(data);
		if (line == NULL)
			return;
		if (!isingnorableline(line))
			break;
		free(line);
	}

	ini->current = section_parse(line);
	free(line);
	if (ini->current == NULL)
		return;

	if (ini_add_section(ini, ini->current))
		section_delete(ini->current);
}
Ejemplo n.º 4
0
static void ini_parse_sections_and_keys(Ini *ini, const char *data)
{
	Key *key;
	Section *section;
	char *line;

	while ((line = sgetline(&data)) != NULL) {

		if (isingnorableline(line))
			continue;

		/* キーとして解釈 */
		if ((key = key_parse(line)) != NULL) {
			free(line);
			if (section_add_key(ini->current, key)) {
				key_delete(key);
				return;
			}
			continue;
		}

		/* セクションとして解釈 */
		if ((section = section_parse(line)) != NULL) {
			ini->current = section;
			free(line);
			if (ini_add_section(ini, ini->current)) {
				section_delete(ini->current);
				return;
			}
			continue;
		}

		free(line);

		return; /* 無効な文字列の場合にここまで来る */
	}
}