int parse_ini_file(char * ini_name)
{
	dictionary	*	ini=NULL ;
	dictionary	*	test_dict=NULL;	
	/* Some temporary variables to hold query results */
	int				b ;
	int				i ;
	double			d ;
	char		*	s ;
	char		*out_str=NULL;
        fprintf(stderr,"Loading...\n");
	ini = iniparser_load(ini_name);
	if (ini==NULL) {
		fprintf(stderr, "cannot parse file: %s\n", ini_name);
		return -1 ;
	}
        fprintf(stderr,"Dumping...\n");
	iniparser_dump_ini(ini, stderr);
        fprintf(stdout,"To_stringi...\n");
	out_str=iniparser_to_string(ini);
        fprintf(stdout,"\nstring:\n");
        fprintf(stdout,"%s\n",out_str);
        fprintf(stdout,"From_string\n");
	test_dict=iniparser_load_from_string(test_dict,out_str);
        fprintf(stderr,"Dict from string:\n");
	iniparser_dump_ini(test_dict, stderr);

	/* Get pizza attributes */
	printf("Pizza:\n");

	b = iniparser_getboolean(ini, "pizza:ham", -1);
	printf("Ham:       [%d]\n", b);
	b = iniparser_getboolean(ini, "pizza:mushrooms", -1);
	printf("Mushrooms: [%d]\n", b);
	b = iniparser_getboolean(ini, "pizza:capres", -1);
	printf("Capres:    [%d]\n", b);
	b = iniparser_getboolean(ini, "pizza:cheese", -1);
	printf("Cheese:    [%d]\n", b);

	/* Get wine attributes */
	printf("Wine:\n");
	s = iniparser_getstring(ini, "wine:grape", NULL);
    printf("Grape:     [%s]\n", s ? s : "UNDEF");
	
    i = iniparser_getint(ini, "wine:year", -1);
    printf("Year:      [%d]\n", i);

	s = iniparser_getstring(ini, "wine:country", NULL);
    printf("Country:   [%s]\n", s ? s : "UNDEF");
	
    d = iniparser_getdouble(ini, "wine:alcohol", -1.0);
    printf("Alcohol:   [%g]\n", d);

	iniparser_freedict(ini);
	return 0 ;
}
Beispiel #2
0
void INI::save(FILE* file)
{
	if (! file)
		return;

	iniparser_dump_ini(this->ini, file);
}
Beispiel #3
0
debugger_t *debugger_creator(char *ini_file_name)
{
	debugger_t *debugger;
	int8_t type;
	dictionary *d;
	FILE *f;

	debugger =(debugger_t *)malloc(sizeof(debugger_t));

	debugger->d = d = iniparser_new(ini_file_name);
	memcpy(debugger->ini_file_name,ini_file_name,strlen(ini_file_name));

	type = iniparser_getint(d, (char *)"debugger:type", 0);
	if(access(debugger->ini_file_name,F_OK)){
		printf("ini file not exsit\n");
		f = fopen(debugger->ini_file_name, "w");
		iniparser_setstr(d, (char *)"debugger", NULL); 
		/*
		 *itoa(type,type_str,10);
		 */
		iniparser_setstr(d, (char *)"debugger:type","0");
		iniparser_dump_ini(d, f);
		fclose(f);
	}
	printf("debugger type =%d\n",type);
	debugger->debugger_type = type;
	debugger->dbg_ops = &debugger_modules[type].dbg_ops;


	debugger_set_level_infos(debugger);
	debugger_set_businesses(debugger);

	return debugger;

}
Beispiel #4
0
static int ini_dump(dictionary *ini, char *stb_ini_file_path)
{
	char *tmp_file = "/var/change.ini";
	FILE *fp;

	char cmd[256] = { 0 };
	int size;

	fp = fopen(tmp_file, "w");
	if (NULL == fp) {
		cfg_error("fopen file %s failed\n", tmp_file);
		return -1;
	}

	iniparser_dump_ini(ini, fp);
	iniparser_freedict(ini);
	fseek(fp, SEEK_SET, SEEK_END);
	size = ftell(fp);
	fclose(fp);
	if (size > 10) {
		sync();
		sprintf(cmd, "mv %s %s", tmp_file, stb_ini_file_path);
		system (cmd);
		cfg_notice("%s\n", cmd);
		sync();
		n_module_stop(N_MOD_BROWS, 9);
		n_module_stop(N_MOD_MPLAYER, 9);
	} else {
		cfg_notice("%s error size=%d\n", cmd, size);
		unlink(tmp_file);
		sync();
	}

	return FV_OK;
}
Beispiel #5
0
/*
 *enum debug_business_enum{
 *    DBG_BUSINESS_NORMAL = 0,
 *    DBG_BUSINESS_ALLOC,
 *    DBG_BUSINESS_CONTAINER,
 *    MAX_DEBUG_BUSINESS_NUM
 *};
 */
void debugger_set_businesses(debugger_t *debugger)
{
	dictionary *d = debugger->d;;
	int bussiness_num,i;
#define MAX_STRING_LEN 50
	char switch_str[MAX_STRING_LEN];
	char level_str[MAX_STRING_LEN];
	int sw,lv;

	bussiness_num = iniparser_getint(d, (char *)"businesses:business_num",0);
	if(bussiness_num == 0){
		iniparser_setstr(d, (char *)"businesses", NULL); 
		iniparser_setstr(d, (char *)"businesses:business_num", "3"); 
		for(i = 0; i < MAX_DEBUG_BUSINESS_NUM; i++){
			snprintf(switch_str,MAX_STRING_LEN,"businesses:business%d_switch",i);
			snprintf(level_str,MAX_STRING_LEN,"businesses:business%d_level",i);
			iniparser_setstr(d, switch_str,"1");
			iniparser_setstr(d, level_str,"9");
			debugger_set_business(debugger,i,1,9);
		}
		FILE *f = fopen(debugger->ini_file_name, "w");
		iniparser_dump_ini(d, f);
		fclose(f);
	}else{
		for(i = 0; i < bussiness_num; i++){
			snprintf(switch_str,MAX_STRING_LEN,"businesses:business%d_switch",i);
			snprintf(level_str,MAX_STRING_LEN,"businesses:business%d_level",i);
			printf("debugger_set_businesses,bussiness_num=%d\n",bussiness_num);
			sw = iniparser_getint(d, switch_str,1);
			lv = iniparser_getint(d, level_str,9);
			debugger_set_business(debugger,i,sw,lv);
		}
	}
#undef MAX_BUSINESSES_SETTING_LEN
}
Beispiel #6
0
/**
   @brief Dumps the loaded config to stdout

   @return int Returns FT_CONFIG_OK if there was a config file (even if it was
   empty). If no config has been loaded, function returns FT_NO_CONFIG.
  */
int faptime_config_dump(void) {
    if (config == NULL) {
        return FT_NO_CONFIG;
    }

    iniparser_dump_ini(config, stdout);
    return FT_CONFIG_OK;
}
Beispiel #7
0
void iniparser_save_ini(dictionary * d, const char * file) {
	FILE *pFile;
	pFile = fopen(file, "w");

	if (pFile != NULL) {
		iniparser_dump_ini(d, pFile);
		fclose(pFile);
	}
}
void
ccsIniSave (IniDictionary *dictionary,
	    const char    *fileName)
{
    if (!ccsCreateDirFor (fileName))
	return;

    iniparser_dump_ini (dictionary, fileName);
}
Beispiel #9
0
//save ini file
void Save_INI_File(dictionary *iniDictIn, char *fName)
{
	//dump dict content to the file
	FILE *fp;	
	fp = fopen(fName,"w+");
	if(fp)
	{
		iniparser_dump_ini(iniDictIn, fp);
		fclose(fp);
	}	
}
Beispiel #10
0
void update_config(char *token, char *username)
{
    bstring file = locate_config_file();

    bstring tmp = bstrcpy(file);
    bcatcstr(tmp, ".tmp_XXXXXX");

    int fd = mkstemp((char *) tmp->data);
    if (fd < 0)
    {
	perror("mkstemp");
	exit(1);
    }
    FILE *fp = fdopen(fd, "w");
    if (fp == 0)
    {
	perror("fdopen");
	exit(1);
    }

    dictionary *config;

    struct stat statbuf;
    int rc = stat((char *) file->data, &statbuf);
    if (rc < 0 || statbuf.st_size == 0)
    {
	/* create a new empty dictionary */
	config = dictionary_new(0);
	dictionary_set(config, "authentication", 0);
    }
    else
    {
	config = iniparser_load(bdata(file));
    }

    iniparser_set(config, "authentication:token", token);
    if (username)
	iniparser_set(config, "authentication:user_id", username);
    iniparser_dump_ini(config, fp);

    iniparser_freedict(config);

    fclose(fp);

    if (rename(bdata(tmp), bdata(file)) < 0)
    {
	fprintf(stderr, "Error rename %s to %s: %s\n",
		bdata(tmp), bdata(file), strerror(errno));
	exit(1);
    }

    bdestroy(tmp);
    bdestroy(file);
}
Beispiel #11
0
void save_conf() 
{
	unlink(DEF_CFG);
	FILE *conf_f = fopen(DEF_CFG, "w");
	if (!conf_f) {
		LOG(URGENT, "Unable to open the config file");
		return;
	}

	iniparser_dump_ini(ini, conf_f);
	fclose(conf_f);
}
void InitParser::save(const string& file_name) const
{
	// Check file presence
	FILE * fp = NULL;
	fp = fopen(file_name.c_str(),"wt");
	if (fp) {
		iniparser_dump_ini(dico, fp);
	} else {
		cerr << "ERROR : Can't open file " << file_name << endl;
// exit(-1);
	}
	if (fp) fclose(fp);
}
Beispiel #13
0
/*******************  FUNCTION  *********************/
void CMRCmdOptions::dumpUsedConfigFile ( void )
{
	//trivial
	if (dumpUsedDic == NULL || dumpConfigFile.empty())
		return;

	//dump only on master
	if (cmrIsMPIMaster())
	{
		info("Dump used config file in '%s'.",dumpConfigFile.c_str());
		overrideByConfigFile();
		if (dumpConfigFile == "-")
		{
			iniparser_dump_ini(dumpUsedDic,stdout);
		} else {
			FILE * fp = fopen(dumpConfigFile.c_str(),"w");
			assume(fp != NULL,"Fail to open file : '%s'",dumpConfigFile.c_str());
			iniparser_dump_ini(dumpUsedDic,fp);
			fclose(fp);
		}
	}
}
Beispiel #14
0
void network_print_init(debugger_t *debugger)
{
#define MAX_NETWORK_INIT_BUF_LEN 20
	int sd;
	struct sockaddr_in *raddr;
	debug_network_prive_t *net_priv = &debugger->priv.net;
	dictionary *d = debugger->d;;
	char *ip;
	uint32_t default_dbg_port = 10276;
	char buf[MAX_NETWORK_INIT_BUF_LEN];
	char default_dbg_ip[] = "127.0.0.1";

	net_priv->port = iniparser_getint(d, (char *)"network:debug_port",default_dbg_port);
	ip = iniparser_getstr(d, (char *)"network:debug_ip");
	if(ip == NULL){
		/*
		 *memcpy(debug_ip,get_ipaddr(),strlen(get_ipaddr()));
		 */
		dbg_str(DBG_ERROR,"iniparser_getstr err");
		memcpy(net_priv->ip_str,default_dbg_ip,strlen(default_dbg_ip));
		iniparser_setstr(d, (char *)"network", NULL); 
		debug_string_itoa(default_dbg_port,buf,10);
		iniparser_setstr(d, (char *)"network:debug_port",buf);
		iniparser_setstr(d, (char *)"network:debug_ip", net_priv->ip_str);

		FILE *f = fopen(debugger->ini_file_name, "w");
		iniparser_dump_ini(d, f);
		fclose(f);
	}
	else 
		memcpy(net_priv->ip_str,ip,strlen(ip));

	sd = socket(AF_INET,SOCK_DGRAM,0);
	if(sd <0){
		printf("create socket\n");
		exit(1);
	}   
	int val=1;
	if(setsockopt(sd,SOL_SOCKET,SO_REUSEADDR,&val,sizeof(val))<0){
		printf("setsocgketopt error\n");
		exit(1);
	}      
	pthread_mutex_init(&debugger->priv.net.send_dgram_lock,NULL);
	debugger->priv.net.sd = sd;

	raddr = &debugger->priv.net.raddr;
	raddr->sin_family = AF_INET;
	raddr->sin_port = htons(net_priv->port);
	inet_pton(AF_INET,net_priv->ip_str,&raddr->sin_addr);
#undef MAX_NETWORK_INIT_BUF_LEN 
}
void InitParser::save(const string& file_name) const
{
	// Check file presence
	FILE * fp = NULL;
	fp = fopen(file_name.c_str(),"wt");
	if (fp) {
		iniparser_dump_ini(dico, fp);
	} else {
		//~ cerr << "ERROR : Can't open file " << file_name << endl;
		Log.write("Init_parser : can't open config file "+ file_name, cLog::eLOG_TYPE_ERROR);
// exit(-1);
	}
	if (fp) fclose(fp);
}
Beispiel #16
0
int flib_ini_save(flib_ini *ini, const char *filename) {
	int result = INI_ERROR_OTHER;
	if(!log_badargs_if2(ini==NULL, filename==NULL)) {
		FILE *file = fopen(filename, "wb");
		if(!file) {
			flib_log_e("Error opening file \"%s\" for writing.", filename);
		} else {
			iniparser_dump_ini(ini->inidict, file);
			if(fclose(file)) {
				flib_log_e("Write error on ini file \"%s\"", filename);
			} else {
				result = 0;
			}
		}
	}
	return result;
}
bool AmConfigBase::save_config()
{
  bool ret = false;

  if (mDictionary && mConfigFile) {
    FILE *filePointer = fopen(mConfigFile, "w+");
    if (NULL == filePointer) {
      ERROR("%s\n", strerror(errno));
    } else {
      iniparser_dump_ini(mDictionary, filePointer);
      fclose(filePointer);
      ret = true;
    }
  } else {
    ERROR("Please load config file before save it!");
  }

  return ret;
}
void SaveConfigFile()
{
#if !defined(_WIN32) && !defined(__APPLE__)
	// Get home dir
	char buf[1024];
	struct stat s;
	homeDir = getenv("HOME");
	snprintf(buf, 1024, "%s/%s", homeDir, DOT_DIR);
	// Make dot dir if not existent
	if (stat(buf, &s) == -1 || !S_ISDIR(s.st_mode))
		mkdir(buf, 0755);
#else
	homeDir = 0;
#endif

	const char* configFile = FindConfigFile("vbam.ini");

	if (configFile == NULL)
	{
		configFile = FindConfigFile("vbam.cfg");
	}

	if (configFile != NULL)
	{
		FILE *f = fopen(configFile, "w");
		// Needs mixed case version of the option name to add new options into the ini
		//for (int i = 0; i < (sizeof(argOptions) / sizeof(option)); i++)
		//{
		//	std::string pref = "preferences:";
		//	pref.append(argOptions[i].name);
		//	if (!iniparser_find_entry(preferences, pref.c_str()))
		//	{
		//		iniparser_set(preferences, pref.c_str(), NULL);
		//	}
		//}
		iniparser_dump_ini(preferences, f);
		fclose(f);
	}
}
void ttscpVoiceDialog::accept()
{
  QByteArray ba;
  
   tts.stopf();
  //tts.stop();
 
  dictionary * ini = iniparser_load("qenix.ini"); //Must deallocate manualy
  if (ini==NULL)
  {
  iniparser_freedict(ini);
  fprintf(stderr, "cannot parse file [%s]", "qenix.ini");
  return;
  }
	iniparser_dump(ini, stderr);
 
  tts.setInit_f(spinF->value());
  ba = QByteArray::number(spinF->value());
  iniparser_setstr(ini, "ttscp:init_f", ba.data());
  
  tts.setInit_i(spinI->value());
  ba = QByteArray::number(spinI->value());
  iniparser_setstr(ini, "ttscp:init_i", ba.data());
  
  tts.setInit_t(spinT->value());
  ba = QByteArray::number(spinT->value());
  iniparser_setstr(ini, "ttscp:init_t", ba.data());
  
  //msgbox(QString(t));
  
	FILE *fw;
	fw = fopen("qenix.ini", "wb+");
	
	iniparser_dump_ini(ini, fw);
	fclose(fw);
  iniparser_freedict(ini);
    
  done(Accepted);
}
Beispiel #20
0
/*init socket*/
void log_print_init(debugger_t *debugger)
{
	debug_log_prive_t *log_priv = &debugger->priv.log;
	FILE *fp;
	dictionary *d = debugger->d;;
	char *file_name;
	char default_log_name[] = "dbg_log.txt";

	printf("debug log init\n");
	file_name = iniparser_getstr(d, (char *)"log:log_file_name");
	if(file_name){
		memcpy(log_priv->log_file_name,file_name,strlen(file_name));
	}else{
		memcpy(log_priv->log_file_name,default_log_name,strlen(default_log_name));
		iniparser_setstr(d, (char *)"Log", NULL); 
		iniparser_setstr(d, (char *)"Log:log_file_name",log_priv->log_file_name);

		FILE *f = fopen(debugger->ini_file_name, "w");
		iniparser_dump_ini(d, f);
		fclose(f);
	}

	fp = fopen(log_priv->log_file_name,"ab+");
	if(fp == NULL)
	{
		perror("log file fopen()");
		exit(1);
	}
	log_priv->fp = fp;

	/*
	 *pthread_mutex_init(&log_priv->log_file_lock,NULL);
	 */
	printf("run at here.\n");
	sync_lock_init(&log_priv->log_file_lock,debugger->lock_type);
	printf("debug log init end\n");
}
Beispiel #21
0
extern bool ini_conf_save(p_conf conf)
{
	dictionary *dict;
	FILE *fp;
	char buf[PATH_MAX];
	int i;

	if (conf == NULL) {
		return false;
	}

	conf->confver = XREADER_VERSION_NUM;
	dict = dictionary_new(0);

	if (dict == NULL)
		return false;

	fp = fopen(conf_filename, "w");

	if (fp == NULL) {
		return false;
	}

	if (iniparser_setstring(dict, "Global", NULL) != 0)
		goto error;
	if (iniparser_setstring(dict, "UI", NULL) != 0)
		goto error;
	if (iniparser_setstring(dict, "Text", NULL) != 0)
		goto error;
	if (iniparser_setstring(dict, "Image", NULL) != 0)
		goto error;
	if (iniparser_setstring(dict, "Music", NULL) != 0)
		goto error;

	iniparser_setstring(dict, "Global:path", conf->path);
	iniparser_setstring(dict, "UI:forecolor",
						hexToString(buf, sizeof(buf), conf->forecolor));
	iniparser_setstring(dict, "Image:giftranscolor",
						hexToString(buf, sizeof(buf), conf->giftranscolor));
	iniparser_setstring(dict, "UI:bgcolor",
						hexToString(buf, sizeof(buf), conf->bgcolor));
	iniparser_setstring(dict, "UI:have_bg",
						booleanToString(buf, sizeof(buf), conf->have_bg));
	iniparser_setstring(dict, "UI:titlecolor",
						hexToString(buf, sizeof(buf), conf->titlecolor));
	iniparser_setstring(dict, "UI:menutextcolor",
						hexToString(buf, sizeof(buf), conf->menutextcolor));
	iniparser_setstring(dict, "UI:menubcolor",
						hexToString(buf, sizeof(buf), conf->menubcolor));
	iniparser_setstring(dict, "UI:selicolor",
						hexToString(buf, sizeof(buf), conf->selicolor));
	iniparser_setstring(dict, "UI:selbcolor",
						hexToString(buf, sizeof(buf), conf->selbcolor));
	iniparser_setstring(dict, "UI:msgbcolor",
						hexToString(buf, sizeof(buf), conf->msgbcolor));
	iniparser_setstring(dict, "UI:usedyncolor",
						booleanToString(buf, sizeof(buf), conf->usedyncolor));
	iniparser_setstring(dict, "Text:rowspace",
						dwordToString(buf, sizeof(buf), conf->rowspace));
	iniparser_setstring(dict, "Text:infobar",
						infobarToString(buf, sizeof(buf), conf->infobar));
	iniparser_setstring(dict, "Text:infobar_style",
						intToString(buf, sizeof(buf), conf->infobar_style));
	iniparser_setstring(dict, "Text:rlastrow",
						booleanToString(buf, sizeof(buf), conf->rlastrow));
	iniparser_setstring(dict, "Text:autobm",
						booleanToString(buf, sizeof(buf), conf->autobm));
	iniparser_setstring(dict, "Text:vertread",
						vertreadToString(buf, sizeof(buf), conf->vertread));
	iniparser_setstring(dict, "Text:encode",
						encodeToString(buf, sizeof(buf), conf->encode));
	iniparser_setstring(dict, "Image:fit",
						fitToString(buf, sizeof(buf), conf->fit));
	iniparser_setstring(dict, "Image:imginfobar",
						booleanToString(buf, sizeof(buf), conf->imginfobar));
	iniparser_setstring(dict, "Text:scrollbar",
						booleanToString(buf, sizeof(buf), conf->scrollbar));
	iniparser_setstring(dict, "Image:scale",
						dwordToString(buf, sizeof(buf), conf->scale));
	iniparser_setstring(dict, "Image:rotate",
						rotateToString(buf, sizeof(buf), conf->rotate));

	for (i = 0; i < 20; ++i) {
		char key[20];

		SPRINTF_S(key, "Text:txtkey1_%02d", i);
		iniparser_setstring(dict, key,
							hexToString(buf, sizeof(buf), conf->txtkey[i]));
		SPRINTF_S(key, "Image:imgkey1_%02d", i);
		iniparser_setstring(dict, key,
							hexToString(buf, sizeof(buf), conf->imgkey[i]));
	}
	iniparser_setstring(dict, "Global:shortpath", conf->shortpath);
	iniparser_setstring(dict, "Global:confver",
						hexToString(buf, sizeof(buf), conf->confver));
	iniparser_setstring(dict, "Image:bicubic",
						booleanToString(buf, sizeof(buf), conf->bicubic));
	iniparser_setstring(dict, "Text:wordspace",
						dwordToString(buf, sizeof(buf), conf->wordspace));
	iniparser_setstring(dict, "Text:borderspace",
						dwordToString(buf, sizeof(buf), conf->borderspace));
	iniparser_setstring(dict, "Global:lastfile", conf->lastfile);
	iniparser_setstring(dict, "Music:mp3encode",
						encodeToString(buf, sizeof(buf), conf->mp3encode));
	iniparser_setstring(dict, "Music:lyricencode",
						encodeToString(buf, sizeof(buf), conf->lyricencode));
	iniparser_setstring(dict, "Music:mp3cycle",
						cycleToString(buf, sizeof(buf), conf->mp3cycle));
	iniparser_setstring(dict, "Global:isreading",
						booleanToString(buf, sizeof(buf), conf->isreading));
	iniparser_setstring(dict, "UI:bgarch", conf->bgarch);
	iniparser_setstring(dict, "UI:bgfile", conf->bgfile);
	iniparser_setstring(dict, "UI:bgwhere",
						intToString(buf, sizeof(buf), conf->bgwhere));
	iniparser_setstring(dict, "Image:slideinterval",
						dwordToString(buf, sizeof(buf), conf->slideinterval));
	iniparser_setstring(dict, "Music:hprmctrl",
						booleanToString(buf, sizeof(buf), conf->hprmctrl));
	iniparser_setstring(dict, "UI:grayscale",
						intToString(buf, sizeof(buf), conf->grayscale));
	iniparser_setstring(dict, "Global:showhidden",
						booleanToString(buf, sizeof(buf), conf->showhidden));
	iniparser_setstring(dict, "Global:showunknown",
						booleanToString(buf, sizeof(buf), conf->showunknown));
	iniparser_setstring(dict, "Global:showfinfo",
						booleanToString(buf, sizeof(buf), conf->showfinfo));
	iniparser_setstring(dict, "Global:allowdelete",
						booleanToString(buf, sizeof(buf), conf->allowdelete));
	iniparser_setstring(dict, "Global:arrange",
						arrangeToString(buf, sizeof(buf), conf->arrange));
	iniparser_setstring(dict, "Global:enableusb",
						booleanToString(buf, sizeof(buf), conf->enableusb));
	iniparser_setstring(dict, "Image:viewpos",
						viewposToString(buf, sizeof(buf), conf->viewpos));
	iniparser_setstring(dict, "Image:imgmvspd",
						dwordToString(buf, sizeof(buf), conf->imgmvspd));
	iniparser_setstring(dict, "Image:imgpaging",
						imgpagingToString(buf, sizeof(buf), conf->imgpaging));
	iniparser_setstring(dict, "Image:imgpaging_spd",
						dwordToString(buf, sizeof(buf), conf->imgpaging_spd));
	iniparser_setstring(dict, "Image:imgpaging_interval",
						dwordToString(buf, sizeof(buf),
									  conf->imgpaging_interval));
	iniparser_setstring(dict, "Image:imgpaging_duration",
						dwordToString(buf, sizeof(buf),
									  conf->imgpaging_duration));
	for (i = 0; i < 20; ++i) {
		char key[20];

		SPRINTF_S(key, "Global:flkey1_%02d", i);
		iniparser_setstring(dict, key,
							hexToString(buf, sizeof(buf), conf->flkey[i]));
	}
	iniparser_setstring(dict, "UI:fontsize",
						intToString(buf, sizeof(buf), conf->fontsize));
	iniparser_setstring(dict, "Text:reordertxt",
						booleanToString(buf, sizeof(buf), conf->reordertxt));
	iniparser_setstring(dict, "Text:pagetonext",
						booleanToString(buf, sizeof(buf), conf->pagetonext));
	iniparser_setstring(dict, "Text:autopage",
						intToString(buf, sizeof(buf), conf->autopage));
	iniparser_setstring(dict, "Text:prev_autopage",
						intToString(buf, sizeof(buf), conf->prev_autopage));
	iniparser_setstring(dict, "Text:autopagetype",
						intToString(buf, sizeof(buf), conf->autopagetype));
	iniparser_setstring(dict, "Text:autolinedelay",
						intToString(buf, sizeof(buf), conf->autolinedelay));
	iniparser_setstring(dict, "Image:thumb",
						thumbToString(buf, sizeof(buf), conf->thumb));
	iniparser_setstring(dict, "Text:bookfontsize",
						intToString(buf, sizeof(buf), conf->bookfontsize));
	iniparser_setstring(dict, "Text:enable_analog",
						booleanToString(buf, sizeof(buf), conf->enable_analog));
	iniparser_setstring(dict, "Image:img_enable_analog",
						booleanToString(buf, sizeof(buf),
										conf->img_enable_analog));
	for (i = 0; i < 20; ++i) {
		char key[20];

		SPRINTF_S(key, "Text:txtkey2_%02d", i);
		iniparser_setstring(dict, key,
							hexToString(buf, sizeof(buf), conf->txtkey2[i]));
		SPRINTF_S(key, "Image:imgkey2_%02d", i);
		iniparser_setstring(dict, key,
							hexToString(buf, sizeof(buf), conf->imgkey2[i]));
		SPRINTF_S(key, "Global:flkey2_%02d", i);
		iniparser_setstring(dict, key,
							hexToString(buf, sizeof(buf), conf->flkey2[i]));
	}
	iniparser_setstring(dict, "Image:imgpagereserve",
						dwordToString(buf, sizeof(buf), conf->imgpagereserve));
	iniparser_setstring(dict, "Music:lyricex",
						dwordToString(buf, sizeof(buf), conf->lyricex));
	iniparser_setstring(dict, "Music:autoplay",
						booleanToString(buf, sizeof(buf), conf->autoplay));
	iniparser_setstring(dict, "Text:usettf",
						booleanToString(buf, sizeof(buf), conf->usettf));
	iniparser_setstring(dict, "Text:cttfarch", conf->cttfarch);
	iniparser_setstring(dict, "Text:cttfpath", conf->cttfpath);
	iniparser_setstring(dict, "Text:ettfarch", conf->ettfarch);
	iniparser_setstring(dict, "Text:ettfpath", conf->ettfpath);
	for (i = 0; i < 3; ++i) {
		char key[20];

		SPRINTF_S(key, "Global:freqs_%d", i);
		iniparser_setstring(dict, key,
							intToString(buf, sizeof(buf), conf->freqs[i]));
	}
	iniparser_setstring(dict, "Image:imgbrightness",
						intToString(buf, sizeof(buf), conf->imgbrightness));
	iniparser_setstring(dict, "Global:dis_scrsave",
						booleanToString(buf, sizeof(buf), conf->dis_scrsave));
	iniparser_setstring(dict, "Global:autosleep",
						intToString(buf, sizeof(buf), conf->autosleep));
	iniparser_setstring(dict, "Image:load_exif",
						booleanToString(buf, sizeof(buf), conf->load_exif));
	iniparser_setstring(dict, "Global:launchtype",
						intToString(buf, sizeof(buf), conf->launchtype));
	iniparser_setstring(dict, "Text:infobar_use_ttf_mode",
						booleanToString(buf, sizeof(buf),
										conf->infobar_use_ttf_mode));
	iniparser_setstring(dict, "Text:infobar_fontsize",
						dwordToString(buf, sizeof(buf),
									  conf->infobar_fontsize));
	iniparser_setstring(dict, "Image:no_repeat",
						booleanToString(buf, sizeof(buf), conf->img_no_repeat));

	iniparser_setstring(dict, "Global:hide_flash",
						booleanToString(buf, sizeof(buf), conf->hide_flash));

	iniparser_setstring(dict, "Text:tabstop",
						dwordToString(buf, sizeof(buf), conf->tabstop));

	iniparser_setstring(dict, "Music:apetagorder",
						booleanToString(buf, sizeof(buf), conf->apetagorder));

	iniparser_setstring(dict, "UI:language", conf->language);

	iniparser_setstring(dict, "UI:filelistwidth",
						intToString(buf, sizeof(buf), conf->filelistwidth));

	iniparser_setstring(dict, "Text:ttf_load_to_memory",
						booleanToString(buf, sizeof(buf),
										conf->ttf_load_to_memory));

	iniparser_setstring(dict, "Global:save_password",
						booleanToString(buf, sizeof(buf), conf->save_password));

	iniparser_setstring(dict, "Text:scrollbar_width",
						intToString(buf, sizeof(buf), conf->scrollbar_width));

	iniparser_setstring(dict, "Text:hide_last_row",
						booleanToString(buf, sizeof(buf), conf->hide_last_row));

	iniparser_setstring(dict, "Text:infobar_show_timer",
						booleanToString(buf, sizeof(buf),
										conf->infobar_show_timer));

	iniparser_setstring(dict, "Text:englishtruncate",
						booleanToString(buf, sizeof(buf),
										conf->englishtruncate));

	iniparser_setstring(dict, "Image:image_scroll_chgn_speed",
						booleanToString(buf, sizeof(buf),
										conf->image_scroll_chgn_speed));

	iniparser_setstring(dict, "Text:ttf_haste_up",
						booleanToString(buf, sizeof(buf), conf->ttf_haste_up));

	iniparser_setstring(dict, "Text:linenum_style",
						booleanToString(buf, sizeof(buf), conf->linenum_style));

	iniparser_setstring(dict, "Text:infobar_align",
						alignToString(buf, sizeof(buf), conf->infobar_align));

	iniparser_setstring(dict, "Music:musicdrv_opts", conf->musicdrv_opts);

	iniparser_setstring(dict, "Image:magnetic_scrolling",
						booleanToString(buf, sizeof(buf),
										conf->magnetic_scrolling));

	iniparser_setstring(dict, "Image:use_image_queue",
						booleanToString(buf, sizeof(buf),
										conf->use_image_queue));

	iniparser_setstring(dict, "Image:max_cache_img",
						dwordToString(buf, sizeof(buf), conf->max_cache_img));

	iniparser_setstring(dict, "Music:show_encoder_msg",
						booleanToString(buf, sizeof(buf),
										conf->show_encoder_msg));
	
	iniparser_dump_ini(dict, fp);

	fclose(fp);

	dictionary_del(dict);

	return true;
  error:
	if (fp != NULL)
		fclose(fp);
	return false;
}
Beispiel #22
0
int main(int argc, char * argv[], char * envp[]) {
    int n = 0;
    dictionary *ini = NULL, *ini_tmp = NULL;
    FILE * in = NULL ;

    if (argc < 2) {
        fprintf(stderr, "ssparser action args\n");
        return -1;
    }

    if(!strcmp(argv[1], "merge")) {
        if (argc < 4) {
            fprintf(stderr, "ssparser merge file1 file2 ...\n");
            return -1;
        }
        n = 2;
        ini = iniparser_load_from_file(argv[n]);
        if(NULL == ini) {
            fprintf(stderr, "load %s error\n", argv[n]);
            return -1;
        }
        for (n = n+1;n < argc; n++) {
            ini_tmp = iniparser_load_from_file(argv[n]);
            if(NULL == ini_tmp) {
                fprintf(stderr, "load %s error\n", argv[n]);
                return -1;
            }
            dictionary_merge(ini, ini_tmp);
            iniparser_freedict(ini_tmp);
        }

        if ((in=fopen(argv[2], "w"))==NULL) {
            fprintf(stderr, "iniparser: cannot open %s\n", argv[2]);
            iniparser_freedict(ini);
            return -1;
        }
        iniparser_dump_sh(ini, in);
        fclose(in);
        in = NULL;

        iniparser_freedict(ini);
    } else if(!strcmp(argv[1], "convert")) {
        if(argc != 4) {
            fprintf(stderr, "ssparser convert file_in json|sh|ini|update\n");
            return -1;
        }
        ini = iniparser_load_from_file(argv[2]);
        if(NULL == ini) {
            fprintf(stderr, "cannot read file:%s\n", argv[2]);
            return -1;
        }

        if(!strcmp(argv[3], "sh")) {
            iniparser_dump_sh(ini, stdout);
        } else if(!strcmp(argv[3], "ini")) {
            iniparser_dump_ini(ini, stdout);
        } else if(!strcmp(argv[3], "json")) {
            iniparser_dump_json(ini, stdout);
        } else if(!strcmp(argv[3], "update")) {
            char** env;
            for (env = envp; *env != 0; env++) {
                char* this_env = xstrdup(*env);
                char *v = strstr(this_env, "=");
                if(v != NULL) {
                    *v = '\0';
                    v += 1;
                    iniparser_find_set(ini, this_env, v);
                }
                if(this_env != NULL) {
                    free(this_env);
                }
            }

            if ((in=fopen(argv[2], "w"))==NULL) {
                fprintf(stderr, "iniparser: cannot open %s\n", argv[2]);
                iniparser_freedict(ini);
                return -1;
            }
            iniparser_dump_sh(ini, in);
            fclose(in);
            in = NULL;
        } else {
                fprintf(stderr, "output format:%s not found\n", argv[3]);
        }
        iniparser_freedict(ini);
    } else {
        fprintf(stderr, "ssparser merge|convert file1 ...");
    }

    return 0 ;
}
Beispiel #23
0
static void ini_dump(struct config *c, FILE *f)
{
    dictionary *ini = (dictionary *)c->priv;
    iniparser_dump_ini(ini, f);
}
int main(int argc, const char *argv[]) {
    
    const char* argument;
    
    long int initial_timestamp;
    float initial_lat, initial_lng, initial_alt;
    float burst_alt, ascent_rate, drag_coeff, rmswinderror;
    int descent_mode;
    int scenario_idx, n_scenarios;
    int alarm_time;
    char* endptr;       // used to check for errors on strtod calls 
    
    wind_file_cache_t* file_cache;
    dictionary*        scenario = NULL;
    
    // configure command-line options parsing
    void *options = gopt_sort(&argc, argv, gopt_start(
        gopt_option('h', 0, gopt_shorts('h', '?'), gopt_longs("help")),
        gopt_option('z', 0, gopt_shorts(0), gopt_longs("version")),
        gopt_option('v', GOPT_REPEAT, gopt_shorts('v'), gopt_longs("verbose")),
        gopt_option('o', GOPT_ARG, gopt_shorts('o'), gopt_longs("output")),
        gopt_option('k', GOPT_ARG, gopt_shorts('k'), gopt_longs("kml")),
        gopt_option('t', GOPT_ARG, gopt_shorts('t'), gopt_longs("start_time")),
        gopt_option('i', GOPT_ARG, gopt_shorts('i'), gopt_longs("data_dir")),
        gopt_option('d', 0, gopt_shorts('d'), gopt_longs("descending")),
        gopt_option('e', GOPT_ARG, gopt_shorts('e'), gopt_longs("wind_error")),
        gopt_option('a', GOPT_ARG, gopt_shorts('a'), gopt_longs("alarm"))
    ));

    if (gopt(options, 'h')) {
        // Help!
        // Print usage information
        printf("Usage: %s [options] [scenario files]\n", argv[0]);
        printf("Options:\n\n");
        printf(" -h --help               Display this information.\n");
        printf(" --version               Display version information.\n");
        printf(" -v --verbose            Display more information while running,\n");
        printf("                           Use -vv, -vvv etc. for even more verbose output.\n");
        printf(" -t --start_time <int>   Start time of model, defaults to current time.\n");
        printf("                           Should be a UNIX standard format timestamp.\n");
        printf(" -o --output <file>      Output file for CSV data, defaults to stdout. Overrides scenario.\n");
        printf(" -k --kml <file>         Output KML file.\n");
        printf(" -d --descending         We are in the descent phase of the flight, i.e. after\n");
        printf("                           burst or cutdown. burst_alt and ascent_rate ignored.\n");
        printf(" -i --data_dir <dir>     Input directory for wind data, defaults to current dir.\n\n");
        printf(" -e --wind_error <err>   RMS windspeed error (m/s).\n");
        printf(" -a --alarm <seconds>    Use alarm() to kill pred incase it hangs.\n");
        printf("The scenario file is an INI-like file giving the launch scenario. If it is\n");
        printf("omitted, the scenario is read from standard input.\n");
      exit(0);
    }

    if (gopt(options, 'z')) {
      // Version information
      printf("Landing Prediction version: %s\nCopyright (c) CU Spaceflight 2009\n", VERSION);
      exit(0);
    }

    if (gopt_arg(options, 'a', &argument) && strcmp(argument, "-")) {
      alarm_time = strtol(argument, &endptr, 0);
      if (endptr == argument) {
        fprintf(stderr, "ERROR: %s: invalid alarm length\n", argument);
        exit(1);
      }
      alarm(alarm_time);
    }
    
    verbosity = gopt(options, 'v');
    
    if (gopt(options, 'd'))
        descent_mode = DESCENT_MODE_DESCENDING;
    else
        descent_mode = DESCENT_MODE_NORMAL;
      
    if (gopt_arg(options, 'k', &argument) && strcmp(argument, "-")) {
      kml_file = fopen(argument, "wb");
      if (!kml_file) {
        fprintf(stderr, "ERROR: %s: could not open KML file for output\n", argument);
        exit(1);
      }
    }
    else
      kml_file = NULL;

    if (gopt_arg(options, 't', &argument) && strcmp(argument, "-")) {
      initial_timestamp = strtol(argument, &endptr, 0);
      if (endptr == argument) {
        fprintf(stderr, "ERROR: %s: invalid start timestamp\n", argument);
        exit(1);
      }
    } else {
      initial_timestamp = time(NULL);
    }
    
    if (!(gopt_arg(options, 'i', &data_dir) && strcmp(data_dir, "-")))
      data_dir = "./";


    // populate wind data file cache
    file_cache = wind_file_cache_new(data_dir);

    // read in flight parameters
    n_scenarios = argc - 1;
    if(n_scenarios == 0) {
        // we'll parse from std in
        n_scenarios = 1;
    }

    for(scenario_idx = 0; scenario_idx < n_scenarios; ++scenario_idx) {
        char* scenario_output = NULL;

        if(argc > scenario_idx+1) {
            scenario = iniparser_load(argv[scenario_idx+1]);
        } else {
            scenario = iniparser_loadfile(stdin);
        }

        if(!scenario) {
            fprintf(stderr, "ERROR: could not parse scanario file.\n");
            exit(1);
        }

        if(verbosity > 1) {
            fprintf(stderr, "INFO: Parsed scenario file:\n");
            iniparser_dump_ini(scenario, stderr);
        }

        scenario_output = iniparser_getstring(scenario, "output:filename", NULL);

        if (gopt_arg(options, 'o', &argument) && strcmp(argument, "-")) {
            if(verbosity > 0) {
                fprintf(stderr, "INFO: Writing output to file specified on command line: %s\n", argument);
            }
            output = fopen(argument, "wb");
            if (!output) {
                fprintf(stderr, "ERROR: %s: could not open CSV file for output\n", argument);
                exit(1);
            }
        } else if (scenario_output != NULL) {
            if(verbosity > 0) {
                fprintf(stderr, "INFO: Writing output to file specified in scenario: %s\n", scenario_output);
            }
            output = fopen(scenario_output, "wb");
            if (!output) {
                fprintf(stderr, "ERROR: %s: could not open CSV file for output\n", scenario_output);
                exit(1);
            }
        } else {
            if(verbosity > 0) {
                fprintf(stderr, "INFO: Writing output to stdout.\n");
            }
            output = stdout;
        }

        // write KML header
        if (kml_file)
            start_kml();

        // The observant amongst you will notice that there are default values for
        // *all* keys. This information should not be spread around too well.
        // Unfortunately, this means we lack some error checking.

        initial_lat = iniparser_getdouble(scenario, "launch-site:latitude", 0.0);
        initial_lng = iniparser_getdouble(scenario, "launch-site:longitude", 0.0);
        initial_alt = iniparser_getdouble(scenario, "launch-site:altitude", 0.0);

        ascent_rate = iniparser_getdouble(scenario, "altitude-model:ascent-rate", 1.0);

        // The 1.1045 comes from a magic constant buried in
        // ~cuspaceflight/public_html/predict/index.php.
        drag_coeff = iniparser_getdouble(scenario, "altitude-model:descent-rate", 1.0) * 1.1045;

        burst_alt = iniparser_getdouble(scenario, "altitude-model:burst-altitude", 1.0);

        rmswinderror = iniparser_getdouble(scenario, "atmosphere:wind-error", 0.0);
        if(gopt_arg(options, 'e', &argument) && strcmp(argument, "-")) {
            rmswinderror = strtod(argument, &endptr);
            if (endptr == argument) {
                fprintf(stderr, "ERROR: %s: invalid RMS wind speed error\n", argument);
                exit(1);
            }
        }

        {
            int year, month, day, hour, minute, second;
            year = iniparser_getint(scenario, "launch-time:year", -1);
            month = iniparser_getint(scenario, "launch-time:month", -1);
            day = iniparser_getint(scenario, "launch-time:day", -1);
            hour = iniparser_getint(scenario, "launch-time:hour", -1);
            minute = iniparser_getint(scenario, "launch-time:minute", -1);
            second = iniparser_getint(scenario, "launch-time:second", -1);

            if((year >= 0) && (month >= 0) && (day >= 0) && (hour >= 0)
                    && (minute >= 0) && (second >= 0)) 
            {
                struct tm timeval = { 0 };
                time_t scenario_launch_time = -1;

                if(verbosity > 0) {
                    fprintf(stderr, "INFO: Using launch time from scenario: "
                            "%i/%i/%i %i:%i:%i\n",
                            year, month, day, hour, minute, second);
                }

                timeval.tm_sec = second;
                timeval.tm_min = minute;
                timeval.tm_hour = hour;
                timeval.tm_mday = day; /* 1 - 31 */
                timeval.tm_mon = month - 1; /* 0 - 11 */
                timeval.tm_year = year - 1900; /* f**k you Millenium Bug! */

#ifndef _BSD_SOURCE
#               warning This version of mktime does not allow explicit setting of timezone. 
#else
                timeval.tm_zone = "UTC";
#endif

                scenario_launch_time = mktime(&timeval);
                if(scenario_launch_time <= 0) {
                    fprintf(stderr, "ERROR: Launch time in scenario is invalid\n");
                    exit(1);
                } else {
                    initial_timestamp = scenario_launch_time;
                }
            }
        }

        if(verbosity > 0) {
            fprintf(stderr, "INFO: Scenario loaded:\n");
            fprintf(stderr, "    - Initial latitude  : %lf deg N\n", initial_lat);
            fprintf(stderr, "    - Initial longitude : %lf deg E\n", initial_lng);
            fprintf(stderr, "    - Initial altitude  : %lf m above sea level\n", initial_alt);
            fprintf(stderr, "    - Initial timestamp : %li\n", initial_timestamp);
            fprintf(stderr, "    - Drag coeff.       : %lf\n", drag_coeff);
            if(!descent_mode) {
                fprintf(stderr, "    - Ascent rate       : %lf m/s\n", ascent_rate);
                fprintf(stderr, "    - Burst alt.        : %lf m\n", burst_alt);
            }
            fprintf(stderr, "    - Windspeed err.    : %f m/s\n", rmswinderror);
        }
        
        {
            // do the actual stuff!!
            altitude_model_t* alt_model = altitude_model_new(descent_mode, burst_alt, 
                                                             ascent_rate, drag_coeff);
            if(!alt_model) {
                    fprintf(stderr, "ERROR: error initialising altitude profile\n");
                    exit(1);
            }

            if (!run_model(file_cache, alt_model, 
                           initial_lat, initial_lng, initial_alt, initial_timestamp,
                           rmswinderror)) {
                    fprintf(stderr, "ERROR: error during model run!\n");
                    exit(1);
            }

            altitude_model_free(alt_model);
        }

        // release the scenario
        iniparser_freedict(scenario);
        
        // write footer to KML and close output files
        if (kml_file) {
            finish_kml();
            fclose(kml_file);
        }

        if (output != stdout) {
            fclose(output);
        }
    }

    // release gopt data, 
    gopt_free(options);

    // release the file cache resources.
    wind_file_cache_free(file_cache);

    return 0;
}
/*  ...
 */
void CBaIniParse::TwistedIni() {

   IBaIniParser *pNewHdl = 0;
   dictionary   *pOrgHdl = 0;
   std::string   tmp;

   CPPUNIT_ASSERT(!IBaIniParserCreate("You/Shall/Not/Path"));
   CPPUNIT_ASSERT(!iniparser_load("You/Shall/Not/Path"));
   CPPUNIT_ASSERT(!IBaIniParserCreate(ERRORINI));
   CPPUNIT_ASSERT(!iniparser_load(ERRORINI));

   CPPUNIT_ASSERT(!iniparser_load(OFKEYINI));
   CPPUNIT_ASSERT(!IBaIniParserCreate(OFKEYINI));


   CPPUNIT_ASSERT(!IBaIniParserCreate(OFVALINI));
   CPPUNIT_ASSERT(!iniparser_load(OFVALINI));

   pNewHdl = IBaIniParserCreate(TWISTEDINI);
   pOrgHdl = iniparser_load(TWISTEDINI);
   CPPUNIT_ASSERT(pNewHdl);
   CPPUNIT_ASSERT(pOrgHdl);

   pNewHdl->Dump(stdout);
   std::cout << "a==============================================================\n\n";
   iniparser_dump(pOrgHdl, stdout);
   std::cout << "a==============================================================\n\n";

   pNewHdl->DumpIni(stdout);
   std::cout << "a==============================================================\n\n";
   iniparser_dump_ini(pOrgHdl, stdout);


   CPPUNIT_ASSERT_EQUAL(
         (bool) iniparser_find_entry(pOrgHdl, "open["),
         pNewHdl->Exists("open["));

   // Multi-lines
   tmp = pNewHdl->GetString("multi:multi line key", "");
   CPPUNIT_ASSERT_MESSAGE(tmp, tmp == "multi line value");
   tmp = pNewHdl->GetString("multi:visible", "");
   CPPUNIT_ASSERT_MESSAGE(tmp, tmp == "1");
   tmp = pNewHdl->GetString("multi:a", "");
   CPPUNIT_ASSERT_MESSAGE(tmp, tmp == "beginend");
   tmp = pNewHdl->GetString("multi:c", "");
   CPPUNIT_ASSERT_MESSAGE(tmp, tmp == "begin  end");

   CPPUNIT_ASSERT(IBaIniParserDestroy(pNewHdl));
   iniparser_freedict(pOrgHdl);
   pNewHdl = 0;
   pOrgHdl = 0;

   pNewHdl = IBaIniParserCreate(0);
   pOrgHdl = dictionary_new(10);
   CPPUNIT_ASSERT(pNewHdl);
   CPPUNIT_ASSERT(pOrgHdl);

   CPPUNIT_ASSERT_EQUAL(pNewHdl->Set(0, 0), !iniparser_set(pOrgHdl, 0, 0));

   CPPUNIT_ASSERT_EQUAL(pNewHdl->Set("section", 0),
         !iniparser_set(pOrgHdl, "section", 0));

   CPPUNIT_ASSERT_EQUAL(pNewHdl->Set("section:key", "value"),
         !iniparser_set(pOrgHdl, "section:key", "value"));

   tmp = pNewHdl->GetString("section:key", 0);
   CPPUNIT_ASSERT_MESSAGE(tmp, tmp == iniparser_getstring(pOrgHdl, "section:key", 0));

   /* reset the key's value*/
   CPPUNIT_ASSERT_EQUAL(pNewHdl->Set("section:key", 0),
         !iniparser_set(pOrgHdl, "section:key", 0));

   tmp = iniparser_getstring(pOrgHdl, "section:key", "dummy") ?
         iniparser_getstring(pOrgHdl, "section:key", "dummy") : "";
   CPPUNIT_ASSERT_MESSAGE(tmp, tmp == pNewHdl->GetString("section:key", "dummy"));
   CPPUNIT_ASSERT_EQUAL(pNewHdl->Set("section:key", "value"),
         !iniparser_set(pOrgHdl, "section:key", "value"));

   tmp = pNewHdl->GetString("section:key", 0);
   CPPUNIT_ASSERT_MESSAGE(tmp, tmp == iniparser_getstring(pOrgHdl, "section:key", 0));

   iniparser_unset(pOrgHdl, "section:key");
   pNewHdl->Reset("section:key");

   tmp = pNewHdl->GetString("section:key",  "dummy");
   CPPUNIT_ASSERT_MESSAGE(tmp, tmp == iniparser_getstring(pOrgHdl, "section:key",  "dummy"));

   CPPUNIT_ASSERT_EQUAL(pNewHdl->Set("section:key", 0), !iniparser_set(pOrgHdl, "section:key", 0));
   CPPUNIT_ASSERT_EQUAL(pNewHdl->Set("section:key1", 0), !iniparser_set(pOrgHdl, "section:key1", 0));
   CPPUNIT_ASSERT_EQUAL(pNewHdl->Set("section:key2", 0), !iniparser_set(pOrgHdl, "section:key2", 0));

}
Beispiel #26
0
Datei: util.c Projekt: odmann/mca
int
parse_ini_file(char *key, char *def, char *val, char *res)
{
	FILE		*fd;
	dictionary	*d;
	int		ini_update = 0;
	char		section[256] = {0};

	switch( check_inifile() ) {
	case 0:
		return 0;
	case 1:
		return 1;
	case 2:
		ini_cur = ini_default;
		d = iniparser_load(ini_default);
		if (d) {
			fd = fopen(ini_name, "w");
			if (fd) {
				iniparser_dump_ini(d, fd);
				fclose(fd);
				iniparser_freedict(d);
				ini_cur = ini_name;
				ini_update = 1;
				break;
			}
		} else {
			fprintf(stderr, "cannot parse file: %s\n",ini_cur);
		}
		return 0;
		break;
	case 3:
		ini_cur = ini_name;
		break;
	case 4:
		ini_cur = "/mnt/sd/mcaboot.ini";
		break;
	default:
		break;
	}

	d = iniparser_load(ini_cur);
	if (!d) {
		fprintf(stderr, "cannot parse file: %s\n", ini_cur);
		return -1;
	}

	if (key && val) {
		char *s = iniparser_getstring(d, key, NULL);
		if (s) {
			if (strcmp(s, val)) {
				iniparser_set(d, key, val);
				ini_update = 1;
			}
		} else {
			iniparser_get_section_string(key, section);
			iniparser_set(d, section, NULL);
			iniparser_set(d, key, val);
			ini_update = 1;
		}
	}

	if (key && res) {
		char *s = iniparser_getstring(d, key, def);
		strcpy(res, s);
	}

	if (ini_update) {
		fd = fopen(ini_name, "w");
		if (fd) {
			iniparser_dump_ini(d, fd);
			fflush(fd);
			fclose(fd);
		}
	}
	iniparser_freedict(d);
	return 0;
}