summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--src/common/cfgfiles.c75
-rw-r--r--src/common/dcc.c86
-rw-r--r--src/common/inbound.c4
-rw-r--r--src/common/outbound.c4
-rw-r--r--src/common/proto-irc.c2
-rw-r--r--src/common/xchat.h47
-rw-r--r--src/fe-gtk/dccgui.c8
-rw-r--r--src/fe-gtk/maingui.c2
-rw-r--r--src/fe-gtk/setup.c44
9 files changed, 137 insertions, 135 deletions
diff --git a/src/common/cfgfiles.c b/src/common/cfgfiles.c
index 4da18961..974f721a 100644
--- a/src/common/cfgfiles.c
+++ b/src/common/cfgfiles.c
@@ -388,7 +388,8 @@ default_file (void)
 
 /* Keep these sorted!! */
 
-const struct prefs vars[] = {
+const struct prefs vars[] =
+{
 	{"away_auto_unmark", P_OFFINT (hex_away_auto_unmark), TYPE_BOOL},
 	{"away_omit_alerts", P_OFFINT (hex_away_omit_alerts), TYPE_BOOL},
 	{"away_reason", P_OFFSET (hex_away_reason), TYPE_STR},
@@ -403,31 +404,31 @@ const struct prefs vars[] = {
 	{"completion_sort", P_OFFINT (hex_completion_sort), TYPE_INT},
 	{"completion_suffix", P_OFFSET (hex_completion_suffix), TYPE_STR},
 
-	{"dcc_auto_chat", P_OFFINT (autodccchat), TYPE_INT},
-	{"dcc_auto_resume", P_OFFINT (autoresume), TYPE_BOOL},
-	{"dcc_auto_send", P_OFFINT (autodccsend), TYPE_INT},
-	{"dcc_blocksize", P_OFFINT (dcc_blocksize), TYPE_INT},
-	{"dcc_completed_dir", P_OFFSET (dcc_completed_dir), TYPE_STR},
-	{"dcc_dir", P_OFFSET (dccdir), TYPE_STR},
+	{"dcc_auto_chat", P_OFFINT (hex_dcc_auto_chat), TYPE_BOOL},
+	{"dcc_auto_recv", P_OFFINT (hex_dcc_auto_recv), TYPE_INT},
+	{"dcc_auto_resume", P_OFFINT (hex_dcc_auto_resume), TYPE_BOOL},
+	{"dcc_blocksize", P_OFFINT (hex_dcc_blocksize), TYPE_INT},
+	{"dcc_completed_dir", P_OFFSET (hex_dcc_completed_dir), TYPE_STR},
+	{"dcc_dir", P_OFFSET (hex_dcc_dir), TYPE_STR},
 #ifndef WIN32
-	{"dcc_fast_send", P_OFFINT (fastdccsend), TYPE_BOOL},
+	{"dcc_fast_send", P_OFFINT (hex_dcc_fast_send), TYPE_BOOL},
 #endif
-	{"dcc_global_max_get_cps", P_OFFINT (dcc_global_max_get_cps), TYPE_INT},
-	{"dcc_global_max_send_cps", P_OFFINT (dcc_global_max_send_cps), TYPE_INT},
-	{"dcc_ip", P_OFFSET (dcc_ip_str), TYPE_STR},
-	{"dcc_ip_from_server", P_OFFINT (ip_from_server), TYPE_BOOL},
-	{"dcc_max_get_cps", P_OFFINT (dcc_max_get_cps), TYPE_INT},
-	{"dcc_max_send_cps", P_OFFINT (dcc_max_send_cps), TYPE_INT},
-	{"dcc_permissions", P_OFFINT (dccpermissions), TYPE_INT},
-	{"dcc_port_first", P_OFFINT (first_dcc_send_port), TYPE_INT},
-	{"dcc_port_last", P_OFFINT (last_dcc_send_port), TYPE_INT},
-	{"dcc_remove", P_OFFINT (dcc_remove), TYPE_BOOL},
-	{"dcc_save_nick", P_OFFINT (dccwithnick), TYPE_BOOL},
-	{"dcc_send_fillspaces", P_OFFINT (dcc_send_fillspaces), TYPE_BOOL},
-	{"dcc_stall_timeout", P_OFFINT (dccstalltimeout), TYPE_INT},
-	{"dcc_timeout", P_OFFINT (dcctimeout), TYPE_INT},
-
-	{"dnsprogram", P_OFFSET (dnsprogram), TYPE_STR},
+	{"dcc_global_max_get_cps", P_OFFINT (hex_dcc_global_max_get_cps), TYPE_INT},
+	{"dcc_global_max_send_cps", P_OFFINT (hex_dcc_global_max_send_cps), TYPE_INT},
+	{"dcc_ip", P_OFFSET (hex_dcc_ip), TYPE_STR},
+	{"dcc_ip_from_server", P_OFFINT (hex_dcc_ip_from_server), TYPE_BOOL},
+	{"dcc_max_get_cps", P_OFFINT (hex_dcc_max_get_cps), TYPE_INT},
+	{"dcc_max_send_cps", P_OFFINT (hex_dcc_max_send_cps), TYPE_INT},
+	{"dcc_permissions", P_OFFINT (hex_dcc_permissions), TYPE_INT},
+	{"dcc_port_first", P_OFFINT (hex_dcc_port_first), TYPE_INT},
+	{"dcc_port_last", P_OFFINT (hex_dcc_port_last), TYPE_INT},
+	{"dcc_remove", P_OFFINT (hex_dcc_remove), TYPE_BOOL},
+	{"dcc_save_nick", P_OFFINT (hex_dcc_save_nick), TYPE_BOOL},
+	{"dcc_send_fillspaces", P_OFFINT (hex_dcc_send_fillspaces), TYPE_BOOL},
+	{"dcc_stall_timeout", P_OFFINT (hex_dcc_stall_timeout), TYPE_INT},
+	{"dcc_timeout", P_OFFINT (hex_dcc_timeout), TYPE_INT},
+
+	{"dnsprogram", P_OFFSET (hex_dnsprogram), TYPE_STR},
 
 	{"flood_ctcp_num", P_OFFINT (ctcp_number_limit), TYPE_INT},
 	{"flood_ctcp_time", P_OFFINT (ctcp_time_limit), TYPE_INT},
@@ -664,13 +665,13 @@ load_config (void)
 	prefs.hex_away_track = 1;
 	prefs.timestamp_logs = 1;
 	prefs.truncchans = 20;
-	prefs.autoresume = 1;
+	prefs.hex_dcc_auto_resume = 1;
 	prefs.hex_away_show_once = 1;
 	prefs.indent_nicks = 1;
 	prefs.thin_separator = 1;
 	prefs.identd = 1;
 #ifndef WIN32
-	prefs.fastdccsend = 1;
+	prefs.hex_dcc_fast_send = 1;
 #endif
 	prefs.wordwrap = 1;
 	prefs.autodialog = 1;
@@ -693,7 +694,7 @@ load_config (void)
 	/* prefs.colorednicks = 1; */
 	prefs.style_inputbox = 1;
 	prefs.style_namelistgad = 1;
-	prefs.dccpermissions = 0600;
+	prefs.hex_dcc_permissions = 0600;
 	prefs.max_lines = 500;
 	prefs.mainwindow_width = 640;
 	prefs.mainwindow_height = 400;
@@ -701,8 +702,8 @@ load_config (void)
 	prefs.dialog_height = 256;
 	prefs.gui_join_dialog = 1;
 	prefs.gui_quit_dialog = 1;
-	prefs.dcctimeout = 180;
-	prefs.dccstalltimeout = 60;
+	prefs.hex_dcc_timeout = 180;
+	prefs.hex_dcc_stall_timeout = 60;
 	prefs.notify_timeout = 15;
 	prefs.tint_red =
 		prefs.tint_green =
@@ -710,7 +711,7 @@ load_config (void)
 	prefs.auto_indent = 1;
 	prefs.max_auto_indent = 256;
 	prefs.show_separator = 1;
-	prefs.dcc_blocksize = 1024;
+	prefs.hex_dcc_blocksize = 1024;
 	prefs.throttle = 1;
 	 /*FIXME*/ prefs.msg_time_limit = 30;
 	prefs.msg_number_limit = 5;
@@ -739,7 +740,7 @@ load_config (void)
 	prefs.input_balloon_time = 20;
 	prefs.input_flash_priv = prefs.input_flash_hilight = 1;
 	prefs.input_tray_priv = prefs.input_tray_hilight = 1;
-	prefs.autodccsend = 2;	/* browse mode */
+	prefs.hex_dcc_auto_recv = 2;	/* browse mode */
 	prefs.url_grabber = 1;
 	prefs.url_grabber_limit = 100; /* 0 means unlimited */
 	prefs.text_search_follow = 1;
@@ -764,16 +765,16 @@ load_config (void)
 
 		if (portable_mode () || !get_reg_str ("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders", "Personal", out, sizeof (out)))
 		{
-			snprintf (prefs.dccdir, sizeof (prefs.dccdir), "%s\\downloads", get_xdir_utf8 ());
+			snprintf (prefs.hex_dcc_dir, sizeof (prefs.hex_dcc_dir), "%s\\downloads", get_xdir_utf8 ());
 		}
 		else
 		{
-			snprintf (prefs.dccdir, sizeof (prefs.dccdir), "%s\\Downloads", out);
+			snprintf (prefs.hex_dcc_dir, sizeof (prefs.hex_dcc_dir), "%s\\Downloads", out);
 		}
 	}
 #else
 	snprintf (prefs.sounddir, sizeof (prefs.sounddir), "%s/sounds", get_xdir_utf8 ());
-	snprintf (prefs.dccdir, sizeof (prefs.dccdir), "%s/downloads", get_xdir_utf8 ());
+	snprintf (prefs.hex_dcc_dir, sizeof (prefs.hex_dcc_dir), "%s/downloads", get_xdir_utf8 ());
 #endif
 	strcpy (prefs.doubleclickuser, "QUOTE WHOIS %s %s");
 	strcpy (prefs.hex_away_reason, _("I'm busy"));
@@ -782,7 +783,7 @@ load_config (void)
 	strcpy (prefs.font_normal, DEF_FONT);
 	strcpy (prefs.font_main, DEF_FONT);
 	strcpy (prefs.font_alternative, DEF_FONT_ALTER);
-	strcpy (prefs.dnsprogram, "host");
+	strcpy (prefs.hex_dnsprogram, "host");
 	strcpy (prefs.irc_no_hilight, "NickServ,ChanServ,InfoServ,N,Q");
 
 	g_free ((char *)username);
@@ -831,8 +832,8 @@ load_config (void)
 #endif
 #endif /* !WIN32 */
 
-		mkdir_utf8 (prefs.dccdir);
-		mkdir_utf8 (prefs.dcc_completed_dir);
+		mkdir_utf8 (prefs.hex_dcc_dir);
+		mkdir_utf8 (prefs.hex_dcc_completed_dir);
 	}
 	if (prefs.mainwindow_height < 138)
 		prefs.mainwindow_height = 138;
diff --git a/src/common/dcc.c b/src/common/dcc.c
index 18d4219b..27483165 100644
--- a/src/common/dcc.c
+++ b/src/common/dcc.c
@@ -143,14 +143,14 @@ dcc_calc_cps (struct DCC *dcc)
 		pos = dcc->pos - ((dcc->pos - dcc->ack) / 2);
 		glob_throttle_bit = 0x1;
 		cpssum = &dcc_sendcpssum;
-		glob_limit = prefs.dcc_global_max_send_cps;
+		glob_limit = prefs.hex_dcc_global_max_send_cps;
 	}
 	else
 	{
 		pos = dcc->pos;
 		glob_throttle_bit = 0x2;
 		cpssum = &dcc_getcpssum;
-		glob_limit = prefs.dcc_global_max_get_cps;
+		glob_limit = prefs.hex_dcc_global_max_get_cps;
 	}
 
 	if (!dcc->firstcpstv.tv_sec && !dcc->firstcpstv.tv_usec)
