使用iniparser 处理INI文件

使用iniparser 处理INI文件,详细代码如下。
iniparser 源码地址:https://github.com/ndevilla/iniparser.git
#include 
#include 
#include 
#include 

#include "iniparser.h"

int help(void)
{
	fprintf(stderr, "(c) Tody, 2013.                INI file parser     v1.0.0\n");
	fprintf(stderr, "Usage:\n");
	fprintf(stderr, "  wIniFile  [Section] [key] [value]\n");
	fprintf(stderr, "\nOptions:\n");
	fprintf(stderr, "  Section\tdump all key under section\n");
	fprintf(stderr, "  key\t\tdump key value\n");
	fprintf(stderr, "  value\t\tadd/change key value\n");
	fprintf(stderr, "\nExample:\n");
	fprintf(stderr, "  wIniFile example.ini test key1\n");
	fprintf(stderr, "\nReturn code\n  OK: 0, Fail: 1\n");

	exit(1);	
}

int dump_all(char *ini_name)
{
    dictionary  *   ini ;	

    ini = iniparser_load(ini_name);
    if (ini==NULL) {
        fprintf(stderr, "cannot parse file: %s\n", ini_name);
        return 1 ;
    }

	iniparser_dump_ini(ini, stdout);

    iniparser_freedict(ini);
    return 0 ;

}

int set_key(char *ini_name, char *sec, char *key, char *value)
{
    dictionary  *   ini ;
	char		sec_key[80];
	FILE *out;
	
	if (strlen(value)<1)
	{
        fprintf(stderr, "value is not usable\n", ini_name);
        return 1 ;		
	}
	
	sprintf(sec_key, "%s:%s", sec, key);
	
    ini = iniparser_load(ini_name);
    if (ini==NULL) {
        fprintf(stderr, "cannot parse file: %s\n", ini_name);
        return 1 ;
    }
    if(iniparser_set(ini, sec_key, value))
    {
        fprintf(stderr, "set value fail\n");
	    iniparser_freedict(ini);
        return 1 ;    	
    }
    printf("set %s=%s", key, iniparser_getstring(ini, sec_key, value));

    if ((out=fopen(ini_name, "w"))==NULL) {
	    iniparser_freedict(ini);
		return 1;
	}

	iniparser_dump_ini(ini, out);
	fflush(out);

	fclose(out);
	
    iniparser_freedict(ini);
    return 0 ;
	
}

int dump_key(char *ini_name, char *sec, char *key)
{
    dictionary  *   ini ;
	char		sec_key[80];
	char		*s;
	
	sprintf(sec_key, "%s:%s", sec, key);
	
    ini = iniparser_load(ini_name);
    if (ini==NULL) {
        fprintf(stderr, "cannot parse file: %s\n", ini_name);
        return 1 ;
    }
    
    s = iniparser_getstring(ini, sec_key, NULL);
    
    if (s==NULL)
    {
        fprintf(stderr, "cannot found key\n");
	    iniparser_freedict(ini);
        return 1 ;
   }
    
    printf("set %s=%s", key, s);

    iniparser_freedict(ini);
    return 0 ;
}

int dump_section(char * ini_name, char *str)
{
    dictionary  *   ini ;

    /* Some temporary variables to hold query results */
	int				i;
	char		**	k;
	char			sec[80];
	char			key[80];

    ini = iniparser_load(ini_name);
    if (ini==NULL) {
        fprintf(stderr, "cannot parse file: %s\n", ini_name);
        return 1 ;
    }

	k = iniparser_getseckeys(ini, str);
	
	if (k==NULL)
	{
		fprintf(stderr, "cannot found section\n");
	    iniparser_freedict(ini);
		return 1;
	}
	
	for(i=0; i

你可能感兴趣的:(C/C++)