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

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

?? file_plain.c

?? 打魔獸戰網的都知道他是什么
?? C
字號:
/* * Copyright (C) 1998,1999,2000,2001  Ross Combs (rocombs@cs.nmsu.edu) * Copyright (C) 2000,2001  Marco Ziech (mmz@gmx.net) * Copyright (C) 2002,2003,2004 Dizzy  * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. */#include "common/setup_before.h"#include <stdio.h>#ifdef HAVE_STDDEF_H# include <stddef.h>#else# ifndef NULL#  define NULL ((void *)0)# endif#endif#ifdef STDC_HEADERS# include <stdlib.h>#else# ifdef HAVE_MALLOC_H#  include <malloc.h># endif#endif#ifdef HAVE_STRING_H# include <string.h>#else# ifdef HAVE_STRINGS_H#  include <strings.h># endif#endif#include "compat/strchr.h"#include "compat/strdup.h"#include "compat/strcasecmp.h"#include "compat/strncasecmp.h"#include <ctype.h>#ifdef HAVE_LIMITS_H# include <limits.h>#endif#include "compat/char_bit.h"#ifdef TIME_WITH_SYS_TIME# include <sys/time.h># include <time.h>#else# ifdef HAVE_SYS_TIME_H#  include <sys/time.h># else#  include <time.h># endif#endif#include <errno.h>#include "compat/strerror.h"#ifdef HAVE_SYS_TYPES_H# include <sys/types.h>#endif#ifdef HAVE_UNISTD_H# include <unistd.h>#else# ifdef WIN32#  include <io.h># endif#endif#include "compat/pdir.h"#include "common/eventlog.h"#include "prefs.h"#include "common/util.h"#include "common/field_sizes.h"#include "common/bnethash.h"#define CLAN_INTERNAL_ACCESS#include "common/introtate.h"#include "account.h"#include "common/hashtable.h"#include "storage.h"#include "storage_file.h"#include "common/list.h"#include "common/xalloc.h"#include "connection.h"#include "watch.h"#include "clan.h"#undef CLAN_INTERNAL_ACCESS#include "common/elist.h"#include "attr.h"#include "common/tag.h"#include "common/setup_after.h"/* plain file storage API functions */static t_attr * plain_read_attr(const char *filename, const char *key);static int plain_read_attrs(const char *filename, t_read_attr_func cb, void *data);static int plain_write_attrs(const char *filename, const t_hlist *attributes);/* file_engine struct populated with the functions above */t_file_engine file_plain = {    plain_read_attr,    plain_read_attrs,    plain_write_attrs};static int plain_write_attrs(const char *filename, const t_hlist *attributes){    FILE       *  accountfile;    t_hlist    *  curr;    t_attr     *  attr;    char const *  key;    char const *  val;    if (!(accountfile = fopen(filename,"w"))) {	eventlog(eventlog_level_error, __FUNCTION__, "unable to open file \"%s\" for writing (fopen: %s)",filename,pstrerror(errno));	return -1;    }    hlist_for_each(curr, attributes) {	attr = hlist_entry(curr, t_attr, link);	if (attr_get_key(attr))	    key = escape_chars(attr_get_key(attr),strlen(attr_get_key(attr)));	else {	    eventlog(eventlog_level_error, __FUNCTION__, "attribute with NULL key in list");	    key = NULL;	}	if (attr_get_val(attr))	    val = escape_chars(attr_get_val(attr),strlen(attr_get_val(attr)));	else {	    eventlog(eventlog_level_error, __FUNCTION__, "attribute with NULL val in list");	    val = NULL;	}	if (key && val) {	    if (strncmp("BNET\\CharacterDefault\\", key, 20) == 0) {		eventlog(eventlog_level_debug, __FUNCTION__, "skipping attribute key=\"%s\"",attr->key);	    } else {		eventlog(eventlog_level_debug, __FUNCTION__, "saving attribute key=\"%s\" val=\"%s\"",attr->key,attr->val);		fprintf(accountfile,"\"%s\"=\"%s\"\n",key,val);	    }	} else eventlog(eventlog_level_error, __FUNCTION__,"could not save attribute key=\"%s\"",attr->key);	if (key) xfree((void *)key); /* avoid warning */	if (val) xfree((void *)val); /* avoid warning */	attr_clear_dirty(attr);    }    if (fclose(accountfile)<0) {	eventlog(eventlog_level_error, __FUNCTION__, "could not close account file \"%s\" after writing (fclose: %s)",filename,pstrerror(errno));	return -1;    }    return 0;}static int plain_read_attrs(const char *filename, t_read_attr_func cb, void *data){    FILE *       accountfile;    unsigned int line;    char const * buff;    unsigned int len;    char *       esckey;    char *       escval;    char * key;    char * val;        if (!(accountfile = fopen(filename,"r"))) {	eventlog(eventlog_level_error, __FUNCTION__,"could not open account file \"%s\" for reading (fopen: %s)", filename, pstrerror(errno));	return -1;    }    for (line=1; (buff=file_get_line(accountfile)); line++) {	if (buff[0]=='#' || buff[0]=='\0') {	    continue;	}	if (strlen(buff)<6) /* "?"="" */ {	    eventlog(eventlog_level_error, __FUNCTION__, "malformed line %d of account file \"%s\"", line, filename);	    continue;	}	len = strlen(buff)-5+1; /* - ""="" + NUL */	esckey = xmalloc(len);	escval = xmalloc(len);	if (sscanf(buff,"\"%[^\"]\" = \"%[^\"]\"",esckey,escval)!=2) {	    if (sscanf(buff,"\"%[^\"]\" = \"\"",esckey)!=1) /* hack for an empty value field */ {		eventlog(eventlog_level_error, __FUNCTION__,"malformed entry on line %d of account file \"%s\"", line, filename);		xfree(escval);		xfree(esckey);		continue;	    }	    escval[0] = '\0';	}		key = unescape_chars(esckey);	val = unescape_chars(escval);/* eventlog(eventlog_level_debug,__FUNCTION__,"strlen(esckey)=%u (%c), len=%u",strlen(esckey),esckey[0],len);*/	xfree(esckey);	xfree(escval);		if (cb(key,val,data))	    eventlog(eventlog_level_error, __FUNCTION__, "got error from callback (key: '%s' val:'%s')", key, val);	if (key) xfree((void *)key); /* avoid warning */	if (val) xfree((void *)val); /* avoid warning */    }    file_get_line(NULL); // clear file_get_line buffer    if (fclose(accountfile)<0) 	eventlog(eventlog_level_error, __FUNCTION__, "could not close account file \"%s\" after reading (fclose: %s)", filename, pstrerror(errno));    return 0;}static t_attr * plain_read_attr(const char *filename, const char *key){    /* flat file storage doesnt know to read selective attributes */    return NULL;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩小视频在线观看专区| 一区二区三区欧美日| 在线精品视频免费观看| 福利一区二区在线观看| 丰满少妇在线播放bd日韩电影| 奇米影视一区二区三区小说| 亚洲国产精品久久不卡毛片| 亚洲自拍都市欧美小说| 亚洲国产aⅴ成人精品无吗| 亚洲国产一区二区三区青草影视| 亚洲午夜激情网站| 日韩黄色免费网站| 免费欧美高清视频| 国产一区高清在线| 成人精品电影在线观看| 一本大道久久a久久综合婷婷| k8久久久一区二区三区 | 91日韩在线专区| 国产suv一区二区三区88区| 一区二区三区中文字幕精品精品 | 日韩亚洲欧美中文三级| 欧美一级高清片在线观看| 日韩午夜电影av| 久久久亚洲精华液精华液精华液 | 日本色综合中文字幕| 看片网站欧美日韩| 豆国产96在线|亚洲| 一本色道综合亚洲| 在线播放91灌醉迷j高跟美女 | 欧美国产一区在线| 亚洲宅男天堂在线观看无病毒| 亚洲va在线va天堂| 国产麻豆视频一区二区| 日本韩国欧美在线| 欧美不卡一区二区三区四区| 国产欧美综合色| 亚洲综合一区二区三区| 国产乱子伦一区二区三区国色天香| 99久久伊人久久99| 日韩美女一区二区三区| 亚洲欧美区自拍先锋| 国模套图日韩精品一区二区| 99re在线视频这里只有精品| 欧美一区二区视频在线观看2022| 国产无人区一区二区三区| 亚洲成年人网站在线观看| 粉嫩欧美一区二区三区高清影视 | 色婷婷久久99综合精品jk白丝 | 国产精品区一区二区三| 丝袜美腿亚洲综合| 色婷婷久久久综合中文字幕| 欧美极品xxx| 久久精品国产精品亚洲综合| 在线影视一区二区三区| 中文字幕乱码亚洲精品一区| 蜜桃视频一区二区| 欧洲精品一区二区三区在线观看| 日本一区二区三级电影在线观看| 日韩黄色免费网站| 欧美日韩精品一区二区三区| 1024成人网色www| 国产成人福利片| 久久婷婷国产综合精品青草| 日本亚洲电影天堂| 欧美一区二区在线观看| 三级一区在线视频先锋 | 亚洲人成人一区二区在线观看| 九九九久久久精品| 日韩亚洲欧美高清| 奇米一区二区三区| 日韩精品在线网站| 日本欧美一区二区在线观看| 91精品欧美综合在线观看最新| 一区二区三区在线影院| 色综合天天综合网国产成人综合天| 久久色在线视频| 黄网站免费久久| 久久综合久久鬼色中文字| 九九国产精品视频| 久久综合色婷婷| 国产激情精品久久久第一区二区| 欧美刺激午夜性久久久久久久 | 三级在线观看一区二区| 狠狠色丁香婷综合久久| 国产一区二区三区四区五区入口| 欧美精品aⅴ在线视频| 日韩福利电影在线| 日韩欧美中文字幕一区| 激情欧美一区二区| 国产偷国产偷亚洲高清人白洁| 国产夫妻精品视频| 国产精品毛片a∨一区二区三区| 成人h精品动漫一区二区三区| 成人免费在线播放视频| 91麻豆高清视频| 图片区日韩欧美亚洲| 欧美一区二区三区免费在线看| 免费在线欧美视频| 国产欧美精品一区二区色综合| 成人91在线观看| 午夜伊人狠狠久久| 欧美午夜片在线观看| 亚洲欧洲三级电影| 国产日韩成人精品| 91视频免费播放| 日韩精品国产精品| 国产亚洲福利社区一区| 色噜噜久久综合| 美女一区二区三区在线观看| 国产精品无遮挡| 欧美日韩免费不卡视频一区二区三区| 另类人妖一区二区av| 欧美激情一区二区三区全黄| 在线观看免费成人| 国产在线视频一区二区| 一区二区三区加勒比av| 久久先锋资源网| 欧洲一区二区三区在线| 国产精品亚洲成人| 午夜一区二区三区在线观看| 国产日韩三级在线| 91精品国产综合久久久蜜臀粉嫩| 国产不卡在线播放| 日韩av不卡一区二区| 亚洲欧美另类小说| 久久久国产午夜精品| 欧美肥妇free| 91视频观看免费| 成人激情黄色小说| 韩国视频一区二区| 日本亚洲三级在线| 一区二区三区中文字幕| 日韩精品一区二区三区在线播放| 国产·精品毛片| 中文无字幕一区二区三区| av电影在线观看完整版一区二区| 九九九久久久精品| 日韩久久免费av| 欧美亚洲日本国产| 99re成人精品视频| 国产精品一区二区三区99| 毛片av中文字幕一区二区| 亚洲国产欧美日韩另类综合| 中文字幕一区二区5566日韩| 国产婷婷色一区二区三区四区 | 欧美专区日韩专区| 成人av免费网站| 99精品视频一区二区三区| 国产成人aaaa| 成人一区二区视频| 成人精品免费网站| 成人免费va视频| 成人av资源在线观看| 成人不卡免费av| 亚洲第一激情av| 日本成人在线不卡视频| 亚洲日本韩国一区| 亚洲欧美偷拍三级| 夜夜夜精品看看| 亚洲一区二区三区视频在线 | 色婷婷av一区二区三区之一色屋| 成人妖精视频yjsp地址| 成人国产精品免费观看动漫| 国产宾馆实践打屁股91| 国产91丝袜在线观看| 国产不卡视频在线播放| 91小宝寻花一区二区三区| 色综合天天综合网天天狠天天| 色菇凉天天综合网| 欧美精品亚洲二区| 精品国产成人系列| 国产精品视频看| 亚洲一区二区三区四区在线免费观看| 亚洲成人资源在线| 美女精品一区二区| 成人性生交大片免费看视频在线 | 欧美精品一区二区三区四区| 久久久精品黄色| 亚洲综合网站在线观看| 日韩国产在线一| 国产不卡高清在线观看视频| 91亚洲男人天堂| 91精品国产91久久久久久最新毛片| 日韩欧美国产精品一区| 欧美精彩视频一区二区三区| 亚洲成人午夜电影| 国产精品资源网| 91成人免费网站| 国产色产综合色产在线视频 | 欧美一区二区精美| 国产精品乱码妇女bbbb| 婷婷久久综合九色国产成人| 国产iv一区二区三区| 欧美日韩中字一区| 中文字幕av不卡| 青青青爽久久午夜综合久久午夜| 成人精品免费视频| 精品噜噜噜噜久久久久久久久试看| 亚洲欧美另类在线| 成人视屏免费看|