@@ -249,10 +249,10 @@ dcc_check_timeouts (void)
 
 			if (dcc->type == TYPE_SEND || dcc->type == TYPE_RECV)
 			{
-				if (prefs.dccstalltimeout > 0)
+				if (prefs.hex_dcc_stall_timeout > 0)
 				{
 					if (!dcc->throttled
-						&& tim - dcc->lasttime > prefs.dccstalltimeout)
+						&& tim - dcc->lasttime > prefs.hex_dcc_stall_timeout)
 					{
 						EMIT_SIGNAL (XP_TE_DCCSTALL, dcc->serv->front_session,
 										 dcctypes[dcc->type],
@@ -265,9 +265,9 @@ dcc_check_timeouts (void)
 		case STAT_QUEUED:
 			if (dcc->type == TYPE_SEND || dcc->type == TYPE_CHATSEND)
 			{
-				if (tim - dcc->offertime > prefs.dcctimeout)
+				if (tim - dcc->offertime > prefs.hex_dcc_timeout)
 				{
-					if (prefs.dcctimeout > 0)
+					if (prefs.hex_dcc_timeout > 0)
 					{
 						EMIT_SIGNAL (XP_TE_DCCTOUT, dcc->serv->front_session,
 										 dcctypes[dcc->type],
@@ -280,7 +280,7 @@ dcc_check_timeouts (void)
 		case STAT_DONE:
 		case STAT_FAILED:
 		case STAT_ABORTED:
-			if (prefs.dcc_remove)
+			if (prefs.hex_dcc_remove)
 				dcc_close (dcc, 0, TRUE);
 			break;
 		}
@@ -389,9 +389,9 @@ dcc_close (struct DCC *dcc, int dccstat, int destroy)
 			if(dcc->type == TYPE_RECV)
 			{			
 				/* mgl: change this to use destfile_fs for correctness and to */
-				/* handle the case where dccwithnick is set */
-				move_file_utf8 (prefs.dccdir, prefs.dcc_completed_dir, 
-									 file_part (dcc->destfile), prefs.dccpermissions);
+				/* handle the case where hex_dcc_save_nick is set */
+				move_file_utf8 (prefs.hex_dcc_dir, prefs.hex_dcc_completed_dir, 
+									 file_part (dcc->destfile), prefs.hex_dcc_permissions);
 			}
 
 		}
@@ -687,7 +687,7 @@ dcc_read (GIOChannel *source, GIOCondition condition, struct DCC *dcc)
 	{
 
 		/* try to create the download dir (even if it exists, no harm) */
-		mkdir_utf8 (prefs.dccdir);
+		mkdir_utf8 (prefs.hex_dcc_dir);
 
 		if (dcc->resumable)
 		{
@@ -718,7 +718,7 @@ dcc_read (GIOChannel *source, GIOCondition condition, struct DCC *dcc)
 			}
 			dcc->fp =
 				open (dcc->destfile_fs, OFLAGS | O_TRUNC | O_WRONLY | O_CREAT,
-						prefs.dccpermissions);
+						prefs.hex_dcc_permissions);
 		}
 	}
 	if (dcc->fp == -1)
@@ -874,7 +874,7 @@ dcc_connect_finished (GIOChannel *source, GIOCondition condition, struct DCC *dc
 		break;
 	case TYPE_SEND:
 		/* passive send */
-		dcc->fastsend = prefs.fastdccsend;
+		dcc->fastsend = prefs.hex_dcc_fast_send;
 		if (dcc->fastsend)
 			dcc->wiotag = fe_input_add (dcc->sok, FIA_WRITE, dcc_send_data, dcc);
 		dcc->iotag = fe_input_add (dcc->sok, FIA_READ|FIA_EX, dcc_read_ack, dcc);
@@ -1441,11 +1441,11 @@ dcc_send_data (GIOChannel *source, GIOCondition condition, struct DCC *dcc)
 	char *buf;
 	int len, sent, sok = dcc->sok;
 
-	if (prefs.dcc_blocksize < 1) /* this is too little! */
-		prefs.dcc_blocksize = 1024;
+	if (prefs.hex_dcc_blocksize < 1) /* this is too little! */
+		prefs.hex_dcc_blocksize = 1024;
 
-	if (prefs.dcc_blocksize > 102400)	/* this is too much! */
-		prefs.dcc_blocksize = 102400;
+	if (prefs.hex_dcc_blocksize > 102400)	/* this is too much! */
+		prefs.hex_dcc_blocksize = 102400;
 
 	if (dcc->throttled)
 	{
@@ -1462,12 +1462,12 @@ dcc_send_data (GIOChannel *source, GIOCondition condition, struct DCC *dcc)
 	else if (!dcc->wiotag)
 		dcc->wiotag = fe_input_add (sok, FIA_WRITE, dcc_send_data, dcc);
 
-	buf = malloc (prefs.dcc_blocksize);
+	buf = malloc (prefs.hex_dcc_blocksize);
 	if (!buf)
 		return TRUE;
 
 	lseek (dcc->fp, dcc->pos, SEEK_SET);
-	len = read (dcc->fp, buf, prefs.dcc_blocksize);
+	len = read (dcc->fp, buf, prefs.hex_dcc_blocksize);
 	if (len < 1)
 		goto abortit;
 	sent = send (sok, buf, len, 0);
@@ -1612,7 +1612,7 @@ dcc_accept (GIOChannel *source, GIOCondition condition, struct DCC *dcc)
 
 	dcc->dccstat = STAT_ACTIVE;
 	dcc->lasttime = dcc->starttime = time (0);
-	dcc->fastsend = prefs.fastdccsend;
+	dcc->fastsend = prefs.hex_dcc_fast_send;
 
 	snprintf (host, sizeof (host), "%s:%d", net_ip (dcc->addr), dcc->port);
 
@@ -1648,11 +1648,11 @@ dcc_get_my_address (void)	/* the address we'll tell the other person */
 	struct hostent *dns_query;
 	guint32 addr = 0;
 
-	if (prefs.ip_from_server && prefs.dcc_ip)
+	if (prefs.hex_dcc_ip_from_server && prefs.dcc_ip)
 		addr = prefs.dcc_ip;
-	else if (prefs.dcc_ip_str[0])
+	else if (prefs.hex_dcc_ip[0])
 	{
-	   dns_query = gethostbyname ((const char *) prefs.dcc_ip_str);
+	   dns_query = gethostbyname ((const char *) prefs.hex_dcc_ip);
 
 	   if (dns_query != NULL &&
 	       dns_query->h_length == 4 &&
@@ -1696,14 +1696,14 @@ dcc_listen_init (struct DCC *dcc, session *sess)
 		my_addr = SAddr.sin_addr.s_addr;
 
 	/*if we have a valid portrange try to use that*/
-	if (prefs.first_dcc_send_port > 0)
+	if (prefs.hex_dcc_port_first > 0)
 	{
 		SAddr.sin_port = 0;
 		i = 0;
-		while ((prefs.last_dcc_send_port > ntohs(SAddr.sin_port)) &&
+		while ((prefs.hex_dcc_port_last > ntohs(SAddr.sin_port)) &&
 				(bindretval == -1))
 		{
-			SAddr.sin_port = htons (prefs.first_dcc_send_port + i);
+			SAddr.sin_port = htons (prefs.hex_dcc_port_first + i);
 			i++;
 			/*printf("Trying to bind against port: %d\n",ntohs(SAddr.sin_port));*/
 			bindretval = bind (dcc->sok, (struct sockaddr *) &SAddr, sizeof (SAddr));
@@ -1733,7 +1733,7 @@ dcc_listen_init (struct DCC *dcc, session *sess)
 	dcc->port = ntohs (SAddr.sin_port);
 
 	/*if we have a dcc_ip, we use that, so the remote client can connect*/
-	/*else we try to take an address from dcc_ip_str*/
+	/*else we try to take an address from hex_dcc_ip*/
 	/*if something goes wrong we tell the client to connect to our LAN ip*/
 	dcc->addr = dcc_get_my_address ();
 
@@ -1847,7 +1847,7 @@ dcc_send (struct session *sess, char *to, char *file, int maxcps, int passive)
 				{
 					if (*file == ' ')
 					{
-						if (prefs.dcc_send_fillspaces)
+						if (prefs.hex_dcc_send_fillspaces)
 				    		*file = '_';
 					  	else
 					   	havespaces = 1;
@@ -2074,7 +2074,7 @@ dcc_get (struct DCC *dcc)
 	case STAT_QUEUED:
 		if (dcc->type != TYPE_CHATSEND)
 		{
-			if (dcc->type == TYPE_RECV && prefs.autoresume && dcc->resumable)
+			if (dcc->type == TYPE_RECV && prefs.hex_dcc_auto_resume && dcc->resumable)
 			{
 				dcc_resume (dcc);
 			}
@@ -2307,9 +2307,11 @@ dcc_add_chat (session *sess, char *nick, int port, guint32 addr, int pasvid)
 		} else
 			fe_dcc_add (dcc);
 
-		if (prefs.autodccchat == 1)
+		if (prefs.hex_dcc_auto_chat)
+		{
 			dcc_connect (dcc);
-		else if (prefs.autodccchat == 2)
+		}
+		else
 		{
 			char buff[128];
 			snprintf (buff, sizeof (buff), "%s is offering DCC Chat. Do you want to accept?", nick);
@@ -2331,13 +2333,13 @@ dcc_add_file (session *sess, char *file, DCC_SIZE size, int port, char *nick, gu
 	{
 		dcc->file = strdup (file);
 
-		dcc->destfile = g_malloc (strlen (prefs.dccdir) + strlen (nick) +
+		dcc->destfile = g_malloc (strlen (prefs.hex_dcc_dir) + strlen (nick) +
 										  strlen (file) + 4);
 
-		strcpy (dcc->destfile, prefs.dccdir);
-		if (prefs.dccdir[strlen (prefs.dccdir) - 1] != '/')
+		strcpy (dcc->destfile, prefs.hex_dcc_dir);
+		if (prefs.hex_dcc_dir[strlen (prefs.hex_dcc_dir) - 1] != '/')
 			strcat (dcc->destfile, "/");
-		if (prefs.dccwithnick)
+		if (prefs.hex_dcc_save_nick)
 		{
 #ifdef WIN32
 			char *t = strlen (dcc->destfile) + dcc->destfile;
@@ -2368,21 +2370,19 @@ dcc_add_file (session *sess, char *file, DCC_SIZE size, int port, char *nick, gu
 		dcc->pasvid = pasvid;
 		dcc->size = size;
 		dcc->nick = strdup (nick);
-		dcc->maxcps = prefs.dcc_max_get_cps;
+		dcc->maxcps = prefs.hex_dcc_max_get_cps;
 
 		is_resumable (dcc);
 
-		/* autodccsend is really autodccrecv.. right? */
-
-		if (prefs.autodccsend == 1)
-		{
-			dcc_get (dcc);
-		}
-		else if (prefs.autodccsend == 2)
+		if (prefs.hex_dcc_auto_recv == 1)
 		{
 			snprintf (tbuf, sizeof (tbuf), _("%s is offering \"%s\". Do you want to accept?"), nick, file);
 			fe_confirm (tbuf, dcc_confirm_send, dcc_deny_send, dcc);
 		}
+		else if (prefs.hex_dcc_auto_recv == 2)
+		{
+			dcc_get (dcc);
+		}
 		if (prefs.autoopendccrecvwindow)
 		{
 			if (fe_dcc_open_recv_win (TRUE))	/* was already open? just add*/
diff --git a/src/common/inbound.c b/src/common/inbound.c
index 23947dfc..67bc2ea9 100644
--- a/src/common/inbound.c
+++ b/src/common/inbound.c
@@ -1109,7 +1109,7 @@ do_dns (session *sess, char *nick, char *host)
 	if (po)
 		host = po + 1;
 	EMIT_SIGNAL (XP_TE_RESOLVINGUSER, sess, nick, host, NULL, NULL, 0);
-	snprintf (tbuf, sizeof (tbuf), "exec -d %s %s", prefs.dnsprogram, host);
+	snprintf (tbuf, sizeof (tbuf), "exec -d %s %s", prefs.hex_dnsprogram, host);
 	handle_command (sess, tbuf, FALSE);
 }
 
@@ -1301,7 +1301,7 @@ inbound_login_end (session *sess, char *text)
 
 	if (!serv->end_of_motd)
 	{
-		if (prefs.ip_from_server && serv->use_who)
+		if (prefs.hex_dcc_ip_from_server && serv->use_who)
 		{
 			serv->skip_next_userhost = TRUE;
 			serv->p_get_ip_uh (serv, serv->nick);	/* sends USERHOST mynick */
diff --git a/src/common/outbound.c b/src/common/outbound.c
index 2d3dff34..4529c49e 100644
--- a/src/common/outbound.c
+++ b/src/common/outbound.c
@@ -865,7 +865,7 @@ cmd_dcc (struct session *sess, char *tbuf, char *word[], char *word_eol[])
 			if (!*nick)
 				return FALSE;
 
-			maxcps = prefs.dcc_max_send_cps;
+			maxcps = prefs.hex_dcc_max_send_cps;
 			if (!g_ascii_strncasecmp(nick, "-maxcps=", 8))
 			{
 				maxcps = atoi(nick + 8);
@@ -1450,7 +1450,7 @@ cmd_dns (struct session *sess, char *tbuf, char *word[], char *word_eol[])
 			}
 		} else
 		{
-			snprintf (tbuf, TBUFSIZE, "exec -d %s %s", prefs.dnsprogram, nick);
+			snprintf (tbuf, TBUFSIZE, "exec -d %s %s", prefs.hex_dnsprogram, nick);
 			handle_command (sess, tbuf, FALSE);
 		}
 		return TRUE;
diff --git a/src/common/proto-irc.c b/src/common/proto-irc.c
index c1ca8af3..02df18e0 100644
--- a/src/common/proto-irc.c
+++ b/src/common/proto-irc.c
@@ -471,7 +471,7 @@ process_numeric (session * sess, int n,
 			(strrchr(word[10], '@') != NULL))
 		{
 			serv->use_who = FALSE;
-			if (prefs.ip_from_server)
+			if (prefs.hex_dcc_ip_from_server)
 				inbound_foundip (sess, strrchr(word[10], '@')+1);
 		}
 
diff --git a/src/common/xchat.h b/src/common/xchat.h
index 33d7c29c..85a57e33 100644
--- a/src/common/xchat.h
+++ b/src/common/xchat.h
@@ -105,13 +105,29 @@ struct nbexec
 struct hexchatprefs
 {
 	/* these are the rebranded, consistent, sorted hexchat variables */
+
 	char hex_away_reason[256];
 	char hex_completion_suffix[4];		/* Only ever holds a one-character string. */
+	char hex_dcc_completed_dir[PATHLEN + 1];
+	char hex_dcc_dir[PATHLEN + 1];
+	char hex_dcc_ip[DOMAINLEN + 1];
+	char hex_dnsprogram[72];
 
 	int hex_away_size_max;
 	int hex_away_timeout;
 	int hex_completion_amount;
 	int hex_completion_sort;
+	int hex_dcc_auto_recv;
+	int hex_dcc_blocksize;
+	int hex_dcc_global_max_get_cps;
+	int hex_dcc_global_max_send_cps;
+	int hex_dcc_max_get_cps;
+	int hex_dcc_max_send_cps;
+	int hex_dcc_permissions;
+	int hex_dcc_port_first;
+	int hex_dcc_port_last;
+	int hex_dcc_stall_timeout;
+	int hex_dcc_timeout;
 
 	unsigned int hex_away_auto_unmark;
 	unsigned int hex_away_omit_alerts;
@@ -119,8 +135,16 @@ struct hexchatprefs
 	unsigned int hex_away_show_once;
 	unsigned int hex_away_track;
 	unsigned int hex_completion_auto;
+	unsigned int hex_dcc_auto_chat;
+	unsigned int hex_dcc_auto_resume;
+	unsigned int hex_dcc_fast_send;
+	unsigned int hex_dcc_ip_from_server;
+	unsigned int hex_dcc_remove;
+	unsigned int hex_dcc_save_nick;
+	unsigned int hex_dcc_send_fillspaces;
 
 	/* these are the legacy variables */
+
 	char nick1[NICKLEN];
 	char nick2[NICKLEN];
 	char nick3[NICKLEN];
@@ -136,12 +160,9 @@ struct hexchatprefs
 	char sounddir[PATHLEN + 1];
 	char soundcmd[PATHLEN + 1];
 	char background[PATHLEN + 1];
-	char dccdir[PATHLEN + 1];
-	char dcc_completed_dir[PATHLEN + 1];
 	char irc_extra_hilight[300];
 	char irc_no_hilight[300];
 	char irc_nick_hilight[300];
-	char dnsprogram[72];
 	char hostname[127];
 	char cmdchar[4];
 	char logmask[256];
@@ -158,9 +179,6 @@ struct hexchatprefs
 	char proxy_user[32];
 	char proxy_pass[32];
 
-	int first_dcc_send_port;
-	int last_dcc_send_port;
-
 	int tint_red;
 	int tint_green;
 	int tint_blue;
@@ -176,15 +194,8 @@ struct hexchatprefs
 
 	int tab_layout;
 	int max_auto_indent;
-	int dcc_blocksize;
 	int max_lines;
 	int notify_timeout;
-	int dcctimeout;
-	int dccstalltimeout;
-	int dcc_global_max_get_cps;
-	int dcc_global_max_send_cps;
-	int dcc_max_get_cps;
-	int dcc_max_send_cps;
 	int mainwindow_left;
 	int mainwindow_top;
 	int mainwindow_width;
@@ -196,13 +207,11 @@ struct hexchatprefs
 	int dialog_top;
 	int dialog_width;
 	int dialog_height;
-	int dccpermissions;
 	int recon_delay;
 	int bantype;
 	int userlist_sort;
 	guint32 local_ip;
 	guint32 dcc_ip;
-	char dcc_ip_str[DOMAINLEN + 1];
 
 	unsigned int tab_small;
 	unsigned int tab_icons;
@@ -227,9 +236,6 @@ struct hexchatprefs
 	unsigned int showhostname_in_userlist;
 	unsigned int tabchannels;
 	unsigned int paned_userlist;
-	unsigned int autodccchat;
-	unsigned int autodccsend;
-	unsigned int autoresume;
 	unsigned int autoopendccsendwindow;
 	unsigned int autoopendccrecvwindow;
 	unsigned int autoopendccchatwindow;
@@ -238,9 +244,6 @@ struct hexchatprefs
 	unsigned int text_stripcolor_replay;
 	unsigned int text_stripcolor_topic;
 	unsigned int timestamp;
-	unsigned int fastdccsend;
-	unsigned int dcc_send_fillspaces;
-	unsigned int dcc_remove;
 	unsigned int slist_fav;
 	unsigned int slist_skip;
 	unsigned int slist_select;
@@ -269,9 +272,7 @@ struct hexchatprefs
 	unsigned int logging;
 	unsigned int timestamp_logs;
 	unsigned int newtabstofront;
-	unsigned int dccwithnick;
 	unsigned int hidever;
-	unsigned int ip_from_server;
 	unsigned int raw_modes;
 	unsigned int userhost;
 	unsigned int irc_whois_front;
diff --git a/src/fe-gtk/dccgui.c b/src/fe-gtk/dccgui.c
index c003d1ab..30c7ef03 100644
--- a/src/fe-gtk/dccgui.c
+++ b/src/fe-gtk/dccgui.c
@@ -165,7 +165,7 @@ fe_dcc_send_filereq (struct session *sess, char *nick, int maxcps, int passive)
 	mdc->passive = passive;
 
 	snprintf (tbuf, sizeof tbuf, _("Send file to %s"), nick);
-	gtkutil_file_req (tbuf, dcc_send_filereq_file, mdc, prefs.dccdir, NULL, FRF_MULTIPLE|FRF_FILTERISINITIAL);
+	gtkutil_file_req (tbuf, dcc_send_filereq_file, mdc, prefs.hex_dcc_dir, NULL, FRF_MULTIPLE|FRF_FILTERISINITIAL);
 }
 
 static void
@@ -562,10 +562,10 @@ browse_folder (char *dir)
 static void
 browse_dcc_folder (void)
 {
-	if (prefs.dcc_completed_dir[0])
-		browse_folder (prefs.dcc_completed_dir);
+	if (prefs.hex_dcc_completed_dir[0])
+		browse_folder (prefs.hex_dcc_completed_dir);
 	else
-		browse_folder (prefs.dccdir);
+		browse_folder (prefs.hex_dcc_dir);
 }
 
 static void
diff --git a/src/fe-gtk/maingui.c b/src/fe-gtk/maingui.c
index c52ddb2f..8fec6109 100644
--- a/src/fe-gtk/maingui.c
+++ b/src/fe-gtk/maingui.c
@@ -1697,7 +1697,7 @@ mg_dnd_drop_file (session *sess, char *target, char *uri)
 				p = xchat_filename_to_utf8 (fname, -1, 0, 0, 0);
 				if (p)
 				{
-					dcc_send (sess, target, p, prefs.dcc_max_send_cps, 0);
+					dcc_send (sess, target, p, prefs.hex_dcc_max_send_cps, 0);
 					g_free (p);
 				}
 				g_free (fname);
diff --git a/src/fe-gtk/setup.c b/src/fe-gtk/setup.c
index 1178b5ce..e6b41ae5 100644
--- a/src/fe-gtk/setup.c
+++ b/src/fe-gtk/setup.c
@@ -363,37 +363,37 @@ static const setting color_settings[] =
 
 static const char *const dccaccept[] =
 {
-	N_("No"),
-	N_("Yes"),
-	N_("Browse for save folder every time"),
+	N_("Ask for confirmation"),
+	N_("Ask for download folder"),
+	N_("Save without interaction"),
 	NULL
 };
 
 static const setting filexfer_settings[] =
 {
 	{ST_HEADER, N_("Files and Directories"), 0, 0, 0},
-	{ST_MENU,	N_("Auto accept file offers:"), P_OFFINTNL(autodccsend), 0, dccaccept, 0},
-	{ST_EFOLDER,N_("Download files to:"), P_OFFSETNL(dccdir), 0, 0, sizeof prefs.dccdir},
-	{ST_EFOLDER,N_("Move completed files to:"), P_OFFSETNL(dcc_completed_dir), 0, 0, sizeof prefs.dcc_completed_dir},
-	{ST_TOGGLE, N_("Save nick name in filenames"), P_OFFINTNL(dccwithnick), 0, 0, 0},
+	{ST_MENU,	N_("Auto accept file offers:"), P_OFFINTNL(hex_dcc_auto_recv), 0, dccaccept, 0},
+	{ST_EFOLDER,N_("Download files to:"), P_OFFSETNL(hex_dcc_dir), 0, 0, sizeof prefs.hex_dcc_dir},
+	{ST_EFOLDER,N_("Move completed files to:"), P_OFFSETNL(hex_dcc_completed_dir), 0, 0, sizeof prefs.hex_dcc_completed_dir},
+	{ST_TOGGLE, N_("Save nick name in filenames"), P_OFFINTNL(hex_dcc_save_nick), 0, 0, 0},
 
 	{ST_HEADER, N_("Network Settings"), 0, 0, 0},
-	{ST_TOGGLE, N_("Get my address from the IRC server"), P_OFFINTNL(ip_from_server),
+	{ST_TOGGLE, N_("Get my address from the IRC server"), P_OFFINTNL(hex_dcc_ip_from_server),
 					N_("Asks the IRC server for your real address. Use this if you have a 192.168.*.* address!"), 0, 0},
-	{ST_ENTRY,	N_("DCC IP address:"), P_OFFSETNL(dcc_ip_str),
-					N_("Claim you are at this address when offering files."), 0, sizeof prefs.dcc_ip_str},
-	{ST_NUMBER,	N_("First DCC send port:"), P_OFFINTNL(first_dcc_send_port), 0, 0, 65535},
-	{ST_NUMBER,	N_("Last DCC send port:"), P_OFFINTNL(last_dcc_send_port), 0, 
+	{ST_ENTRY,	N_("DCC IP address:"), P_OFFSETNL(hex_dcc_ip),
+					N_("Claim you are at this address when offering files."), 0, sizeof prefs.hex_dcc_ip},
+	{ST_NUMBER,	N_("First DCC send port:"), P_OFFINTNL(hex_dcc_port_first), 0, 0, 65535},
+	{ST_NUMBER,	N_("Last DCC send port:"), P_OFFINTNL(hex_dcc_port_last), 0, 
 		(const char **)N_("!Leave ports at zero for full range."), 65535},
 
 	{ST_HEADER, N_("Maximum File Transfer Speeds (bytes per second)"), 0, 0, 0},
-	{ST_NUMBER,	N_("One upload:"), P_OFFINTNL(dcc_max_send_cps), 
+	{ST_NUMBER,	N_("One upload:"), P_OFFINTNL(hex_dcc_max_send_cps), 
 					N_("Maximum speed for one transfer"), 0, 1000000},
-	{ST_NUMBER,	N_("One download:"), P_OFFINTNL(dcc_max_get_cps),
+	{ST_NUMBER,	N_("One download:"), P_OFFINTNL(hex_dcc_max_get_cps),
 					N_("Maximum speed for one transfer"), 0, 1000000},
-	{ST_NUMBER,	N_("All uploads combined:"), P_OFFINTNL(dcc_global_max_send_cps),
+	{ST_NUMBER,	N_("All uploads combined:"), P_OFFINTNL(hex_dcc_global_max_send_cps),
 					N_("Maximum speed for all files"), 0, 1000000},
-	{ST_NUMBER,	N_("All downloads combined:"), P_OFFINTNL(dcc_global_max_get_cps),
+	{ST_NUMBER,	N_("All downloads combined:"), P_OFFINTNL(hex_dcc_global_max_get_cps),
 					N_("Maximum speed for all files"), 0, 1000000},
 
 	{ST_END, 0, 0, 0, 0, 0}
@@ -2134,11 +2134,11 @@ setup_apply_real (int new_pix, int do_ulist, int do_layout)
 	int done_main = FALSE;
 
 	/* remove trailing slashes */
-	unslash (prefs.dccdir);
-	unslash (prefs.dcc_completed_dir);
+	unslash (prefs.hex_dcc_dir);
+	unslash (prefs.hex_dcc_completed_dir);
 
-	mkdir_utf8 (prefs.dccdir);
-	mkdir_utf8 (prefs.dcc_completed_dir);
+	mkdir_utf8 (prefs.hex_dcc_dir);
+	mkdir_utf8 (prefs.hex_dcc_completed_dir);
 
 	if (new_pix)
 	{
@@ -2277,9 +2277,9 @@ setup_apply (struct hexchatprefs *pr)
 						" restart to take full effect."), FE_MSG_WARN);
 
 #ifndef WIN32
-	if (prefs.autodccsend == 1)
+	if (prefs.hex_dcc_auto_recv)
 	{
-		if (!strcmp ((char *)g_get_home_dir (), prefs.dccdir))
+		if (!strcmp ((char *)g_get_home_dir (), prefs.hex_dcc_dir))
 		{
 			fe_message (_("*WARNING*\n"
 							 "Auto accepting DCC to your home directory\n"