亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? inifileop_main.c

?? window ce.net ini文件讀寫
?? C
字號:

/**********************************************************************
* 函數名稱: ConfigGetKey
* 功能描述: 獲得key的值
* 訪問的表: 無
* 修改的表: 無
* 輸入參數: void *CFG_file 文件;void *section 項值;void *key 鍵值
* 輸出參數: void *buf key的值
* 返 回 值: 0 --- ok 非0 --- error 
* 其它說明: 無
* 修改日期        版本號     修改人       修改內容
* -----------------------------------------------
* 2005/6/23        V1.0      廖月旺        創建
* 
***********************************************************************/
int  ConfigGetKey(void *CFG_file, void *section, void *key, void *buf)
{ 
	FILE *fp; 
	char buf1[MAX_CFG_BUF + 1], buf2[MAX_CFG_BUF + 1]; 
	char *key_ptr, *val_ptr; 
	int  line_no, n, ret; 
	
	line_no = 0; 
	CFG_section_line_no = 0; 
	CFG_key_line_no = 0; 
	CFG_key_lines = 0; 
	
	if((fp = fopen((char *)CFG_file, "rb")) == NULL) return CFG_ERR_OPEN_FILE; 
	
	while(1)                                       /* 搜找項section */ 
	{ 
		ret = CFG_ERR_READ_FILE; 
		n = FileGetLine(fp, buf1, MAX_CFG_BUF); 
		if(n < -1) goto r_cfg_end; 
		ret = CFG_SECTION_NOT_FOUND; 
		if(n < 0) goto r_cfg_end;                    /* 文件尾,未發現 */ 
		line_no++; 
		n = strlen(strtriml(strtrimr(buf1))); 
		if(n == 0 || buf1[0] == CFG_nts) continue;       /* 空行 或 注釋行 */ 
		ret = CFG_ERR_FILE_FORMAT; 
		if(n > 2 && ((buf1[0] == CFG_ssl && buf1[n-1] != CFG_ssr))) 
			goto r_cfg_end; 
		if(buf1[0] == CFG_ssl) 
		{ 
			buf1[n-1] = 0x00; 
			if(strcmp(buf1+1, section) == 0) 
				break;                                   /* 找到項section */ 
		} 
	} 
	CFG_section_line_no = line_no; 
	while(1)                                       /* 搜找key */ 
	{ 
		ret = CFG_ERR_READ_FILE; 
		n = FileGetLine(fp, buf1, MAX_CFG_BUF); 
		if(n < -1) goto r_cfg_end; 
		ret = CFG_KEY_NOT_FOUND; 
		if(n < 0) goto r_cfg_end;                    /* 文件尾,未發現key */ 
		line_no++; 
		CFG_key_line_no = line_no; 
		CFG_key_lines = 1; 
		n = strlen(strtriml(strtrimr(buf1))); 
		if(n == 0 || buf1[0] == CFG_nts) continue;       /* 空行 或 注釋行 */ 
		ret = CFG_KEY_NOT_FOUND; 
		if(buf1[0] == CFG_ssl) goto r_cfg_end; 
		if(buf1[n-1] == '+')                         /* 遇+號表示下一行繼續  */ 
		{ 
			buf1[n-1] = 0x00; 
			while(1) 
			{ 
				ret = CFG_ERR_READ_FILE; 
				n = FileGetLine(fp, buf2, MAX_CFG_BUF); 
				if(n < -1) goto r_cfg_end; 
				if(n < 0) break;                         /* 文件結束 */ 
				line_no++; 
				CFG_key_lines++; 
				n = strlen(strtrimr(buf2)); 
				ret = CFG_ERR_EXCEED_BUF_SIZE; 
				if(n > 0 && buf2[n-1] == '+')            /* 遇+號表示下一行繼續 */ 
				{ 
					buf2[n-1] = 0x00; 
					if(strlen(buf1) + strlen(buf2) > MAX_CFG_BUF) 
						goto r_cfg_end; 
					strcat(buf1, buf2); 
					continue; 
				} 
				if(strlen(buf1) + strlen(buf2) > MAX_CFG_BUF) 
					goto r_cfg_end; 
				strcat(buf1, buf2); 
				break; 
			} 
		} 
		ret = CFG_ERR_FILE_FORMAT; 
		if(SplitKeyValue(buf1, &key_ptr, &val_ptr) != 1) 
			goto r_cfg_end; 
		strtriml(strtrimr(key_ptr)); 
		if(strcmp(key_ptr, key) != 0) 
			continue;                                  /* 和key值不匹配 */ 
		strcpy(buf, val_ptr); 
		break; 
	} 
	ret = CFG_OK; 
r_cfg_end: 
	if(fp != NULL) fclose(fp); 
	return ret; 
} 

/**********************************************************************
* 函數名稱: ConfigSetKey
* 功能描述: 設置key的值
* 訪問的表: 無
* 修改的表: 無
* 輸入參數: void *CFG_file 文件;void *section 項值;
* 			 void *key 鍵值;void *buf key的值
* 輸出參數: 無
* 返 回 值:   0 --- ok 非0 --- error 
* 其它說明: 無
* 修改日期        版本號     修改人       修改內容
* -----------------------------------------------
* 2005/6/23        V1.0      廖月旺        創建
* 
***********************************************************************/
int  ConfigSetKey(void *CFG_file, void *section, void *key, void *buf)
{ 
	FILE *fp1, *fp2; 
	char buf1[MAX_CFG_BUF + 1]; 
	int  line_no, line_no1, n, ret, ret2; 
	char *tmpfname; 
	
	ret = ConfigGetKey(CFG_file, section, key, buf1); 
	if(ret <= CFG_ERR && ret != CFG_ERR_OPEN_FILE) return ret; 
	if(ret == CFG_ERR_OPEN_FILE || ret == CFG_SECTION_NOT_FOUND) 
	{ 
		
		if((fp1 = fopen((char *)CFG_file, "a")) == NULL) 
			
			return CFG_ERR_CREATE_FILE; 
		
		if(fprintf(fp1, "%c%s%c\n", CFG_ssl, section, CFG_ssr) == EOF) 
		{ 
			fclose(fp1); 
			return CFG_ERR_WRITE_FILE; 
		} 
		if(fprintf(fp1, "%s=%s\n", key, buf) == EOF) 
		{ 
			fclose(fp1); 
			return CFG_ERR_WRITE_FILE; 
		} 
		fclose(fp1); 
		return CFG_OK; 
	} 
	if((tmpfname = tmpnam(NULL)) == NULL) 
		return CFG_ERR_CREATE_FILE; 
	
	if((fp2 = fopen(tmpfname, "w")) == NULL) 
		
		return CFG_ERR_CREATE_FILE; 
	ret2 = CFG_ERR_OPEN_FILE; 
	
	if((fp1 = fopen((char *)CFG_file, "rb")) == NULL) goto w_cfg_end; 
	
	if(ret == CFG_KEY_NOT_FOUND) 
		line_no1 = CFG_section_line_no; 
	else /* ret = CFG_OK */ 
		line_no1 = CFG_key_line_no - 1; 
	for(line_no = 0; line_no < line_no1; line_no++) 
	{ 
		ret2 = CFG_ERR_READ_FILE; 
		n = FileGetLine(fp1, buf1, MAX_CFG_BUF); 
		if(n < 0) goto w_cfg_end; 
		ret2 = CFG_ERR_WRITE_FILE; 
		if(fprintf(fp2, "%s\n", buf1) == EOF) goto w_cfg_end; 
	} 
	if(ret != CFG_KEY_NOT_FOUND) 
		for( ; line_no < line_no1+CFG_key_lines; line_no++) 
		{ 
			ret2 = CFG_ERR_READ_FILE; 
			n = FileGetLine(fp1, buf1, MAX_CFG_BUF); 
			if(n < 0) goto w_cfg_end; 
		} 
		ret2 = CFG_ERR_WRITE_FILE; 
		if(fprintf(fp2, "%s=%s\n", key, buf) == EOF) goto w_cfg_end; 
		while(1) 
		{ 
			ret2 = CFG_ERR_READ_FILE; 
			n = FileGetLine(fp1, buf1, MAX_CFG_BUF); 
			if(n < -1) goto w_cfg_end; 
			if(n < 0) break; 
			ret2 = CFG_ERR_WRITE_FILE; 
			if(fprintf(fp2, "%s\n", buf1) == EOF) goto w_cfg_end; 
		} 
		ret2 = CFG_OK; 
w_cfg_end: 
		if(fp1 != NULL) fclose(fp1); 
		if(fp2 != NULL) fclose(fp2); 
		if(ret2 == CFG_OK) 
		{ 
			ret = FileCopy(tmpfname, CFG_file); 
			if(ret != 0) return CFG_ERR_CREATE_FILE; 
		} 
		remove(tmpfname); 
		return ret2; 
} 

