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

📄 cfgfiles.c

📁 The major functionality added in this release includes: - Rootless mode in X11 - Widget Templt
💻 C
📖 第 1 页 / 共 2 页
字号:
	{"reconnect_delay", PREFS_OFFINT (recon_delay), TYPE_INT},	{"servernotice", PREFS_OFFINT (servernotice), TYPE_BOOL},	{"show_away_message", PREFS_OFFINT (show_away_message), TYPE_BOOL},	{"show_away_once", PREFS_OFFINT (show_away_once), TYPE_BOOL},	{"show_invite_in_front_session",	 PREFS_OFFINT (show_invite_in_front_session), TYPE_BOOL},	{"show_notify_in_front_session",	 PREFS_OFFINT (show_notify_in_front_session), TYPE_BOOL},	{"show_separator", PREFS_OFFINT (show_separator), TYPE_BOOL},	{"skipmotd", PREFS_OFFINT (skipmotd), TYPE_BOOL},	{"skipserverlist", PREFS_OFFINT (skipserverlist), TYPE_BOOL},	{"soundcmd", PREFS_OFFSET (soundcmd), TYPE_STR},	{"sounddir", PREFS_OFFSET (sounddir), TYPE_STR},	{"stamp_format", PREFS_OFFSET (stamp_format), TYPE_STR},	{"stripcolor", PREFS_OFFINT (stripcolor), TYPE_BOOL},	{"style_inputbox", PREFS_OFFINT (style_inputbox), TYPE_BOOL},	{"style_namelistgad", PREFS_OFFINT (style_namelistgad), TYPE_BOOL},	{"tabchannels", PREFS_OFFINT (tabchannels), TYPE_BOOL},	{"tabs_position", PREFS_OFFINT (tabs_position), TYPE_INT},	{"thin_separator", PREFS_OFFINT (thin_separator), TYPE_BOOL},	{"throttle", PREFS_OFFINT (throttle), TYPE_BOOL},	{"throttlemeter", PREFS_OFFINT (throttlemeter), TYPE_INT},	{"timestamp", PREFS_OFFINT (timestamp), TYPE_BOOL},	{"timestamp_logs", PREFS_OFFINT (timestamp_logs), TYPE_BOOL},	{"timestamp_log_format", PREFS_OFFSET (timestamp_log_format), TYPE_STR},	{"tint", PREFS_OFFINT (tint), TYPE_BOOL},	{"tint_blue", PREFS_OFFINT (tint_blue), TYPE_INT},	{"tint_green", PREFS_OFFINT (tint_green), TYPE_INT},	{"tint_red", PREFS_OFFINT (tint_red), TYPE_INT},	{"topicbar", PREFS_OFFINT (topicbar), TYPE_BOOL},	{"transparent", PREFS_OFFINT (transparent), TYPE_BOOL},#ifdef USE_TRANS	{"trans_file", PREFS_OFFSET (trans_file), TYPE_STR},#endif	{"treeview", PREFS_OFFINT (treeview), TYPE_BOOL},	{"use_fontset", PREFS_OFFINT (use_fontset), TYPE_BOOL},	{"use_server_tab", PREFS_OFFINT (use_server_tab), TYPE_BOOL},#ifdef USE_TRANS	{"use_trans", PREFS_OFFINT (use_trans), TYPE_BOOL},#endif	{"userhost", PREFS_OFFINT (userhost), TYPE_BOOL},	{"userlist_sort", PREFS_OFFINT (userlist_sort), TYPE_INT},	{"userlist_icons", PREFS_OFFINT (userlist_icons), TYPE_BOOL},	{"userlistbuttons", PREFS_OFFINT (userlistbuttons), TYPE_BOOL},	{"username", PREFS_OFFSET (username), TYPE_STR},	{"wallops", PREFS_OFFINT (wallops), TYPE_BOOL},	{"whois_on_notifyonline", PREFS_OFFINT (whois_on_notifyonline), TYPE_BOOL},	{"windows_as_tabs", PREFS_OFFINT (windows_as_tabs), TYPE_BOOL},	{"wordwrap", PREFS_OFFINT (wordwrap), TYPE_BOOL},	{0, 0, 0},};voidload_config (void){	struct stat st;	char *cfg, *username;	int res, val, i, fh;#ifdef	USE_JCODE	gchar *locale;#endif	memset (&prefs, 0, sizeof (struct xchatprefs));	/* Just for ppl upgrading --AGL */	strcpy (prefs.logmask, "%s,%c.xchatlog");	strcpy (prefs.nick_suffix, ":");	strcpy (prefs.cmdchar, "/");	prefs.auto_indent = 1;	prefs.max_auto_indent = 256;	prefs.mail_check = 1;	prefs.show_separator = 1;	prefs.dialog_show_separator = 1;	prefs.dcc_blocksize = 1024;	prefs.throttle = 1;	 /*FIXME*/ prefs.msg_time_limit = 30;	prefs.msg_number_limit = 5;	prefs.ctcp_time_limit = 30;	prefs.ctcp_number_limit = 5;	prefs.topicbar = 1;	prefs.lagometer = 1;	prefs.throttlemeter = 1;	prefs.nickgad = 1;	prefs.autoopendccrecvwindow = 1;	prefs.autoopendccsendwindow = 1;	prefs.autoopendccchatwindow = 1;	prefs.chanmodebuttons = 1;	prefs.userhost = 1;	prefs.userlistbuttons = 1;	prefs.hilightnick = 1;	prefs.persist_chans = 1;	prefs.userlist_icons = 1;	prefs.perc_color = 1;	prefs.dialog_width = 300;	prefs.dialog_height = 100;	prefs.dcc_send_fillspaces = 1;	prefs.mainwindow_save = 1;	strcpy (prefs.stamp_format, "[%H:%M:%S] ");	strcpy (prefs.timestamp_log_format, "%b %d %H:%M:%S ");#ifdef	USE_JCODE	locale = setlocale (LC_CTYPE, "");	if (locale != NULL && !g_strncasecmp (locale, "ja", 2))		prefs.kanji_conv = 1;#endif	check_prefs_dir ();	username = g_get_user_name ();	if (!username)		username = "root";	fh = open (default_file (), OFLAGS | O_RDONLY);	if (fh != -1)	{		fstat (fh, &st);		cfg = malloc (st.st_size + 1);		cfg[0] = '\0';		i = read (fh, cfg, st.st_size);		if (i >= 0)			cfg[i] = '\0';					/* make sure cfg is NULL terminated */		close (fh);		i = 0;		do		{			switch (vars[i].type)			{			case TYPE_STR:				cfg_get_str (cfg, vars[i].name, (char *) &prefs + vars[i].offset);				break;			case TYPE_BOOL:			case TYPE_INT:				val = cfg_get_int_with_result (cfg, vars[i].name, &res);				if (res)					*((int *) &prefs + vars[i].offset) = val;				break;			}			i++;		}		while (vars[i].type != 0);		free (cfg);	} else	{#ifndef WIN32#ifdef __EMX__		/* OS/2 uses UID 0 all the time */		fe_message (_("The default download directory is your\n"						"home dir, you should change this at some stage."), TRUE);#else		if (getuid () == 0)			fe_message (_("* Running IRC as root is stupid! You should\n"							"  create a User Account and use that to login.\n\n"							"* The default download directory is your\n"							"  home dir, you should change this at some stage."),							TRUE);		else			fe_message ("The default download directory is your\n"							"home dir, you should change this at some stage.", TRUE);#endif#endif /* !WIN32 */		/* put in default values, anything left out is automatically zero */		prefs.autoresume = 1;		prefs.show_away_once = 1;		prefs.show_away_message = 1;		prefs.indent_pixels = 80;		prefs.dialog_indent_pixels = 80;		prefs.indent_nicks = 1;		prefs.dialog_indent_nicks = 1;		prefs.thin_separator = 1;		prefs.fastdccsend = 1;		prefs.wordwrap = 1;		prefs.dialog_wordwrap = 1;		prefs.autosave = 1;		prefs.autodialog = 1;		prefs.autoreconnect = 1;		prefs.recon_delay = 10;		prefs.tabchannels = 1;		prefs.newtabstofront = 1;		prefs.use_server_tab = 1;		prefs.windows_as_tabs = 1;		prefs.privmsgtab = 1;		prefs.nickcompletion = 1;		prefs.style_inputbox = 1;		prefs.nu_color = 4;		prefs.dccpermissions = 0600;		prefs.max_lines = 300;		prefs.mainwindow_width = 630;		prefs.mainwindow_height = 422;		prefs.dcctimeout = 180;		prefs.dccstalltimeout = 60;		prefs.notify_timeout = 15;		prefs.tint_red =			prefs.tint_green =			prefs.tint_blue =			prefs.dialog_tint_red =			prefs.dialog_tint_green = prefs.dialog_tint_blue = 195;		strcpy (prefs.nick1, username);		strcpy (prefs.nick2, username);		strcat (prefs.nick2, "_");		strcpy (prefs.nick3, username);		strcat (prefs.nick3, "__");		strcpy (prefs.realname, username);		strcpy (prefs.username, username);#ifdef WIN32		strcpy (prefs.sounddir, "./sound");		strcpy (prefs.dccdir, "./dcc");#else		strcpy (prefs.dccdir, g_get_home_dir ());		strcpy (prefs.sounddir, prefs.dccdir);#endif		strcpy (prefs.doubleclickuser, "/QUOTE WHOIS %s");		strcpy (prefs.awayreason, _("I'm busy"));		strcpy (prefs.quitreason, _("Client Exiting"));		strcpy (prefs.partreason, prefs.quitreason);#ifdef USE_JCODE		prefs.use_fontset = 1;		strcpy (prefs.font_normal, DEF_FONT_JCODE);#else#ifdef WIN32		strcpy (prefs.font_normal, DEF_FONT_WIN32);#else		strcpy (prefs.font_normal, DEF_FONT);#endif#endif		strcpy (prefs.dialog_font_normal, prefs.font_normal);		strcpy (prefs.soundcmd, "esdplay");		strcpy (prefs.dnsprogram, "host");	}	if (prefs.mainwindow_height < 138)		prefs.mainwindow_height = 138;	if (prefs.mainwindow_width < 106)		prefs.mainwindow_width = 106;}intsave_config (void){	int fh, i;	check_prefs_dir ();	fh = open (default_file (), OFLAGS | O_TRUNC | O_WRONLY | O_CREAT, 0600);	if (fh == -1)		return 0;	cfg_put_str (fh, "version", VERSION);	i = 0;	do	{		switch (vars[i].type)		{		case TYPE_STR:			cfg_put_str (fh, vars[i].name, (char *) &prefs + vars[i].offset);			break;		case TYPE_INT:		case TYPE_BOOL:			cfg_put_int (fh, *((int *) &prefs + vars[i].offset), vars[i].name);		}		i++;	}	while (vars[i].type != 0);	close (fh);	return 1;}static voidset_showval (session *sess, struct prefs *var, char *tbuf){	int len, dots, j;	static char *offon[] = { "OFF", "ON" };	len = strlen (var->name);	memcpy (tbuf, var->name, len);	dots = 29 - len;	if (dots < 0)		dots = 0;	tbuf[len++] = '\003';	tbuf[len++] = '2';	for (j=0;j<dots;j++)		tbuf[j + len] = '.';	len += j;	switch (var->type)	{	case TYPE_STR:		sprintf (tbuf + len, "\0033:\017 %s\n",					(char *) &prefs + var->offset);		break;	case TYPE_INT:		sprintf (tbuf + len, "\0033:\017 %d\n",					*((int *) &prefs + var->offset));		break;	case TYPE_BOOL:		sprintf (tbuf + len, "\0033:\017 %s\n", offon[					*((int *) &prefs + var->offset)]);		break;	}	PrintText (sess, tbuf);}static voidset_list (session * sess, char *tbuf){	int i;	i = 0;	do	{		set_showval (sess, &vars[i], tbuf);		i++;	}	while (vars[i].type != 0);}intcfg_get_bool (char *var){	int i = 0;	do	{		if (!strcasecmp (var, vars[i].name))		{			return *((int *) &prefs + vars[i].offset);		}		i++;	}	while (vars[i].type != 0);	return -1;}intcmd_set (struct session *sess, char *tbuf, char *word[], char *word_eol[]){	int wild = FALSE;	int i = 0, finds = 0, found;	char *var = word[2];	char *val = word_eol[3];	if (!*var)	{		set_list (sess, tbuf);		return TRUE;	}	if ((strchr (var, '*') || strchr (var, '?')) && !*val)		wild = TRUE;	if (*val == '=')		val++;	do	{		if (wild)			found = !match (var, vars[i].name);		else			found = strcasecmp (var, vars[i].name);		if (found == 0)		{			finds++;			switch (vars[i].type)			{			case TYPE_STR:				if (*val)				{					strcpy ((char *) &prefs + vars[i].offset, val);					sprintf (tbuf, "%s set to: %s\n", var, val);					PrintText (sess, tbuf);				} else				{					set_showval (sess, &vars[i], tbuf);				}				break;			case TYPE_INT:			case TYPE_BOOL:				if (*val)				{					if (vars[i].type == TYPE_BOOL)					{						if (atoi (val))							*((int *) &prefs + vars[i].offset) = 1;						else							*((int *) &prefs + vars[i].offset) = 0;						if (!strcasecmp (val, "YES") || !strcasecmp (val, "ON"))							*((int *) &prefs + vars[i].offset) = 1;						if (!strcasecmp (val, "NO") || !strcasecmp (val, "OFF"))							*((int *) &prefs + vars[i].offset) = 0;					} else					{						*((int *) &prefs + vars[i].offset) = atoi (val);					}					sprintf (tbuf, "%s set to: %d\n", var,								*((int *) &prefs + vars[i].offset));					PrintText (sess, tbuf);				} else				{					set_showval (sess, &vars[i], tbuf);				}				break;			}		}		i++;	}	while (vars[i].type != 0);	if (!finds)		PrintText (sess, "No such variable.\n");	return TRUE;}

⌨️ 快捷键说明

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