/** ****************************************************************************** * @brief 从配置文件中获取服务器ip字符串 * @param[out] *pserverip : 返回服务器ip字符串 * * @retval -1 失败 * @retval 0 成功 ****************************************************************************** */ int ini_get_server_ip(char * pserverip) { dictionary * ini ; char *pstr = NULL; ini = iniparser_load(DEFAULT_INI_FILE); if (NULL == ini) { create_example_ini_file(); ini = iniparser_load(DEFAULT_INI_FILE); if (ini == NULL) { return -1; } } iniparser_dump(ini, NULL); pstr = iniparser_getstring(ini, "client:ip", NULL); if (pstr == NULL) { return -1; } strncpy(pserverip, pstr, 16); //ip字符串最长16字节 iniparser_freedict(ini); return 0; }
int main(int argc, char * argv[]) { int status ; if (argc<2) { create_example_ini_file(); status = parse_ini_file("example.ini"); } else { status = parse_ini_file(argv[1]); } return status ; }
/* ... */ void CBaIniParse::CTest() { CPPUNIT_ASSERT(true); create_example_ini_file(); TBaIniParseHdl hdl = BaIniParseCreate(EXINI); CPPUNIT_ASSERT(hdl); BaIniParseDump(hdl, stdout); BaIniParseDumpIni(hdl, stdout); CPPUNIT_ASSERT(BaIniParseGetBool(hdl, "pizza:ham", false)); CPPUNIT_ASSERT_EQUAL(BaIniParseGetInt(hdl, "pizza:capres", 1), 0); CPPUNIT_ASSERT_DOUBLES_EQUAL(BaIniParseGetDouble(hdl, "wine:alcohol", 0.0), 12.5, 0.0001); std::string tmp = BaIniParseGetString(hdl, "extra", "BAD"); CPPUNIT_ASSERT_MESSAGE(BaIniParseGetString(hdl, "extra", "BAD"), tmp == "glass"); // Look for bad entry and check default tmp = BaIniParseGetString(hdl, ":", "BAD"); CPPUNIT_ASSERT_MESSAGE(BaIniParseGetString(hdl, ":", "BAD"), tmp == "BAD"); }
/** ****************************************************************************** * @brief 从配置文件中获取路由器牌子 * @param[out] *pserverip : 返回type * * @retval -1 失败 * @retval 0 成功 ****************************************************************************** */ int ini_get_log_type(int *ptype) { dictionary * ini ; ini = iniparser_load(DEFAULT_INI_FILE); if (NULL == ini) { create_example_ini_file(); ini = iniparser_load(DEFAULT_INI_FILE); if (ini == NULL) { return -1; } } iniparser_dump(ini, NULL);//stderr *ptype = iniparser_getint(ini, "client:type", -1); iniparser_freedict(ini); return 0; }
/** ****************************************************************************** * @brief 从配置文件中获取是否记入日志标志 * @param[out] *pserverip : 返回服务器ip字符串 * * @retval -1 失败 * @retval 0 成功 ****************************************************************************** */ int ini_get_log_flag(char *pflag) { dictionary * ini ; ini = iniparser_load(DEFAULT_INI_FILE); if (NULL == ini) { create_example_ini_file(); ini = iniparser_load(DEFAULT_INI_FILE); if (ini == NULL) { return -1; } } iniparser_dump(ini, NULL);//stderr *pflag = (char)iniparser_getboolean(ini, "client:log", -1); iniparser_freedict(ini); return 0; }
/** ****************************************************************************** * @brief 从配置文件中获取服务器端口 * @param[out] *pserverip : 返回服务器ip字符串 * * @retval -1 失败 * @retval 0 成功 ****************************************************************************** */ int ini_get_server_port(unsigned short *pport) { dictionary * ini ; ini = iniparser_load(DEFAULT_INI_FILE); if (NULL == ini) { create_example_ini_file(); ini = iniparser_load(DEFAULT_INI_FILE); if (ini == NULL) { return -1; } } iniparser_dump(ini, NULL); *pport = (unsigned short)iniparser_getint(ini, "client:port", -1); iniparser_freedict(ini); return 0; }
/* ... */ void CBaIniParse::CPPTest() { CPPUNIT_ASSERT(true); create_example_ini_file(); IBaIniParser *pHdl = IBaIniParserCreate(EXINI); CPPUNIT_ASSERT(pHdl); pHdl->Dump(stdout); pHdl->DumpIni(stdout); CPPUNIT_ASSERT(pHdl->GetBool("pizza:ham", false)); CPPUNIT_ASSERT_EQUAL(pHdl->GetInt("pizza:capres", 1), 0); CPPUNIT_ASSERT_EQUAL((uint32_t) pHdl->GetInt("LargerThanInt", 0), (uint32_t)2147483650); CPPUNIT_ASSERT_EQUAL(pHdl->GetInt("NegInt", 0), -2); CPPUNIT_ASSERT_DOUBLES_EQUAL(pHdl->GetDouble("wine:alcohol", 0.0), 12.5, 0.0001); CPPUNIT_ASSERT_MESSAGE(pHdl->GetString("extra", "BAD"), pHdl->GetString("extra", "BAD") == "glass"); // Look for bad entry and check default CPPUNIT_ASSERT_MESSAGE(pHdl->GetString(":", "BAD"), pHdl->GetString(":", "BAD") == "BAD"); }
/** ****************************************************************************** * @brief 从配置文件中获取文件合并信息 * @param[out] *pinfo : 返回info * * @retval -1 失败 * @retval 0 成功 ****************************************************************************** */ int ini_get_info(filejoint_ini_t *pinfo) { dictionary * ini ; char *pstr = NULL; char ftmp[32]; int i; memset(pinfo, 0x00, sizeof(*pinfo)); ini = iniparser_load(DEFAULT_INI_FILE); if (NULL == ini) { create_example_ini_file(); ini = iniparser_load(DEFAULT_INI_FILE); if (ini == NULL) { return -1; } } iniparser_dump(ini, NULL);//stderr pinfo->files = iniparser_getint(ini, "cfg:Files", -1); if ((pinfo->files > DEFAULT_MAX_FILE) || (pinfo->files <= 0)) { iniparser_freedict(ini); return -1; } pinfo->blank = iniparser_getint(ini, "cfg:Blank", -1); if (pinfo->blank < 0) { iniparser_freedict(ini); return -1; } if (pinfo->blank > 255) { pinfo->blank = 255; } pinfo->islog = iniparser_getint(ini, "cfg:IsLog", -1); if (pinfo->islog == -1) { iniparser_freedict(ini); return -1; } pstr = iniparser_getstring(ini, "cfg:LogFile", NULL); if (pstr == NULL) { iniparser_freedict(ini); return -1; } strncpy(pinfo->logfile, pstr, sizeof(pinfo->logfile)); pstr = iniparser_getstring(ini, "cfg:OutFile", NULL); if (pstr == NULL) { strncpy(pinfo->outfile, DEFAULT_DEST_FILE, sizeof(pinfo->outfile)); } else { strncpy(pinfo->outfile, pstr, sizeof(pinfo->logfile)); } /* 扫描所以文件 */ for (i = 0; i < pinfo->files; i++) { sprintf(ftmp, "f%d:FileName", i + 1); pstr = iniparser_getstring(ini, ftmp, NULL); if (pstr == NULL) { iniparser_freedict(ini); return -1; } strncpy(pinfo->file[i].filename, pstr, sizeof(pinfo->file[i].filename)); sprintf(ftmp, "f%d:FileMaxSize", i + 1); pinfo->file[i].filemaxsize = iniparser_getint(ini, ftmp, -1); if (pinfo->file[i].filemaxsize == -1) { iniparser_freedict(ini); return -1; } } iniparser_freedict(ini); return 0; }