/**********************************************************************
* 函數名稱: ConfigGetSections
* 功能描述: 獲得所有section
* 訪問的表: 無
* 修改的表: 無
* 輸入參數: void *CFG_file 文件
* 輸出參數: char *sections[] 存放section名字
* 返 回 值: 返回section個數。若出錯,返回負數。
* 其它說明: 無
* 修改日期        版本號     修改人       修改內容
* -----------------------------------------------
* 2005/6/23        V1.0      廖月旺        創建
* 
***********************************************************************/
int  ConfigGetSections(void *CFG_file, char *sections[])
{ 
	FILE *fp; 
	char buf1[MAX_CFG_BUF + 1]; 
	int  n, n_sections = 0, ret; 
	
	
	if((fp = fopen(CFG_file, "rb")) == NULL) return CFG_ERR_OPEN_FILE; 
	
	while(1)                                       /*搜找項section */ 
	{ 
		ret = CFG_ERR_READ_FILE; 
		n = FileGetLine(fp, buf1, MAX_CFG_BUF); 
		if(n < -1) goto cfg_scts_end; 
		if(n < 0) break;                             /* 文件尾 */ 
		n = strlen(strtriml(strtrimr(buf1))); 
		if(n == 0 || buf1[0] == CFG_nts) continue;       /* 空行 或 注釋行 */ 
		ret = CFG_ERR_FILE_FORMAT; 
		if(n > 2 && ((buf1[0] == CFG_ssl && buf1[n-1] != CFG_ssr))) 
			goto cfg_scts_end; 
		if(buf1[0] == CFG_ssl) 
		{ 
			buf1[n-1] = 0x00; 
			strcpy(sections[n_sections], buf1+1); 
			n_sections++; 
		} 
	} 
	ret = n_sections; 
cfg_scts_end: 
	if(fp != NULL) fclose(fp); 
	return ret; 
} 

