⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 prefs.c

📁 打魔兽战网的都知道他是什么
💻 C
📖 第 1 页 / 共 2 页
字号:
/* * Copyright (C) 2000,2001	Onlyer	(onlyer@263.net) * Copyright (C) 2005 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 "setup.h"#ifdef HAVE_STDDEF_H# include <stddef.h>#else# ifndef NULL#  define NULL ((void *)0)# endif#endif#ifdef HAVE_STRING_H# include <string.h>#else# ifdef HAVE_STRINGS_H#  include <strings.h># endif# ifdef HAVE_MEMORY_H#  include <memory.h># endif#endif#include "compat/memset.h"#include "common/conf.h"#include "prefs.h"#include "common/eventlog.h"#include "common/setup_after.h"static struct{        char const      * logfile;        char const      * loglevels;        char const      * servaddrs;        char const      * gameservlist;        char const      * bnetdaddr;        char const      * charsavedir;        char const      * charinfodir;        char const      * bak_charsavedir;        char const      * bak_charinfodir;        char const      * ladderdir;        char const      * newbiefile;        char const      * motd;        char const      * realmname;        char const      * d2gs_password;        char const      * transfile;        char const      * account_allowed_symbols;        char const      * d2gsconffile;	char const	* pidfile;        unsigned int    ladder_refresh_interval;        unsigned int    maxchar;        unsigned int    listpurgeinterval;        unsigned int    gqcheckinterval;        unsigned int    s2s_retryinterval;        unsigned int    s2s_timeout;        unsigned int    s2s_idletime;        unsigned int    sq_checkinterval;        unsigned int    sq_timeout;        unsigned int    maxgamelist;        unsigned int    max_game_idletime;        unsigned int    gamelist_showall;        unsigned int    game_maxlifetime;        unsigned int    allow_gamelimit;        unsigned int    allow_newchar;        unsigned int    idletime;        unsigned int    shutdown_delay;        unsigned int    shutdown_decr;        unsigned int    d2gs_checksum;        unsigned int    d2gs_version;        unsigned int    check_multilogin;        unsigned int    timeout_checkinterval;        unsigned int    s2s_keepalive_interval;        unsigned int    lod_realm;        unsigned int    allow_convert;        unsigned int    d2gs_restart_delay;        time_t          ladder_start_time;        unsigned int    char_expire_day;        char const      * charlist_sort;        char const      * charlist_sort_order;        unsigned int    max_connections;} prefs_conf;static int conf_set_logfile(const char* valstr);static int conf_setdef_logfile(void);static int conf_set_loglevels(const char* valstr);static int conf_setdef_loglevels(void);static int conf_set_servaddrs(const char* valstr);static int conf_setdef_servaddrs(void);static int conf_set_gameservlist(const char* valstr);static int conf_setdef_gameservlist(void);static int conf_set_bnetdaddr(const char* valstr);static int conf_setdef_bnetaddr(void);static int conf_set_charsavedir(const char* valstr);static int conf_setdef_charsavedir(void);static int conf_set_charinfodir(const char* valstr);static int conf_setdef_charinfodir(void);static int conf_set_bakcharsavedir(const char* valstr);static int conf_setdef_backcharsavedir(void);static int conf_set_bakcharinfodir(const char* valstr);static int conf_setdef_backcharinfodir(void);static int conf_set_ladderdir(const char* valstr);static int conf_setdef_ladderdir(void);static int conf_set_ladder_start_time(const char* valstr);static int conf_setdef_ladder_start_time(void);static int conf_set_ladder_refresh_interval(const char* valstr);static int conf_setdef_ladder_refresh_interval(void);static int conf_set_newbiefile(const char* valstr);static int conf_setdef_newbiefile(void);static int conf_set_transfile(const char* valstr);static int conf_setdef_transfile(void);static int conf_set_motd(const char* valstr);static int conf_setdef_motd(void);static int conf_set_realmname(const char* valstr);static int conf_setdef_realmname(void);static int conf_set_maxchar(const char* valstr);static int conf_setdef_maxchar(void);static int conf_set_listpurgeinterval(const char* valstr);static int conf_setdef_listpurgeinterval(void);static int conf_set_gqcheckinterval(const char* valstr);static int conf_setdef_gqcheckinterval(void);static int conf_set_maxgamelist(const char* valstr);static int conf_setdef_maxgamelist(void);static int conf_set_max_game_idletime(const char* valstr);static int conf_setdef_max_game_idletime(void);static int conf_set_gamelist_showall(const char* valstr);static int conf_setdef_gamelist_showall(void);static int conf_set_game_maxlifetime(const char* valstr);static int conf_setdef_game_maxlifetime(void);static int conf_set_allow_gamelimit(const char* valstr);static int conf_setdef_allow_gamelimit(void);static int conf_set_allow_newchar(const char* valstr);static int conf_setdef_allow_newchar(void);static int conf_set_idletime(const char* valstr);static int conf_setdef_idletime(void);static int conf_set_shutdown_delay(const char* valstr);static int conf_setdef_shutdown_delay(void);static int conf_set_shutdown_decr(const char* valstr);static int conf_setdef_shutdown_decr(void);static int conf_set_s2s_retryinterval(const char* valstr);static int conf_setdef_s2s_retryinterval(void);static int conf_set_s2s_timeout(const char* valstr);static int conf_setdef_s2s_timeout(void);static int conf_set_sq_checkinterval(const char* valstr);static int conf_setdef_sq_checkinterval(void);static int conf_set_sq_timeout(const char* valstr);static int conf_setdef_sq_timeout(void);static int conf_set_d2gs_checksum(const char* valstr);static int conf_setdef_d2gs_checksum(void);static int conf_set_d2gs_version(const char* valstr);static int conf_setdef_d2gs_version(void);static int conf_set_d2gs_password(const char* valstr);static int conf_setdef_d2gs_password(void);static int conf_set_check_multilogin(const char* valstr);static int conf_setdef_check_multilogin(void);static int conf_set_s2s_idletime(const char* valstr);static int conf_setdef_s2s_idletime(void);static int conf_set_s2s_keepalive_interval(const char* valstr);static int conf_setdef_s2s_keepalive_interval(void);static int conf_set_timeout_checkinterval(const char* valstr);static int conf_setdef_timeout_checkinterval(void);static int conf_set_lod_realm(const char* valstr);static int conf_setdef_lod_realm(void);static int conf_set_allow_convert(const char* valstr);static int conf_setdef_allow_convert(void);static int conf_set_account_allowed_symbols(const char* valstr);static int conf_setdef_account_allowed_symbols(void);static int conf_set_d2gs_restart_delay(const char* valstr);static int conf_setdef_d2gs_restart_delay(void);static int conf_set_char_expire_day(const char* valstr);static int conf_setdef_char_expire_day(void);static int conf_set_d2gsconffile(const char* valstr);static int conf_setdef_d2gsconffile(void);static int conf_set_charlist_sort(const char* valstr);static int conf_setdef_charlist_sort(void);static int conf_set_charlist_sort_order(const char* valstr);static int conf_setdef_charlist_sort_order(void);static int conf_set_max_connections(const char* valstr);static int conf_setdef_max_connections(void);static int conf_set_pidfile(const char* valstr);static int conf_setdef_pidfile(void);static t_conf_entry prefs_conf_table[]={    { "logfile",                conf_set_logfile,                NULL,    conf_setdef_logfile },    { "loglevels",              conf_set_loglevels,              NULL,    conf_setdef_loglevels},    { "servaddrs",              conf_set_servaddrs,              NULL,    conf_setdef_servaddrs},    { "gameservlist",           conf_set_gameservlist,           NULL,    conf_setdef_gameservlist},    { "bnetdaddr",              conf_set_bnetdaddr,              NULL,    conf_setdef_bnetaddr},    { "charsavedir",            conf_set_charsavedir,            NULL,    conf_setdef_charsavedir},    { "charinfodir",            conf_set_charinfodir,            NULL,    conf_setdef_charinfodir},    { "bak_charsavedir",	conf_set_bakcharsavedir,         NULL,    conf_setdef_backcharsavedir},    { "bak_charinfodir",	conf_set_bakcharinfodir,	 NULL,    conf_setdef_backcharinfodir},    { "ladderdir",              conf_set_ladderdir,              NULL,    conf_setdef_ladderdir},    { "ladder_start_time",	conf_set_ladder_start_time,      NULL,    conf_setdef_ladder_start_time},    { "ladder_refresh_interval",conf_set_ladder_refresh_interval,NULL,   conf_setdef_ladder_refresh_interval},    { "newbiefile",             conf_set_newbiefile,             NULL,   conf_setdef_newbiefile},    { "transfile",		conf_set_transfile,	         NULL,    conf_setdef_transfile},    { "pidfile",		conf_set_pidfile,	         NULL,    conf_setdef_pidfile},    { "motd",                   conf_set_motd,                   NULL,    conf_setdef_motd},    { "realmname",              conf_set_realmname,              NULL,    conf_setdef_realmname},    { "maxchar",                conf_set_maxchar,                NULL,    conf_setdef_maxchar},    { "listpurgeinterval",      conf_set_listpurgeinterval,      NULL,    conf_setdef_listpurgeinterval},    { "gqcheckinterval",        conf_set_gqcheckinterval,        NULL,    conf_setdef_gqcheckinterval},    { "maxgamelist",            conf_set_maxgamelist,            NULL,    conf_setdef_maxgamelist},    { "max_game_idletime",      conf_set_max_game_idletime,      NULL,    conf_setdef_max_game_idletime},    { "gamelist_showall",       conf_set_gamelist_showall,       NULL,    conf_setdef_gamelist_showall},    { "game_maxlifetime",       conf_set_game_maxlifetime,       NULL,    conf_setdef_game_maxlifetime},    { "allow_gamelimit",        conf_set_allow_gamelimit,        NULL,    conf_setdef_allow_gamelimit},    { "allow_newchar",          conf_set_allow_newchar,          NULL,    conf_setdef_allow_newchar},    { "idletime",               conf_set_idletime,               NULL,    conf_setdef_idletime},    { "shutdown_delay",         conf_set_shutdown_delay,         NULL,    conf_setdef_shutdown_delay},    { "shutdown_decr",          conf_set_shutdown_decr,          NULL,    conf_setdef_shutdown_decr},    { "s2s_retryinterval",      conf_set_s2s_retryinterval,      NULL,    conf_setdef_s2s_retryinterval},    { "s2s_timeout",            conf_set_s2s_timeout,            NULL,    conf_setdef_s2s_timeout},    { "sq_checkinterval",       conf_set_sq_checkinterval,       NULL,    conf_setdef_sq_checkinterval},    { "sq_timeout",             conf_set_sq_timeout,             NULL,    conf_setdef_sq_timeout},    { "d2gs_checksum",          conf_set_d2gs_checksum,          NULL,    conf_setdef_d2gs_checksum},    { "d2gs_version",           conf_set_d2gs_version,           NULL,    conf_setdef_d2gs_version},    { "d2gs_password",          conf_set_d2gs_password,          NULL,    conf_setdef_d2gs_password},    { "check_multilogin",       conf_set_check_multilogin,       NULL,    conf_setdef_check_multilogin},    { "s2s_idletime",           conf_set_s2s_idletime,           NULL,    conf_setdef_s2s_idletime},    { "s2s_keepalive_interval", conf_set_s2s_keepalive_interval, NULL,    conf_setdef_s2s_keepalive_interval},    { "timeout_checkinterval",  conf_set_timeout_checkinterval,  NULL,    conf_setdef_timeout_checkinterval},    { "lod_realm",		conf_set_lod_realm,              NULL,    conf_setdef_lod_realm},    { "allow_convert",		conf_set_allow_convert,          NULL,    conf_setdef_allow_convert},    { "account_allowed_symbols",conf_set_account_allowed_symbols,NULL,    conf_setdef_account_allowed_symbols},    { "d2gs_restart_delay",	conf_set_d2gs_restart_delay,     NULL,    conf_setdef_d2gs_restart_delay},    { "char_expire_day",	conf_set_char_expire_day,        NULL,    conf_setdef_char_expire_day},    { "d2gsconffile",           conf_set_d2gsconffile,           NULL,    conf_setdef_d2gsconffile},    { "charlist_sort",          conf_set_charlist_sort,          NULL,    conf_setdef_charlist_sort},    { "charlist_sort_order",    conf_set_charlist_sort_order,    NULL,    conf_setdef_charlist_sort_order},    { "max_connections",    	conf_set_max_connections,    	 NULL,    conf_setdef_max_connections},    { NULL,                     NULL,                            NULL,    NULL }};extern int d2cs_prefs_load(char const * filename){    FILE *fd;    if (!filename) {        eventlog(eventlog_level_error,__FUNCTION__,"got NULL filename");        return -1;    }    fd = fopen(filename,"rt");    if (!fd) {        eventlog(eventlog_level_error,__FUNCTION__,"could not open file '%s'",filename);        return -1;    }    if (conf_load_file(fd,prefs_conf_table)) {        eventlog(eventlog_level_error,__FUNCTION__,"error loading config file '%s'",filename);        fclose(fd);        return -1;    }    fclose(fd);    return 0;}extern int prefs_reload(char const * filename){	d2cs_prefs_unload();	if (d2cs_prefs_load(filename)<0) return -1;	return 0;}extern int d2cs_prefs_unload(void){	conf_unload(prefs_conf_table);	return 0;}extern char const * prefs_get_servaddrs(void){	return prefs_conf.servaddrs;}static int conf_set_servaddrs(const char* valstr){    return conf_set_str(&prefs_conf.servaddrs,valstr,NULL);}static int conf_setdef_servaddrs(void){    return conf_set_str(&prefs_conf.servaddrs,NULL,D2CS_SERVER_ADDRS);}extern char const * prefs_get_charsave_dir(void){	return prefs_conf.charsavedir;}static int conf_set_charsavedir(const char* valstr){    return conf_set_str(&prefs_conf.charsavedir,valstr,NULL);}static int conf_setdef_charsavedir(void){    return conf_set_str(&prefs_conf.charsavedir,NULL,D2CS_CHARSAVE_DIR);}extern char const * prefs_get_charinfo_dir(void){	return prefs_conf.charinfodir;}static int conf_set_charinfodir(const char* valstr){    return conf_set_str(&prefs_conf.charinfodir,valstr,NULL);}static int conf_setdef_charinfodir(void){    return conf_set_str(&prefs_conf.charinfodir,NULL,D2CS_CHARINFO_DIR);}extern char const * prefs_get_bak_charsave_dir(void){	return prefs_conf.bak_charsavedir;}static int conf_set_bakcharsavedir(const char* valstr){    return conf_set_str(&prefs_conf.bak_charsavedir,valstr,NULL);}static int conf_setdef_backcharsavedir(void){    return conf_set_str(&prefs_conf.bak_charsavedir,NULL,D2CS_BAK_CHARSAVE_DIR);}extern char const * prefs_get_bak_charinfo_dir(void){	return prefs_conf.bak_charinfodir;}static int conf_set_bakcharinfodir(const char* valstr){    return conf_set_str(&prefs_conf.bak_charinfodir,valstr,NULL);}static int conf_setdef_backcharinfodir(void){    return conf_set_str(&prefs_conf.bak_charinfodir,NULL,D2CS_BAK_CHARINFO_DIR);}extern char const * prefs_get_charsave_newbie(void){	return prefs_conf.newbiefile;}static int conf_set_newbiefile(const char* valstr){    return conf_set_str(&prefs_conf.newbiefile,valstr,NULL);}static int conf_setdef_newbiefile(void){    return conf_set_str(&prefs_conf.newbiefile,NULL,D2CS_CHARSAVE_NEWBIE);}extern char const * prefs_get_motd(void){	return prefs_conf.motd;}static int conf_set_motd(const char* valstr){	return conf_set_str(&prefs_conf.motd,valstr,NULL);}static int conf_setdef_motd(void){	return conf_set_str(&prefs_conf.motd,NULL,D2CS_MOTD);}extern char const * prefs_get_d2gs_list(void){	return prefs_conf.gameservlist;}static int conf_set_gameservlist(const char* valstr){	return conf_set_str(&prefs_conf.gameservlist,valstr,NULL);}static int conf_setdef_gameservlist(void){	return conf_set_str(&prefs_conf.gameservlist,NULL,D2GS_SERVER_LIST);}extern unsigned int prefs_get_maxchar(void){	return (prefs_conf.maxchar>MAX_MAX_CHAR_PER_ACCT)?MAX_MAX_CHAR_PER_ACCT:prefs_conf.maxchar;}static int conf_set_maxchar(const char* valstr){	return conf_set_int(&prefs_conf.maxchar,valstr,0);}static int conf_setdef_maxchar(void){	return conf_set_int(&prefs_conf.maxchar,NULL,MAX_CHAR_PER_ACCT);}extern unsigned int prefs_get_list_purgeinterval(void){	return prefs_conf.listpurgeinterval;}static int conf_set_listpurgeinterval(const char* valstr){	return conf_set_int(&prefs_conf.listpurgeinterval,valstr,0);}static int conf_setdef_listpurgeinterval(void){	return conf_set_int(&prefs_conf.listpurgeinterval,NULL,LIST_PURGE_INTERVAL);}extern unsigned int prefs_get_gamequeue_checkinterval(void){	return prefs_conf.gqcheckinterval;}static int conf_set_gqcheckinterval(const char* valstr){	return conf_set_int(&prefs_conf.gqcheckinterval,valstr,0);}static int conf_setdef_gqcheckinterval(void){	return conf_set_int(&prefs_conf.gqcheckinterval,NULL,GAMEQUEUE_CHECK_INTERVAL);}extern unsigned int prefs_get_maxgamelist(void){	return prefs_conf.maxgamelist;}static int conf_set_maxgamelist(const char* valstr){	return conf_set_int(&prefs_conf.maxgamelist,valstr,0);}static int conf_setdef_maxgamelist(void){	return conf_set_int(&prefs_conf.maxgamelist,NULL,MAX_GAME_LIST);}extern unsigned int prefs_allow_newchar(void){	return prefs_conf.allow_newchar;}static int conf_set_allow_newchar(const char* valstr){	return conf_set_bool(&prefs_conf.allow_newchar,valstr,0);}static int conf_setdef_allow_newchar(void){	return conf_set_bool(&prefs_conf.allow_newchar,NULL,1);}extern unsigned int prefs_get_idletime(void){	return prefs_conf.idletime;}static int conf_set_idletime(const char* valstr){	return conf_set_int(&prefs_conf.idletime,valstr,0);}static int conf_setdef_idletime(void){	return conf_set_int(&prefs_conf.idletime,NULL,MAX_CLIENT_IDLETIME);}extern char const * d2cs_prefs_get_logfile(void)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -