INI Manipulation using C
Using C to read and write INI file

Introduction
This project uses C and linklist to implement and manage INI files. This project is a sample of linklist implementation.
Sample Usage
ini_start("sample.ini");
//save_as("test.ini");
buffer = get_value("Main","PLC");
printf("value : %s\n",buffer);
printf("last error is %s\n",get_last_error());
//print_content();
ini_end();
How To Implement
This project uses linklist to make a sample tree for collecting INI file data. INI file in this project must separate using "=". This is a sample function to manage INI file.
/*****************************************************************/
/* main ini manage function */
/************************************************************************/
/**
* function: ini_start
* parameter:
* @filename
* return: true if success
* purpose: for start ini manipulate file
*/
bool ini_start(const char* filename);
/**
* function: load
* parameter:
* @filename
* return: true if success
* purpose: for load ini file to content
*/
bool load(const char *filename);
/**
* function: _save
* parameter:
* @filename
* return: true if success
* purpose: save content to ini file(save as)
*/
bool save(); // save to load filebool
bool save_as(const char *filename);
/**
* function: get_value
* parameter:
* @
* return: value
* purpose: ?
*/
char *get_value (const char *sec,const char *key);
char *_get_value(const char *sec,const char *key, // return data and comment
char *comment);
/**
* function: set_value
* parameter:
* @
* return: true if success
* purpose:
*/
bool set_value (const char *sec,const char *key, // will auto replace
const char *value);
bool _set_value (const char *sec,const char *key, // select replace or not replace
const char *value,const char *comment,REPLACE_FLAG flag);
int remove_sel (const char *sec,char *key);
int remove_all (const char * sec); // remove all record in section
// add/remove section
void add_section(const char *sec,const char *comment); // add section
int remove_section(char *sec); // remove section (remove all record
// in section if not empty)
void clear(); // clear all content
// size of section
int content_size();
int section_size(char *sec);
// for console display use stdio.h stdout
void print_content(); // print all content
void print_section(); // print all only section
void print_record(char *sec,char *key); // print selection record
void print_allrecord(char *sec); // print all record in section
/**
* function: ini_end
* parameter:
* none
* return: void
* purpose: for end ini manipulate file
*/
void ini_end();
void _ini_end(REPLACE_FLAG flag);
/**
* function: get_last_error
* parameter:
* none
* return: type of error
* purpose: for get error
*/
char *get_last_error();
History
- 22nd August, 2006: Initial post