/**********************************************************************
* 函數名稱: ConfigGetKeys
* 功能描述: 獲得所有key的名字(key=value形式, value可用加號表示續行)
* 訪問的表: 無
* 修改的表: 無
* 輸入參數: void *CFG_file 文件 void *section 項值
* 輸出參數: char *keys[] 存放key名字
* 返 回 值: 返回key個數。若出錯,返回負數。
* 其它說明: 無
* 修改日期        版本號     修改人       修改內容
* -----------------------------------------------
* 2005/6/23        V1.0      廖月旺        創建
* 
***********************************************************************/
int  ConfigGetKeys(void *CFG_file, void *section, char *keys[])
{ 
	FILE *fp; 
	char buf1[MAX_CFG_BUF + 1], buf2[MAX_CFG_BUF + 1]; 
	char *key_ptr, *val_ptr; 
	int  n, n_keys = 0, ret; 
	
	
	if((fp = fopen(CFG_file, "rb")) == NULL) return CFG_ERR_OPEN_FILE; 
	
	while(1)                                       /* 搜找項section */ 
	{ 
		ret = CFG_ERR_READ_FILE; 
		n = FileGetLine(fp, buf1, MAX_CFG_BUF); 
		if(n < -1) goto cfg_keys_end; 
		ret = CFG_SECTION_NOT_FOUND; 
		if(n < 0) goto cfg_keys_end;                 /* 文件尾 */ 
		n = strlen(strtriml(strtrimr(buf1))); 
		if(n == 0 || buf1[0] == CFG_nts) continue;       /* 空行 或 注釋行 */ 
		ret = CFG_ERR_FILE_FORMAT; 
		if(n > 2 && ((buf1[0] == CFG_ssl && buf1[n-1] != CFG_ssr))) 
			goto cfg_keys_end; 
		if(buf1[0] == CFG_ssl) 
		{ 
			buf1[n-1] = 0x00; 
			if(strcmp(buf1+1, section) == 0) 
				break;                                   /* 找到項section */ 
		} 
	} 
	while(1) 
	{ 
		ret = CFG_ERR_READ_FILE; 
		n = FileGetLine(fp, buf1, MAX_CFG_BUF); 
		if(n < -1) goto cfg_keys_end; 
		if(n < 0) break;                             /* 文件尾 */ 
		n = strlen(strtriml(strtrimr(buf1))); 
		if(n == 0 || buf1[0] == CFG_nts) continue;       /* 空行 或 注釋行 */ 
		ret = CFG_KEY_NOT_FOUND; 
		if(buf1[0] == CFG_ssl) 
			break;                                     /* 另一個 section */ 
		if(buf1[n-1] == '+')                         /* 遇+號表示下一行繼續 */ 
		{ 
			buf1[n-1] = 0x00; 
			while(1) 
			{ 
				ret = CFG_ERR_READ_FILE; 
				n = FileGetLine(fp, buf2, MAX_CFG_BUF); 
				if(n < -1) goto cfg_keys_end; 
				if(n < 0) break;                         /* 文件尾 */ 
				n = strlen(strtrimr(buf2)); 
				ret = CFG_ERR_EXCEED_BUF_SIZE; 
				if(n > 0 && buf2[n-1] == '+')            /* 遇+號表示下一行繼續 */ 
				{ 
					buf2[n-1] = 0x00; 
					if(strlen(buf1) + strlen(buf2) > MAX_CFG_BUF) 
						goto cfg_keys_end; 
					strcat(buf1, buf2); 
					continue; 
				} 
				if(strlen(buf1) + strlen(buf2) > MAX_CFG_BUF) 
					goto cfg_keys_end; 
				strcat(buf1, buf2); 
				break; 
			} 
		} 
		ret = CFG_ERR_FILE_FORMAT; 
		if(SplitKeyValue(buf1, &key_ptr, &val_ptr) != 1) 
			goto cfg_keys_end; 
		strtriml(strtrimr(key_ptr));
		strcpy(keys[n_keys], key_ptr); 
		n_keys++; 
	} 
	ret = n_keys; 
cfg_keys_end: 
	if(fp != NULL) fclose(fp); 
	return ret; 
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本一区二区免费在线| 亚洲欧美日韩小说| 欧美一区二区福利在线| 欧美片在线播放| 欧美日韩一区二区欧美激情| 色综合久久久久综合体| av中文字幕亚洲| 国产91精品久久久久久久网曝门 | 秋霞影院一区二区| 午夜精品久久久久久久99水蜜桃| 亚洲激情第一区| 亚洲人成伊人成综合网小说| 一区二区国产视频| 日本欧洲一区二区| 国产在线精品一区在线观看麻豆| 国产在线一区观看| 91免费版pro下载短视频| 欧美日韩精品欧美日韩精品| 欧美日韩黄色影视| 精品噜噜噜噜久久久久久久久试看| 亚洲精品一区二区三区香蕉| 国产欧美日韩综合精品一区二区 | 日本不卡123| 成人高清伦理免费影院在线观看| 欧美综合一区二区三区| 久久综合99re88久久爱| 亚洲免费在线视频| 国产精品自在在线| 欧美三级视频在线播放| 欧美经典一区二区| 午夜精品久久久久| 成人国产亚洲欧美成人综合网| 在线视频国产一区| 久久蜜桃av一区精品变态类天堂| 亚洲欧美一区二区三区极速播放| 免费成人在线网站| 欧美色综合天天久久综合精品| 亚洲国产精华液网站w| 琪琪一区二区三区| 欧美三级日韩三级| 国产精品美女久久久久久| 美腿丝袜亚洲三区| 这里只有精品电影| 亚洲一区二三区| 欧美私模裸体表演在线观看| 国产精品国产三级国产普通话三级| 五月激情综合色| 欧美日韩视频一区二区| 亚洲欧美日韩久久| 北条麻妃国产九九精品视频| 欧美极品美女视频| 99久久精品国产网站| 国产欧美日韩久久| 丰满岳乱妇一区二区三区| 精品欧美久久久| 国产在线精品一区二区不卡了| 日韩欧美在线一区二区三区| 日韩精品色哟哟| 欧美一区二区三区四区高清 | 国产精品沙发午睡系列990531| 91在线丨porny丨国产| 亚洲青青青在线视频| 99久久久国产精品免费蜜臀| 国产精品高潮久久久久无| 91在线观看免费视频| 亚洲在线观看免费视频| 日韩欧美一区二区视频| 韩国午夜理伦三级不卡影院| 国产视频在线观看一区二区三区| 丁香婷婷深情五月亚洲| 国产精品高潮久久久久无| 在线亚洲一区二区| 奇米影视一区二区三区| 国产午夜精品福利| 欧美在线综合视频| 精品在线观看视频| 1024亚洲合集| 91精品国产综合久久精品图片| 精品在线亚洲视频| 玉米视频成人免费看| 日韩免费看网站| 在线视频欧美精品| 国产一本一道久久香蕉| 亚洲高清免费视频| 日韩理论片一区二区| 在线免费视频一区二区| 国产伦精品一区二区三区免费迷 | 亚洲资源在线观看| 国产三级一区二区三区| 欧美亚洲动漫另类| 成人理论电影网| 国产成人精品三级| 久久99国内精品| 蜜臀久久99精品久久久久宅男| 中文字幕佐山爱一区二区免费| 精品国产麻豆免费人成网站| 制服丝袜激情欧洲亚洲| 欧美精品欧美精品系列| 日本道免费精品一区二区三区| 成人性色生活片| 亚洲va国产va欧美va观看| 一区二区在线观看免费视频播放| 欧美经典一区二区| 国产精品色哟哟| 国产精品美日韩| 国产免费观看久久| 欧美激情艳妇裸体舞| 国产精品久久福利| 亚洲欧美另类图片小说| 亚洲欧美aⅴ...| 中文字幕色av一区二区三区| 亚洲视频狠狠干| 一区二区三区高清| 亚洲网友自拍偷拍| 日韩主播视频在线| 国产一区视频网站| 91社区在线播放| 欧美亚洲自拍偷拍| 日韩精品在线一区二区| 欧美电视剧免费观看| 国产校园另类小说区| 综合分类小说区另类春色亚洲小说欧美| 中文字幕亚洲在| 亚洲成人综合网站| 国产精品一区二区在线看| 99久久精品免费看| 91精品国产一区二区三区| 久久久99久久| 亚洲成人自拍网| 国产在线不卡视频| 欧美午夜精品久久久| 久久色.com| 日韩中文字幕av电影| 成人激情黄色小说| 欧美一区二区三区不卡| 亚洲人成人一区二区在线观看| 日韩高清中文字幕一区| 成人性生交大合| 久久亚洲精华国产精华液| 国产精品18久久久久久vr| 欧美手机在线视频| 亚洲欧美一区二区不卡| 国产麻豆精品在线| 精品久久久久久久久久久院品网| 一区二区三区中文字幕电影| 风流少妇一区二区| 欧美xxxx老人做受| 亚洲成年人网站在线观看| 99久久伊人精品| 国产精品二区一区二区aⅴ污介绍| 美女国产一区二区三区| 欧美在线观看一二区| 日韩伦理电影网| 99国产精品久久| 国产精品乱码一区二三区小蝌蚪| 久久99精品久久久久久久久久久久 | 欧美色手机在线观看| 一区二区三区在线观看动漫 | 综合久久久久久久| 91在线视频观看| 亚洲欧美激情一区二区| www.亚洲色图.com| 亚洲色图欧美在线| 色婷婷狠狠综合| 亚洲国产精品一区二区www| 欧美日韩国产高清一区| 亚洲成人tv网| 日韩一区二区高清| 伦理电影国产精品| 久久综合九色综合欧美就去吻| 国产精品一区二区三区99| 国产精品天天看| 91视频你懂的| 日韩主播视频在线| 久久久久久久国产精品影院| 99精品视频一区二区三区| 亚洲欧美色图小说| 欧美日韩另类一区| 国产美女在线观看一区| 亚洲精品v日韩精品| 日韩精品一区二区在线| 91麻豆精品一区二区三区| 日韩有码一区二区三区| 欧美国产日本韩| 555夜色666亚洲国产免| 成人在线视频一区二区| 日本午夜一本久久久综合| 国产精品全国免费观看高清| 91精品国产综合久久香蕉的特点| 成人激情免费电影网址| 玖玖九九国产精品| 亚洲成人av福利| 亚洲免费观看在线观看| 久久久不卡网国产精品二区| 欧美疯狂做受xxxx富婆| 99re成人精品视频| 懂色一区二区三区免费观看| 成人免费一区二区三区视频 | 中文字幕一区二区三区在线不卡| 欧美一区国产二区|