changeset 4491:3196d9044a45

[gaim-migrate @ 4766] aim_user is dead. long live gaim_account. committer: Tailor Script <tailor@pidgin.im>
author Nathan Walp <nwalp@pidgin.im>
date Fri, 31 Jan 2003 13:03:47 +0000
parents 70b892694e0b
children d629e7989a8a
files .todo HACKING TODO plugins/SIGNALS plugins/autorecon.c plugins/docklet/docklet.c plugins/filectl.c plugins/ticker/ticker.c src/away.c src/buddy.c src/conversation.c src/conversation.h src/core.c src/core.h src/dialogs.c src/gaim.h src/gaimrc.c src/gtkconv.c src/list.c src/main.c src/multi.c src/multi.h src/perl.c src/protocols/gg/gg.c src/protocols/icq/gaim_icq.c src/protocols/irc/irc.c src/protocols/jabber/jabber.c src/protocols/msn/msn.c src/protocols/napster/napster.c src/protocols/oscar/oscar.c src/protocols/toc/toc.c src/protocols/yahoo/yahoo.c src/protocols/zephyr/zephyr.c src/prpl.c src/prpl.h src/server.c src/sound.c src/ui.h src/util.c
diffstat 39 files changed, 1095 insertions(+), 1150 deletions(-) [+]
line wrap: on
line diff
--- a/.todo	Fri Jan 31 06:51:49 2003 +0000
+++ b/.todo	Fri Jan 31 13:03:47 2003 +0000
@@ -72,7 +72,7 @@
             make entry widget height preference a relative size, that is it doesn't change the overall height of the window.
         </note>
         <note priority="medium" time="1036039984">
-            Only show one instance of each aim_user at a time in the sign on dialog. reset the progress bar on disconnect instead of creating a new entry.
+            Only show one instance of each gaim_account at a time in the sign on dialog. reset the progress bar on disconnect instead of creating a new entry.
         </note>
         <note priority="medium" time="1036040014">
             buddy pounce stuff
--- a/HACKING	Fri Jan 31 06:51:49 2003 +0000
+++ b/HACKING	Fri Jan 31 13:03:47 2003 +0000
@@ -38,8 +38,8 @@
 either post it on sf.net/projects/gaim in the patches section, or email it
 to gaim@marko.net.
 
-This file was last modified by $Author: warmenhoven $ on
-$Date: 2001-12-09 09:06:36 -0500 (Sun, 09 Dec 2001) $. Do not expect any information contained
+This file was last modified by $Author: faceprint $ on
+$Date: 2003-01-31 08:03:47 -0500 (Fri, 31 Jan 2003) $. Do not expect any information contained
 within to be current or correct.
 
 Here's something new. Someone requested that I comment the code. No. I'm a
@@ -117,8 +117,8 @@
 wait until I really start describing how the buddy list works.)
 
 New connections happen the exact same way as described above. Each
-aim_user can have one gaim_connection associated with it. aim_user and
-gaim_connection both have a protocol field. This is kind of confusing:
+gaim_account can have one gaim_connection associated with it. gaim_account
+and gaim_connection both have a protocol field. This is kind of confusing:
 gaim, except for the account editor screen and when the user signs on,
 ignores the user's protocl field, and only uses the connection's protocol
 field. You can change the connection's protocol field once it's created
@@ -436,10 +436,10 @@
 ==============================
 
 OK, let's start with the basics. There are users. Each user is contained
-in an aim_user struct, and kept track of in the aim_users GList (GSList?).
-Each aim_user has certain features: a username, a password, and user_info.
-It also has certain options, and the protocol it uses to sign on (kept
-as an int which is #define'd in prpl.h).
+in an gaim_account struct, and kept track of in the gaim_accounts GSList.
+Each gaim_account has certain features: a username, a password, and
+user_info.  It also has certain options, and the protocol it uses to sign
+on (kept as an int which is #define'd in prpl.h).
 
 Now then, there are protocols that gaim knows about. Each protocol is
 in a prpl struct and kept track of in the protocols GSList. The way the
@@ -459,11 +459,11 @@
 the User (capitalized to indicate a person and not a name) will try to
 sign on one of Their users. serv_login is then called for that user. It
 searches for the prpl that is assigned to that user, and calls that prpl's
-login function, passing it the aim_user struct that is attempting to sign
-on. The prpl is then responsible for seeing that the gaim_connection
+login function, passing it the gaim_account struct that is attempting to
+sign on. The prpl is then responsible for seeing that the gaim_connection
 is created (by calling new_gaim_connection), and registering it as
-being online (by calling account_online and passing it the aim_user and
-gaim_connection structs). At that point, the aim_user and gaim_connection
+being online (by calling account_online and passing it the gaim_account and
+gaim_connection structs). At that point, the gaim_account and gaim_connection
 structs have pointers to each other, and the gaim_connection struct has
 a pointer to the prpl struct that it is using. The gaim_connections are
 stored in the connections GSList.  The way connection management works is,
--- a/TODO	Fri Jan 31 06:51:49 2003 +0000
+++ b/TODO	Fri Jan 31 13:03:47 2003 +0000
@@ -351,7 +351,7 @@
 	option not to raise windows on event while away
 	make entry widget height preference a relative size, that is it doesn't change the
 		overall height of the window.
-	Only show one instance of each aim_user at a time in the sign on dialog. 
+	Only show one instance of each gaim_account at a time in the sign on dialog. 
 		reset the progress bar on disconnect instead of creating a new entry.
 	Status labels in buddy list (mostly just for yahoo/msn)
 	buddy pounce -> drop down list of buddies
--- a/plugins/SIGNALS	Fri Jan 31 06:51:49 2003 +0000
+++ b/plugins/SIGNALS	Fri Jan 31 13:03:47 2003 +0000
@@ -347,7 +347,7 @@
 	'c'	is the conversation being closed.
 
 event_connecting:
-	struct aim_user *u
+	struct gaim_account *u
 
 	This is called when Gaim attempts to bring a user on-line. The
 	boolean u->connecting is set to true, and connecting_count
--- a/plugins/autorecon.c	Fri Jan 31 06:51:49 2003 +0000
+++ b/plugins/autorecon.c	Fri Jan 31 13:03:47 2003 +0000
@@ -19,10 +19,10 @@
 static guint tim = 0;
 
 static gboolean do_signon(gpointer data) {
-	struct aim_user *u = data;
-	if (g_slist_index(aim_users, u) < 0)
+	struct gaim_account *account = data;
+	if (g_slist_index(gaim_accounts, account) < 0)
 		return FALSE;
-	serv_login(u);
+	serv_login(account);
 	tim = 0;
 	return FALSE;
 }
@@ -30,15 +30,15 @@
 static void reconnect(struct gaim_connection *gc, void *m) {
 	if (!gc->wants_to_die) {
 		int del;
-		del = (int)g_hash_table_lookup(hash, gc->user);
+		del = (int)g_hash_table_lookup(hash, gc->account);
 		if (!del)
 			del = INITIAL;
 		else
 			del = MAX(2 * del, MAXTIME);
-		tim = g_timeout_add(del, do_signon, gc->user);
-		g_hash_table_insert(hash, gc->user, (gpointer)del);
+		tim = g_timeout_add(del, do_signon, gc->account);
+		g_hash_table_insert(hash, gc->account, (gpointer)del);
 	} else {
-		g_hash_table_remove(hash, gc->user);
+		g_hash_table_remove(hash, gc->account);
 	}
 }
 
--- a/plugins/docklet/docklet.c	Fri Jan 31 06:51:49 2003 +0000
+++ b/plugins/docklet/docklet.c	Fri Jan 31 13:03:47 2003 +0000
@@ -358,7 +358,7 @@
 	g_idle_add(docklet_update_status, &docklet);
 }
 
-static void gaim_connecting(struct aim_user *user, void *data) {
+static void gaim_connecting(struct gaim_account *account, void *data) {
 	docklet_update_status();
 }
 
--- a/plugins/filectl.c	Fri Jan 31 06:51:49 2003 +0000
+++ b/plugins/filectl.c	Fri Jan 31 13:03:47 2003 +0000
@@ -38,22 +38,22 @@
 		debug_printf("read: %s\n", buffer);
 		command = getarg(buffer, 0, 0);
 		if (!strncasecmp(command, "signon", 6)) {
-			struct aim_user *u = NULL;
-			GSList *userlist = aim_users;
+			struct gaim_account *account = NULL;
+			GSList *accts = gaim_accounts;
 			arg1 = getarg(buffer, 1, 1);
 			if (arg1) {
-				while (userlist) {
-					struct aim_user *current = userlist->data;
-					if (!strcmp(current->username, arg1)) {
-						u = current;
+				while (accts) {
+					struct gaim_account *a = accts->data;
+					if (!strcmp(a->username, arg1)) {
+						account = a;
 						break;
 					}
-					userlist = userlist->next;
+					accts = accts->next;
 				}
 				free(arg1);
 			}
-			if (u) /* username found */
-				serv_login(u);
+			if (account) /* username found */
+				serv_login(account);
 		} else if (!strncasecmp(command, "signoff", 7)) {
 			struct gaim_connection *gc = NULL;
 			GSList *c = connections;
--- a/plugins/ticker/ticker.c	Fri Jan 31 06:51:49 2003 +0000
+++ b/plugins/ticker/ticker.c	Fri Jan 31 13:03:47 2003 +0000
@@ -343,8 +343,8 @@
 			b = (struct buddy *)buds->data;
 			if( b->present ) {
 				xpm = NULL;
-				if (b->user->gc->prpl->list_icon)
-					xpm = b->user->gc->prpl->list_icon(b->uc);
+				if (b->account->gc->prpl->list_icon)
+					xpm = b->account->gc->prpl->list_icon(b->uc);
 				if (xpm == NULL)
 					xpm = (char **)no_icon_xpm;
 				pm = gdk_pixmap_create_from_xpm_d(blist->window, &bm, NULL, xpm);
@@ -358,7 +358,7 @@
 }
 
 void signon_cb(struct gaim_connection *gc, char *who) {
-	struct buddy *b  = find_buddy(gc->user, who);
+	struct buddy *b  = find_buddy(gc->account, who);
 	char **xpm = NULL;
 	
 	GdkPixmap *pm;
@@ -389,7 +389,7 @@
 }
 
 void away_cb(struct gaim_connection *gc, char *who) {
-	struct buddy *b  = find_buddy(gc->user, who);
+	struct buddy *b  = find_buddy(gc->account, who);
 	char **xpm = NULL;
 	
 	GdkPixmap *pm;
--- a/src/away.c	Fri Jan 31 06:51:49 2003 +0000
+++ b/src/away.c	Fri Jan 31 13:03:47 2003 +0000
@@ -63,33 +63,33 @@
 	struct gaim_conversation *cnv;
 
 	gtk_tree_model_get(GTK_TREE_MODEL(awayqueuestore), iter, 0, &name, -1);
-	
+
 	debug_printf("Unqueueing messages from %s.\n", name);
-	
+
 	templist = message_queue;
-	
+
 	while (templist) {
 		struct queued_message *qm = templist->data;
 		if (templist->data) {
 			if (!g_strcasecmp(qm->name, name)) {
-				struct aim_user *user = NULL;
+				struct gaim_account *account = NULL;
 
 				if (g_slist_index(connections, qm->gc) >= 0)
-					user = qm->gc->user;
+					account = qm->gc->account;
 
 				cnv = gaim_find_conversation(name);
 
 				if (!cnv)
-					cnv = gaim_conversation_new(GAIM_CONV_IM, user, qm->name);
+					cnv = gaim_conversation_new(GAIM_CONV_IM, account, qm->name);
 				else
-					gaim_conversation_set_user(cnv, user);
+					gaim_conversation_set_account(cnv, account);
 
 				gaim_im_write(GAIM_IM(cnv), NULL, qm->message, qm->len,
 						qm->flags, qm->tm);
 				g_free(qm->message);
 				g_free(qm);
 				templist = message_queue = g_slist_remove(message_queue, qm);
-				
+
 			} else {
 				templist = templist->next;
 			}
@@ -107,22 +107,22 @@
 	GSList *q = *queue;
 	struct queued_message *qm;
 	struct gaim_conversation *cnv;
-	struct aim_user *user;
+	struct gaim_account *account;
 
 	while (q) {
 		qm = q->data;
 
-		user = NULL;
+		account = NULL;
 
 		if (g_slist_index(connections, qm->gc) >= 0)
-			user = qm->gc->user;
+			account = qm->gc->account;
 
 		cnv = gaim_find_conversation(qm->name);
 
 		if (!cnv)
-			cnv = gaim_conversation_new(GAIM_CONV_IM, user, qm->name);
+			cnv = gaim_conversation_new(GAIM_CONV_IM, account, qm->name);
 		else
-			gaim_conversation_set_user(cnv, user);
+			gaim_conversation_set_account(cnv, account);
 
 		gaim_im_write(GAIM_IM(cnv), NULL, qm->message, -1, qm->flags, qm->tm);
 
@@ -140,17 +140,17 @@
 gint dequeue_cb(GtkWidget *treeview, GdkEventButton *event, gpointer data) {
 	GtkTreeIter iter;
 	GtkTreeSelection *select;
-	
+
 	if(!(event->type == GDK_2BUTTON_PRESS && event->button == 1))
 		return FALSE; /* Double clicking on the list will unqueue that user's messages. */
-	
+
 	select = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview));
 	if(gtk_tree_selection_get_selected(select, NULL, &iter))
 			dequeue_message(&iter);
 
 	return FALSE;
 }
-	
+
 
 
 void toggle_away_queue()
--- a/src/buddy.c	Fri Jan 31 06:51:49 2003 +0000
+++ b/src/buddy.c	Fri Jan 31 13:03:47 2003 +0000
@@ -183,7 +183,7 @@
 	}
 
 	if (g_strcasecmp(b->name, prevname)) {
-		bs->connlist = g_slist_remove(bs->connlist, b->user->gc);
+		bs->connlist = g_slist_remove(bs->connlist, b->account->gc);
 		if (!bs->connlist) {
 			gs->members = g_slist_remove(gs->members, bs);
 			if (bs->log_timer > 0)
@@ -355,7 +355,7 @@
 	if (g) {
 		for (c = g->members; c; c = c->next) {
 			b = c->data;
-			if(b->user->gc) {
+			if(b->account->gc) {
 				if(b->present)
 					on++;
 				total++;
@@ -443,7 +443,7 @@
 	if (c != NULL)
 		gaim_window_show(gaim_conversation_get_window(c));
 	else
-		c = gaim_conversation_new(GAIM_CONV_IM, b->user, b->name);
+		c = gaim_conversation_new(GAIM_CONV_IM, b->account, b->name);
 }
 
 void pressed_im(GtkWidget *widget, struct buddy_show *b)
@@ -455,10 +455,10 @@
 	if (c != NULL) {
 		gaim_window_show(gaim_conversation_get_window(c));
 	} else {
-		struct aim_user *user;
-
-		user = ((struct gaim_connection *)b->connlist->data)->user;
-		c    = gaim_conversation_new(GAIM_CONV_IM, user, b->name);
+		struct gaim_account *account;
+
+		account = ((struct gaim_connection *)b->connlist->data)->account;
+		c    = gaim_conversation_new(GAIM_CONV_IM, account, b->name);
 	}
 }
 
@@ -475,7 +475,7 @@
 void pressed_alias_bs(GtkWidget *widget, struct buddy_show *bs)
 {
 	struct gaim_connection *gc = bs->connlist->data;
-	alias_dialog_bud(find_buddy(gc->user, bs->name));
+	alias_dialog_bud(find_buddy(gc->account, bs->name));
 }
 
 void pressed_alias_bud(GtkWidget *widget, struct buddy *b)
@@ -498,9 +498,9 @@
 
 	if (event->type == GDK_2BUTTON_PRESS && event->button == 1) {
 		struct gaim_conversation *c;
-		struct aim_user *user;
-
-		user = ((struct gaim_connection *)b->connlist->data)->user;
+		struct gaim_account *account;
+
+		account = ((struct gaim_connection *)b->connlist->data)->account;
 
 		c = gaim_find_conversation(b->name);
 
@@ -511,10 +511,10 @@
 			gaim_window_switch_conversation(win, index);
 			gaim_window_show(win);
 
-			gaim_conversation_set_user(c, user);
+			gaim_conversation_set_account(c, account);
 		}
 		else
-			c = gaim_conversation_new(GAIM_CONV_IM, user, b->name);
+			c = gaim_conversation_new(GAIM_CONV_IM, account, b->name);
 
 		gaim_window_switch_conversation(gaim_conversation_get_window(c),
 										gaim_conversation_get_index(c));
@@ -561,7 +561,7 @@
 		button = gtk_menu_item_new_with_label(_("Add Buddy Pounce"));
 		g_signal_connect(GTK_OBJECT(button), "activate",
 				   G_CALLBACK(new_bp_callback),
-				   cn ? find_buddy(((struct gaim_connection *)cn->data)->user, b->name) : NULL);
+				   cn ? find_buddy(((struct gaim_connection *)cn->data)->account, b->name) : NULL);
 		gtk_menu_append(GTK_MENU(menu), button);
 		gtk_widget_show(button);
 
@@ -751,8 +751,8 @@
 		/*
 		 * Add protocol-specific edit buddy menu items if they exist
 		 */
-		if (b->user->gc && b->user->gc->prpl->edit_buddy_menu) {
-			GList *mo = mo_top = b->user->gc->prpl->edit_buddy_menu(b->user->gc, b->name);
+		if (b->account->gc && b->account->gc->prpl->edit_buddy_menu) {
+			GList *mo = mo_top = b->account->gc->prpl->edit_buddy_menu(b->account->gc, b->name);
 
 			while (mo) {
 				struct proto_buddy_menu *pbm = mo->data;
@@ -803,8 +803,8 @@
 	if (gs) {
 		bs = find_buddy_show(gs, rem_b->name);
 		if (bs) {
-			if (g_slist_find(bs->connlist, rem_b->user->gc)) {
-				bs->connlist = g_slist_remove(bs->connlist, rem_b->user->gc);
+			if (g_slist_find(bs->connlist, rem_b->account->gc)) {
+				bs->connlist = g_slist_remove(bs->connlist, rem_b->account->gc);
 				if (!g_slist_length(bs->connlist)) {
 					gs->members = g_slist_remove(gs->members, bs);
 					if (bs->log_timer > 0)
@@ -936,14 +936,14 @@
 					gs = new_group_show(g->name);
 				bs = find_buddy_show(gs, b->name);
 				if (!bs) {
-					if (b->user->gc->prpl->list_icon)
+					if (b->account->gc->prpl->list_icon)
 						bs = new_buddy_show(gs, b,
-								b->user->gc->prpl->list_icon(b->
+								b->account->gc->prpl->list_icon(b->
 									uc));
 					else
 						bs = new_buddy_show(gs, b, (char **)no_icon_xpm);
 				}
-				bs->connlist = g_slist_append(bs->connlist, b->user->gc);
+				bs->connlist = g_slist_append(bs->connlist, b->account->gc);
 				update_num_group(gs);
 			}
 		}
@@ -961,14 +961,14 @@
 		c = (struct gaim_conversation *)l->data;
 
 		if (!g_slist_find(connections, gaim_conversation_get_gc(c))) {
-			struct aim_user *user;
+			struct gaim_account *account;
 
 			if (connections == NULL)
-				user = ((struct gaim_connection *)connections->data)->user;
+				account = ((struct gaim_connection *)connections->data)->account;
 			else
-				user = NULL;
-
-			gaim_conversation_set_user(c, user);
+				account = NULL;
+
+			gaim_conversation_set_account(c, account);
 		}
 	}
 }
@@ -1112,7 +1112,7 @@
 		while (mem) {
 			char buf[256];
 			b = (struct buddy *)mem->data;
-			if(b->user->gc) {
+			if(b->account->gc) {
 				if (get_buddy_alias_only(b)) {
 					g_snprintf(buf, sizeof(buf), "%s (%s)", b->name, get_buddy_alias(b));
 					text[0] = buf;
@@ -1150,7 +1150,7 @@
 	if (!blist)
 		return;
 
-	if(!b->user->gc)
+	if(!b->account->gc)
 		return;
 
 	p = gtk_ctree_find_by_row_data(GTK_CTREE(edittree), NULL, g);
@@ -1200,7 +1200,7 @@
 		if (*type == EDIT_BUDDY) {
 			b = (struct buddy *)type;
 			g = find_group_by_buddy(b);
-			serv_remove_buddy(b->user->gc, b->name, g->name);
+			serv_remove_buddy(b->account->gc, b->name, g->name);
 			remove_buddy(b);
 			gaim_blist_save();
 		} else if (*type == EDIT_GROUP) {
@@ -1236,12 +1236,12 @@
 			struct buddy *b = (struct buddy *)type;
 			struct group *g = find_group_by_buddy(b);
 			grp = g->name;
-			gc = b->user->gc;
+			gc = b->account->gc;
 		} else if (*type == EDIT_GROUP) {
 			struct group *g = (struct group *)type;
 			grp = g->name;
 			if(g->members)
-				gc = ((struct buddy *)g->members->data)->user->gc;
+				gc = ((struct buddy *)g->members->data)->account->gc;
 			else
 				gc = connections->data;
 		} else {
@@ -1264,7 +1264,7 @@
 		node = i->data;
 		type = (int *)gtk_ctree_node_get_row_data(GTK_CTREE(edittree), node);
 		if (*type == EDIT_BUDDY)
-			gc = ((struct buddy *)type)->user->gc;
+			gc = ((struct buddy *)type)->account->gc;
 		else if (*type == EDIT_GROUP)
 			gc = connections->data;
 		else
@@ -1278,7 +1278,7 @@
 	GList *i;
 	struct buddy_show *b = NULL;
 	struct gaim_conversation *c;
-	struct aim_user *user;
+	struct gaim_account *account;
 
 	i = GTK_TREE_SELECTION_OLD(tree);
 	if (i) {
@@ -1291,14 +1291,14 @@
 	if (!b->name)
 		return;
 
-	user = ((struct gaim_connection *)b->connlist->data)->user;
+	account = ((struct gaim_connection *)b->connlist->data)->account;
 
 	c = gaim_find_conversation(b->name);
 
 	if (c == NULL)
-		c = gaim_conversation_new(GAIM_CONV_IM, user, b->name);
+		c = gaim_conversation_new(GAIM_CONV_IM, account, b->name);
 	else {
-		gaim_conversation_set_user(c, user);
+		gaim_conversation_set_account(c, account);
 		gaim_window_raise(gaim_conversation_get_window(c));
 	}
 }
@@ -1372,7 +1372,7 @@
 
 	struct buddy_pounce *b;
 	struct gaim_conversation *c;
-	struct aim_user *u;
+	struct gaim_account *account;
 
 	GList *bp = buddy_pounces;
 
@@ -1385,12 +1385,12 @@
 		if (!(b->options & when))
 			continue;
 
-		u = find_user(b->pouncer, b->protocol);	/* find our user */
-		if (u == NULL)
+		account = gaim_account_find(b->pouncer, b->protocol);	/* find our user */
+		if (account == NULL)
 			continue;
 
 		/* check and see if we're signed on as the pouncer */
-		if (u->gc != gc)
+		if (account->gc != gc)
 			continue;
 
 		if (!g_strcasecmp(who, normalize (b->name))) {	/* find someone to pounce */
@@ -1398,9 +1398,9 @@
 				c = gaim_find_conversation(name);
 
 				if (c == NULL)
-					c = gaim_conversation_new(GAIM_CONV_IM, u, name);
+					c = gaim_conversation_new(GAIM_CONV_IM, account, name);
 				else
-					gaim_conversation_set_user(c, u);
+					gaim_conversation_set_account(c, account);
 			}
 			if (b->options & OPT_POUNCE_NOTIFY) {
 				char tmp[1024];
@@ -1421,14 +1421,14 @@
 					c = gaim_find_conversation(name);
 
 					if (c == NULL)
-						c = gaim_conversation_new(GAIM_CONV_IM, u, name);
+						c = gaim_conversation_new(GAIM_CONV_IM, account, name);
 					else
-						gaim_conversation_set_user(c, u);
+						gaim_conversation_set_account(c, account);
 
 					gaim_conversation_write(c, NULL, b->message, -1,
 											WFLAG_SEND, time(NULL));
 
-					serv_send_im(u->gc, name, b->message, -1, 0);
+					serv_send_im(account->gc, name, b->message, -1, 0);
 				}
 			}
 			if (b->options & OPT_POUNCE_COMMAND) {
@@ -1475,7 +1475,7 @@
 static void new_bp_callback(GtkWidget *w, struct buddy *b)
 {
 	if (b)
-		show_new_bp(b->name, b->user->gc, b->idle, b->uc & UC_UNAVAILABLE, NULL);
+		show_new_bp(b->name, b->account->gc, b->idle, b->uc & UC_UNAVAILABLE, NULL);
 	else
 		show_new_bp(NULL, NULL, 0, 0, NULL);
 }
@@ -1966,7 +1966,7 @@
 		GdkBitmap *bm;
 		gchar **xpm = NULL;
 		struct gaim_connection *gc = b->connlist->data;
-		struct buddy *light = find_buddy(gc->user, b->name);
+		struct buddy *light = find_buddy(gc->account, b->name);
 		if (gc->prpl->list_icon)
 			xpm = gc->prpl->list_icon(light->uc);
 		if (xpm == NULL)
@@ -2083,7 +2083,7 @@
 	if (!bs->connlist)
 		return;
 	gc = bs->connlist->data;
-	b = find_buddy(gc->user, bs->name);
+	b = find_buddy(gc->account, bs->name);
 	if (!b)
 		return;
 	ihrs = (t - b->idle) / 3600;
--- a/src/conversation.c	Fri Jan 31 06:51:49 2003 +0000
+++ b/src/conversation.c	Fri Jan 31 13:03:47 2003 +0000
@@ -842,7 +842,7 @@
  * Conversation API
  **************************************************************************/
 struct gaim_conversation *
-gaim_conversation_new(GaimConversationType type, struct aim_user *user,
+gaim_conversation_new(GaimConversationType type, struct gaim_account *account,
 					  const char *name)
 {
 	struct gaim_conversation *conv;
@@ -851,13 +851,13 @@
 		return NULL;
 
 	/* Check if this conversation already exists. */
-	if ((conv = gaim_find_conversation_with_user(name, user)) != NULL)
+	if ((conv = gaim_find_conversation_with_account(name, account)) != NULL)
 		return conv;
 
 	conv = g_malloc0(sizeof(struct gaim_conversation));
 
 	conv->type         = type;
-	conv->user         = user;
+	conv->account      = account;
 	conv->name         = g_strdup(name);
 	conv->title        = g_strdup(name);
 	conv->send_history = g_list_append(NULL, NULL);
@@ -1051,40 +1051,40 @@
 }
 
 void
-gaim_conversation_set_user(struct gaim_conversation *conv,
-						   struct aim_user *user)
+gaim_conversation_set_account(struct gaim_conversation *conv,
+						   struct gaim_account *account)
 {
-	if (conv == NULL || user == gaim_conversation_get_user(conv))
+	if (conv == NULL || account == gaim_conversation_get_account(conv))
 		return;
 
-	conv->user = user;
-
-	gaim_conversation_update(conv, GAIM_CONV_UPDATE_USER);
+	conv->account = account;
+
+	gaim_conversation_update(conv, GAIM_CONV_UPDATE_ACCOUNT);
 }
 
-struct aim_user *
-gaim_conversation_get_user(const struct gaim_conversation *conv)
+struct gaim_account *
+gaim_conversation_get_account(const struct gaim_conversation *conv)
 {
 	if (conv == NULL)
 		return NULL;
 
-	return conv->user;
+	return conv->account;
 }
 
 struct gaim_connection *
 gaim_conversation_get_gc(const struct gaim_conversation *conv)
 {
-	struct aim_user *user;
+	struct gaim_account *account;
 
 	if (conv == NULL)
 		return NULL;
 
-	user = gaim_conversation_get_user(conv);
-
-	if (user == NULL)
+	account = gaim_conversation_get_account(conv);
+
+	if (account == NULL)
 		return NULL;
 
-	return user->gc;
+	return account->gc;
 }
 
 void
@@ -1118,18 +1118,18 @@
 void
 gaim_conversation_autoset_title(struct gaim_conversation *conv)
 {
-	struct aim_user *user;
+	struct gaim_account *account;
 	struct buddy *b;
 	const char *text, *name;
 
 	if (conv == NULL)
 		return;
 
-	user = gaim_conversation_get_user(conv);
+	account = gaim_conversation_get_account(conv);
 	name = gaim_conversation_get_name(conv);
 
 	if (((im_options & OPT_IM_ALIAS_TAB) == OPT_IM_ALIAS_TAB) &&
-		user != NULL && ((b = find_buddy(user, name)) != NULL)) {
+		account != NULL && ((b = find_buddy(account, name)) != NULL)) {
 
 		text = get_buddy_alias(b);
 	}
@@ -1320,7 +1320,7 @@
 }
 
 struct gaim_conversation *
-gaim_find_conversation_with_user(const char *name, const struct aim_user *user)
+gaim_find_conversation_with_account(const char *name, const struct gaim_account *account)
 {
 	struct gaim_conversation *c = NULL;
 	char *cuser;
@@ -1335,7 +1335,7 @@
 		c = (struct gaim_conversation *)cnv->data;
 
 		if (!g_strcasecmp(cuser, normalize(gaim_conversation_get_name(c))) &&
-			user == gaim_conversation_get_user(c)) {
+			account == gaim_conversation_get_account(c)) {
 
 			break;
 		}
@@ -1383,19 +1383,19 @@
 
 		if (who == NULL) {
 			if ((flags & WFLAG_SEND) == WFLAG_SEND) {
-				b = find_buddy(gc->user, gc->username);
+				b = find_buddy(gc->account, gc->username);
 
 				if (b != NULL && strcmp(b->name, get_buddy_alias(b)))
 					who = get_buddy_alias(b);
-				else if (*gc->user->alias)
-					who = gc->user->alias;
+				else if (*gc->account->alias)
+					who = gc->account->alias;
 				else if (*gc->displayname)
 					who = gc->displayname;
 				else
 					who = gc->username;
 			}
 			else {
-				b = find_buddy(gc->user, gaim_conversation_get_name(conv));
+				b = find_buddy(gc->account, gaim_conversation_get_name(conv));
 
 				if (b != NULL)
 					who = get_buddy_alias(b);
@@ -1404,7 +1404,7 @@
 			}
 		}
 		else {
-			b = find_buddy(gc->user, who);
+			b = find_buddy(gc->account, who);
 
 			if (b != NULL)
 				who = get_buddy_alias(b);
@@ -2072,7 +2072,7 @@
 		struct group *grp = NULL;
 		GList *wins, *convs;
 
-		b = find_buddy(gaim_conversation_get_user(conv),
+		b = find_buddy(gaim_conversation_get_account(conv),
 					   gaim_conversation_get_name(conv));
 
 		if (b != NULL)
@@ -2093,7 +2093,7 @@
 
 				conv2 = (struct gaim_conversation *)convs->data;
 
-				b2 = find_buddy(gaim_conversation_get_user(conv2),
+				b2 = find_buddy(gaim_conversation_get_account(conv2),
 								gaim_conversation_get_name(conv2));
 
 				if (b2 != NULL)
--- a/src/conversation.h	Fri Jan 31 06:51:49 2003 +0000
+++ b/src/conversation.h	Fri Jan 31 13:03:47 2003 +0000
@@ -67,7 +67,7 @@
 							       was added.   */
 	GAIM_CONV_UPDATE_REMOVE,  /**< The buddy associated with the conversation
 								   was removed. */
-	GAIM_CONV_UPDATE_USER,    /**< The aim_user was changed. */
+	GAIM_CONV_UPDATE_ACCOUNT, /**< The gaim_account was changed. */
 	GAIM_CONV_UPDATE_TYPING,  /**< The typing state was updated. */
 	GAIM_CONV_UPDATE_UNSEEN,  /**< The unseen state was updated. */
 	GAIM_CONV_UPDATE_LOGGING, /**< Logging for this conversation was
@@ -197,7 +197,7 @@
 {
 	GaimConversationType type;  /**< The type of conversation.          */
 
-	struct aim_user *user;      /**< The user using this conversation.  */
+	struct gaim_account *account;  /**< The user using this conversation.  */
 	struct gaim_window *window; /**< The parent window.                 */
 
 	int conversation_pos;       /**< The position in the window's list. */
@@ -426,7 +426,7 @@
  * @return The new conversation.
  */
 struct gaim_conversation *gaim_conversation_new(GaimConversationType type,
-												struct aim_user *user,
+												struct gaim_account *account,
 												const char *name);
 
 /**
@@ -470,28 +470,28 @@
 		struct gaim_conversation *conv);
 
 /**
- * Sets the specified conversation's aim_user.
+ * Sets the specified conversation's gaim_account.
  *
- * This aim_user represents the user using gaim, not the person the user
+ * This gaim_account represents the user using gaim, not the person the user
  * is having a conversation/chat/flame with.
  *
  * @param conv The conversation.
- * @param user The aim_user.
+ * @param account The gaim_account.
  */
-void gaim_conversation_set_user(struct gaim_conversation *conv,
-								struct aim_user *user);
+void gaim_conversation_set_account(struct gaim_conversation *conv,
+								struct gaim_account *account);
 
 /**
- * Returns the specified conversation's aim_user.
+ * Returns the specified conversation's gaim_account.
  *
- * This aim_user represents the user using gaim, not the person the user
+ * This gaim_account represents the user using gaim, not the person the user
  * is having a conversation/chat/flame with.
  *
  * @param conv The conversation.
  *
- * @return The conversation's aim_user.
+ * @return The conversation's gaim_account.
  */
-struct aim_user *gaim_conversation_get_user(
+struct gaim_account *gaim_conversation_get_account(
 		const struct gaim_conversation *conv);
 
 /**
@@ -688,12 +688,12 @@
  * Finds a conversation with the specified name and user.
  *
  * @param name The name of the conversation.
- * @param user The aim_user associated with the conversation.
+ * @param account The gaim_account associated with the conversation.
  *
  * @return The conversation if found, or @c NULL otherwise.
  */
-struct gaim_conversation *gaim_find_conversation_with_user(
-		const char *name, const struct aim_user *user);
+struct gaim_conversation *gaim_find_conversation_with_account(
+		const char *name, const struct gaim_account *account);
 
 /**
  * Writes to a conversation window.
--- a/src/core.c	Fri Jan 31 06:51:49 2003 +0000
+++ b/src/core.c	Fri Jan 31 13:03:47 2003 +0000
@@ -213,7 +213,7 @@
 static void user_handler(struct UI *ui, guchar subtype, guchar *data)
 {
 	guint id;
-	struct aim_user *u;
+	struct gaim_account *account;
 
 	switch (subtype) {
 		/*
@@ -230,9 +230,9 @@
 		if (!data)
 			return;
 		memcpy(&id, data, sizeof(id));
-		u = g_slist_nth_data(aim_users, id);
-		if (u)
-			serv_login(u);
+		account = g_slist_nth_data(gaim_accounts, id);
+		if (account)
+			serv_login(account);
 		/* don't need to do anything here because the UI will get updates from other handlers */
 		break;
 	default:
--- a/src/core.h	Fri Jan 31 06:51:49 2003 +0000
+++ b/src/core.h	Fri Jan 31 13:03:47 2003 +0000
@@ -42,7 +42,7 @@
 #include <gmodule.h>
 #endif
 
-struct aim_user;
+struct gaim_account;
 struct group;
 struct buddy;
 
@@ -56,7 +56,7 @@
 /* This is far too long to be practical, but MSN users are probably used to long aliases */
 #define SELF_ALIAS_LEN 400
 
-struct aim_user {
+struct gaim_account {
 	char username[64];
 	char alias[SELF_ALIAS_LEN]; 
 	char password[32];
@@ -168,7 +168,7 @@
         int uc;
 	guint caps; /* woohoo! */
 	void *proto_data; /* what a hack */
-	struct aim_user *user; /* the connection it belongs to */
+	struct gaim_account *account; /* the connection it belongs to */
 	GHashTable *settings;
 };
 
@@ -189,27 +189,27 @@
 extern GList *callbacks;
 
 /* Functions in buddy.c */
-extern struct buddy *find_buddy(struct aim_user *, const char *);
+extern struct buddy *find_buddy(struct gaim_account *, const char *);
 extern struct group *find_group(const char *);
 extern struct group *find_group_by_buddy(struct buddy *);
-extern struct buddy *add_buddy(struct aim_user *, const char *, const char *, const char *);
+extern struct buddy *add_buddy(struct gaim_account *, const char *, const char *, const char *);
 extern void remove_buddy(struct buddy *);
 extern struct group *add_group(const char *);
 extern void remove_group(struct group *);
-extern void toc_build_config(struct aim_user *, char *, int len, gboolean);
-extern void parse_toc_buddy_list(struct aim_user *, char *);
+extern void toc_build_config(struct gaim_account *, char *, int len, gboolean);
+extern void parse_toc_buddy_list(struct gaim_account *, char *);
 extern void signoff_blocked(struct gaim_connection *);
 extern char* get_buddy_alias_only(struct buddy *);
 extern char* get_buddy_alias(struct buddy *);
 extern GSList *gaim_group_get_accounts(struct group *);
-extern gboolean gaim_group_on_account(struct group *, struct aim_user *);
-extern void do_import(struct aim_user *, const char *);
+extern gboolean gaim_group_on_account(struct group *, struct gaim_account *);
+extern void do_import(struct gaim_account *, const char *);
 extern void gaim_blist_load();
 extern void gaim_blist_save();
-extern gboolean gaim_privacy_permit_add(struct aim_user *, const char *);
-extern gboolean gaim_privacy_permit_remove(struct aim_user *, const char *);
-extern gboolean gaim_privacy_deny_add(struct aim_user *, const char *);
-extern gboolean gaim_privacy_deny_remove(struct aim_user *, const char *);
+extern gboolean gaim_privacy_permit_add(struct gaim_account *, const char *);
+extern gboolean gaim_privacy_permit_remove(struct gaim_account *, const char *);
+extern gboolean gaim_privacy_deny_add(struct gaim_account *, const char *);
+extern gboolean gaim_privacy_deny_remove(struct gaim_account *, const char *);
 extern void gaim_buddy_set_setting(struct buddy *, const char *, const char *);
 extern char *gaim_buddy_get_setting(struct buddy *, const char *);
 
--- a/src/dialogs.c	Fri Jan 31 06:51:49 2003 +0000
+++ b/src/dialogs.c	Fri Jan 31 13:03:47 2003 +0000
@@ -136,7 +136,7 @@
 	GtkWidget *sound;
 	GtkWidget *soundentry;
 
-	struct aim_user *user;
+	struct gaim_account *account;
 	struct buddy_pounce *buddy_pounce;
 };
 
@@ -195,7 +195,7 @@
 struct set_info_dlg {
 	GtkWidget *window;
 	GtkWidget *menu;
-	struct aim_user *user;
+	struct gaim_account *account;
 	GtkWidget *text;
 	GtkWidget *save;
 	GtkWidget *cancel;
@@ -203,7 +203,7 @@
 
 struct set_icon_dlg {
 	GtkWidget *window;
-	struct aim_user *user;
+	struct gaim_account *account;
 	GtkWidget *ok;
 	GtkWidget *cancel;
 	GtkWidget *entry;
@@ -460,7 +460,7 @@
 	g = find_group_by_buddy(b);
 
 	debug_printf(_("Removing '%s' from buddy list.\n"), b->name);
-	serv_remove_buddy(b->user->gc, name, g->name);
+	serv_remove_buddy(b->account->gc, name, g->name);
 	remove_buddy(b);
 	gaim_blist_save();
 
@@ -474,7 +474,7 @@
 
 void show_confirm_del(struct gaim_connection *gc, gchar *name)
 {
-	struct buddy *bd = find_buddy(gc->user, name);
+	struct buddy *bd = find_buddy(gc->account, name);
 	char *text;
 	if (!bd)
 		return;
@@ -561,7 +561,7 @@
 {
 	const char *who;
 	struct gaim_conversation *conv;
-	struct aim_user *user;
+	struct gaim_account *account;
 
 	if (resp == GTK_RESPONSE_OK) {
 		who = gtk_entry_get_text(GTK_ENTRY(info->entry));
@@ -571,17 +571,17 @@
 			return;
 		}
 
-		user = (info->gc ? info->gc->user : NULL);
+		account = (info->gc ? info->gc->account : NULL);
 
 		conv = gaim_find_conversation(who);
 
 		if (conv == NULL)
-			conv = gaim_conversation_new(GAIM_CONV_IM, user, who);
+			conv = gaim_conversation_new(GAIM_CONV_IM, account, who);
 		else {
 			gaim_window_raise(gaim_conversation_get_window(conv));
 
-			if (user)
-				gaim_conversation_set_user(conv, info->gc->user);
+			if (account)
+				gaim_conversation_set_account(conv, account);
 		}
 	}
 
@@ -890,7 +890,7 @@
 
 		c = gaim_find_conversation(who);
 
-		add_buddy(a->gc->user, grp, who, whoalias);
+		add_buddy(a->gc->account, grp, who, whoalias);
 		serv_add_buddy(a->gc, who);
 
 		if (c != NULL)
@@ -1181,7 +1181,7 @@
 	if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w)))
 		return;
 	debug_printf("setting deny mode %d\n", data);
-	current_deny_gc->user->permdeny = data;
+	current_deny_gc->account->permdeny = data;
 	serv_set_permit_deny(current_deny_gc);
 	gaim_blist_save();
 }
@@ -1199,7 +1199,7 @@
 
 	g_signal_connect(GTK_OBJECT(opt), "toggled", G_CALLBACK(set_deny_mode), (void *)which);
 	gtk_widget_show(opt);
-	if (current_deny_gc->user->permdeny == which)
+	if (current_deny_gc->account->permdeny == which)
 		gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(opt), TRUE);
 
 	return opt;
@@ -1224,7 +1224,7 @@
 {
 	GSList *bg = gtk_radio_button_group(GTK_RADIO_BUTTON(deny_type));
 
-	switch (current_deny_gc->user->permdeny) {
+	switch (current_deny_gc->account->permdeny) {
 	case 5:
 		bg = bg->next->next;
 		break;
@@ -1253,7 +1253,7 @@
 	if (!current_is_deny)
 		return;
 
-	p = current_deny_gc->user->permit;
+	p = current_deny_gc->account->permit;
 
 	gtk_list_store_clear(GTK_LIST_STORE(allow_store));
 
@@ -1277,7 +1277,7 @@
 	if (!current_is_deny)
 		return;
 
-	d = current_deny_gc->user->deny;
+	d = current_deny_gc->account->deny;
 
 	gtk_list_store_clear(GTK_LIST_STORE(block_store));
 
@@ -1395,18 +1395,18 @@
 		return;
 
 	if (permit) {
-		char *name = find_permdeny_by_name(current_deny_gc->user->permit, who);
+		char *name = find_permdeny_by_name(current_deny_gc->account->permit, who);
 
 		if (name) {
-			gaim_privacy_permit_remove(current_deny_gc->user, name);
+			gaim_privacy_permit_remove(current_deny_gc->account, name);
 			serv_rem_permit(current_deny_gc, who);
 			build_allow_list();
 		}
 	} else {
-		char *name = find_permdeny_by_name(current_deny_gc->user->deny, who);
+		char *name = find_permdeny_by_name(current_deny_gc->account->deny, who);
 
 		if (name) {
-			gaim_privacy_deny_remove(current_deny_gc->user, name);
+			gaim_privacy_deny_remove(current_deny_gc->account, name);
 			serv_rem_deny(current_deny_gc, who);
 			build_block_list();
 		}
@@ -1637,9 +1637,9 @@
 	g_snprintf(bp->message, 2048, "%s", gtk_entry_get_text(GTK_ENTRY(b->messentry)));
 	g_snprintf(bp->command, 2048, "%s", gtk_entry_get_text(GTK_ENTRY(b->commentry)));
 	g_snprintf(bp->sound, 2048, "%s", gtk_entry_get_text(GTK_ENTRY(b->soundentry)));
-	g_snprintf(bp->pouncer, 80, "%s", b->user->username);
-
-	bp->protocol = b->user->protocol;
+	g_snprintf(bp->pouncer, 80, "%s", b->account->username);
+
+	bp->protocol = b->account->protocol;
 
 	bp->options = 0;
 
@@ -1686,8 +1686,8 @@
 
 static void pounce_choose(GtkWidget *opt, struct addbp *b)
 {
-	struct aim_user *u = gtk_object_get_user_data(GTK_OBJECT(opt));
-	b->user = u;
+	struct gaim_account *account = gtk_object_get_user_data(GTK_OBJECT(opt));
+	b->account = account;
 }
 
 static GtkWidget *pounce_user_menu(struct addbp *b, struct gaim_connection *gc)
@@ -1695,8 +1695,8 @@
 	GtkWidget *optmenu;
 	GtkWidget *menu;
 	GtkWidget *opt;
-	GSList *u = aim_users;
-	struct aim_user *a;
+	GSList *u = gaim_accounts;
+	struct gaim_account *account;
 	struct prpl *p;
 	int count = 0;
 	int place = 0;
@@ -1708,22 +1708,22 @@
 	menu = gtk_menu_new();
 
 	while (u) {
-		a = (struct aim_user *)u->data;
-		p = (struct prpl *)find_prpl(a->protocol);
-		g_snprintf(buf, sizeof buf, "%s (%s)", a->username, (p && p->name)?p->name:_("Unknown"));
+		account = (struct gaim_account *)u->data;
+		p = (struct prpl *)find_prpl(account->protocol);
+		g_snprintf(buf, sizeof buf, "%s (%s)", account->username, (p && p->name)?p->name:_("Unknown"));
 		opt = gtk_menu_item_new_with_label(buf);
-		gtk_object_set_user_data(GTK_OBJECT(opt), a);
+		gtk_object_set_user_data(GTK_OBJECT(opt), account);
 		g_signal_connect(GTK_OBJECT(opt), "activate", G_CALLBACK(pounce_choose), b);
 		gtk_menu_append(GTK_MENU(menu), opt);
 		gtk_widget_show(opt);
 
-		if (b->user == a) {
+		if (b->account == account) {
 			gtk_menu_item_activate(GTK_MENU_ITEM(opt));
 			place = count;
 		}
 
 		count++;
-			
+
 		u = u->next;
 	}
 
@@ -1752,9 +1752,9 @@
 	
 	if(edit_bp) {
 		b->buddy_pounce = edit_bp;
-		b->user = find_user(edit_bp->pouncer, edit_bp->protocol);
+		b->account = gaim_account_find(edit_bp->pouncer, edit_bp->protocol);
 	} else {
-		b->user = gc ? gc->user : aim_users->data;
+		b->account = gc ? gc->account : gaim_accounts->data;
 		b->buddy_pounce = NULL;
 	}
 
@@ -2002,14 +2002,14 @@
 
 	junk = gtk_text_view_get_text(GTK_TEXT_VIEW(b->text), FALSE);
 
-	if (b->user) {
-		strncpy_withhtml(b->user->user_info, junk, sizeof b->user->user_info);
-		gc = b->user->gc;
+	if (b->account) {
+		strncpy_withhtml(b->account->user_info, junk, sizeof b->account->user_info);
+		gc = b->account->gc;
 
 		save_prefs();
 
 		if (gc)
-			serv_set_info(gc, b->user->user_info);
+			serv_set_info(gc, b->account->user_info);
 	}
 	g_free(junk);
 	destroy_dialog(NULL, b->window);
@@ -2324,11 +2324,11 @@
 	GtkTextBuffer *buffer;
 	GtkWidget *frame;
 	gchar *buf;
-	struct aim_user *tmp;
+	struct gaim_account *account;
 
 	struct set_info_dlg *b = g_new0(struct set_info_dlg, 1);
-	tmp = gc->user;
-	b->user = tmp;
+	account = gc->account;
+	b->account = account;
 
 	GAIM_DIALOG(b->window);
 	gtk_window_set_role(GTK_WINDOW(b->window), "set_info");
@@ -2343,12 +2343,12 @@
 	gtk_widget_show(vbox);
 
 	buf = g_malloc(256);
-	g_snprintf(buf, 256, _("Changing info for %s:"), tmp->username);
+	g_snprintf(buf, 256, _("Changing info for %s:"), account->username);
 	label = gtk_label_new(buf);
 	g_free(buf);
 	gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 5);
 	gtk_widget_show(label);
-	
+
 	frame = gtk_frame_new(NULL);
 	gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_IN);
 	gtk_box_pack_start(GTK_BOX(vbox), frame, TRUE, TRUE, 0);
@@ -2357,8 +2357,8 @@
 	b->text = gtk_text_view_new();
 	gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(b->text), GTK_WRAP_WORD);
 	gtk_widget_set_size_request(b->text, 300, 200);
-	buf = g_malloc(strlen(tmp->user_info) + 1);
-	strncpy_nohtml(buf, tmp->user_info, strlen(tmp->user_info) + 1);
+	buf = g_malloc(strlen(account->user_info) + 1);
+	strncpy_nohtml(buf, account->user_info, strlen(account->user_info) + 1);
 	buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(b->text));
 	gtk_text_buffer_set_text(buffer, buf, -1);
 	g_free(buf);
@@ -2488,13 +2488,13 @@
 	who = gtk_entry_get_text(GTK_ENTRY(p->entry));
 
 	if (!p->permit) {
-		if (gaim_privacy_deny_add(p->gc->user, who)) {
+		if (gaim_privacy_deny_add(p->gc->account, who)) {
 			serv_add_deny(p->gc, who);
 			build_block_list();
 			gaim_blist_save();
 		}
 	} else {
-		if (gaim_privacy_permit_add(p->gc->user, who)) {
+		if (gaim_privacy_permit_add(p->gc->account, who)) {
 			serv_add_permit(p->gc, who);
 			build_allow_list();
 			gaim_blist_save();
@@ -3399,7 +3399,7 @@
 		return;
 	}
 	if (g_slist_find(connections, importgc)) {
-		do_import(importgc->user, file);
+		do_import(importgc->account, file);
 		gaim_blist_save();
 	}
 	destroy_dialog(NULL, importdialog);
@@ -4369,8 +4369,8 @@
 				/* FIXME, i don't like calling this. it's sloppy. */ build_edit_tree();
 				accts = gaim_group_get_accounts(g);
 				while(accts) {
-					struct aim_user *au = accts->data;
-					serv_rename_group(au->gc, g, new_name);
+					struct gaim_account *account = accts->data;
+					serv_rename_group(account->gc, g, new_name);
 					accts = g_slist_remove(accts, accts->data);
 				}
 				g_free(g);
@@ -4378,8 +4378,8 @@
 				prevname = g_strdup(g->name);
 				accts = gaim_group_get_accounts(g);
 				while(accts) {
-					struct aim_user *au = accts->data;
-					serv_rename_group(au->gc, g, new_name);
+					struct gaim_account *account = accts->data;
+					serv_rename_group(account->gc, g, new_name);
 					accts = g_slist_remove(accts, accts->data);
 				}
 				g_snprintf(g->name, sizeof(g->name), "%s", new_name);
@@ -4465,7 +4465,7 @@
 	new_name = gtk_entry_get_text(GTK_ENTRY(entry));
 	b = gtk_object_get_user_data(obj);
 
-	if (!g_slist_find(connections, b->user->gc)) {
+	if (!g_slist_find(connections, b->account->gc)) {
 		destroy_dialog(rename_bud_dialog, rename_bud_dialog);
 		return;
 	}
@@ -4485,9 +4485,9 @@
 		struct group *g = find_group_by_buddy(b);
 		char *prevname = g_strdup(b->name);
 		if (g)
-			serv_remove_buddy(b->user->gc, b->name, g->name);
+			serv_remove_buddy(b->account->gc, b->name, g->name);
 		g_snprintf(b->name, sizeof(b->name), "%s", new_name);
-		serv_add_buddy(b->user->gc, b->name);
+		serv_add_buddy(b->account->gc, b->name);
 		handle_buddy_rename(b, prevname);
 		gaim_blist_save();
 		g_free(prevname);
@@ -5343,14 +5343,14 @@
 	/*
 	 * Set the user info and (possibly) send to the server
 	 */
-        if (b->user) {
-                strncpy(b->user->user_info, tmp, sizeof b->user->user_info);
-                gc = b->user->gc;
+        if (b->account) {
+                strncpy(b->account->user_info, tmp, sizeof b->account->user_info);
+                gc = b->account->gc;
 
                 save_prefs();
 
                 if (gc)
-                        serv_set_info(gc, b->user->user_info);
+                        serv_set_info(gc, b->account->user_info);
         }
 
 	g_free(tmp);
--- a/src/gaim.h	Fri Jan 31 06:51:49 2003 +0000
+++ b/src/gaim.h	Fri Jan 31 13:03:47 2003 +0000
@@ -151,11 +151,11 @@
 #  define _(x) (x)
 #endif
 
-#define OPT_USR_AUTO		0x00000001
-/*#define OPT_USR_KEEPALV	0x00000002 this shouldn't be optional */
-#define OPT_USR_REM_PASS	0x00000004
-#define OPT_USR_MAIL_CHECK      0x00000008
-/*do not use OPT_USR		0x00000010  talk to robot101 about automatic
+#define OPT_ACCT_AUTO		0x00000001
+/*#define OPT_ACCT_KEEPALV	0x00000002 this shouldn't be optional */
+#define OPT_ACCT_REM_PASS	0x00000004
+#define OPT_ACCT_MAIL_CHECK      0x00000008
+/*do not use OPT_ACCT		0x00000010  talk to robot101 about automatic
  						name stuff with this option
  */
 
@@ -351,7 +351,7 @@
 extern guint away_resend;
 extern int report_idle;
 extern int web_browser;
-extern GSList *aim_users;
+extern GSList *gaim_accounts;
 extern GSList *message_queue;
 extern GSList *unread_message_queue;
 extern GSList *away_time_queue;
@@ -415,7 +415,7 @@
 
 /* Functions in server.c */
 /* input to serv */
-extern void serv_login(struct aim_user *);
+extern void serv_login(struct gaim_account *);
 extern void serv_close(struct gaim_connection *);
 extern void serv_touch_idle(struct gaim_connection *);
 extern int  serv_send_im(struct gaim_connection *, char *, char *, int, int);
@@ -458,7 +458,7 @@
 extern char *date();
 extern gint linkify_text(char *);
 extern char *sec_to_text(guint);
-extern struct aim_user *find_user(const char *, int) G_GNUC_PURE;
+extern struct gaim_account *gaim_account_find(const char *, int) G_GNUC_PURE;
 extern char *full_date() G_GNUC_PURE;
 extern void check_gaim_versions();
 extern char *away_subs(char *, char *);
@@ -529,7 +529,7 @@
 	gchar *role;				/* window role */
 	char *title;				/* window title */
 
-	struct aim_user *user;			/* user info - needed for most everything */
+	struct gaim_account *account;			/* user info - needed for most everything */
 
 	MultiInstrData *instructions;		/* instructions (what else?) */
 
--- a/src/gaimrc.c	Fri Jan 31 06:51:49 2003 +0000
+++ b/src/gaimrc.c	Fri Jan 31 13:03:47 2003 +0000
@@ -47,7 +47,7 @@
 #define BORING_DEFAULT_AWAY_MSG "sorry, i ran out for a while. bbl"
 #define MAX_VALUES 10
 
-GSList *aim_users = NULL;
+GSList *gaim_accounts = NULL;
 guint misc_options;
 guint logging_options;
 guint blist_options;
@@ -476,11 +476,11 @@
 }
 #endif /* GAIM_PLUGINS */
 
-static struct aim_user *gaimrc_read_user(FILE *f)
+static struct gaim_account *gaimrc_read_user(FILE *f)
 {
 	struct parse parse_buffer;
 	struct parse *p;
-	struct aim_user *u;
+	struct gaim_account *account;
 	int i;
 	char buf[4096];
 
@@ -492,112 +492,112 @@
 	if (strcmp(p->option, "ident"))
 		return NULL;
 
-	u = g_new0(struct aim_user, 1);
+	account = g_new0(struct gaim_account, 1);
 
-	strcpy(u->username, p->value[0]);
-	strcpy(u->password, p->value[1]);
+	strcpy(account->username, p->value[0]);
+	strcpy(account->password, p->value[1]);
 
-	u->user_info[0] = 0;
-	u->options = OPT_USR_REM_PASS;
-	u->protocol = DEFAULT_PROTO;
-	u->permit = u->deny = NULL;
+	account->user_info[0] = 0;
+	account->options = OPT_ACCT_REM_PASS;
+	account->protocol = DEFAULT_PROTO;
+	account->permit = account->deny = NULL;
 
 	if (!fgets(buf, sizeof(buf), f))
-		return u;
+		return account;
 
 	if (strcmp(buf, "\t\tuser_info {\n")) {
-		return u;
+		return account;
 	}
 
 	if (!fgets(buf, sizeof(buf), f))
-		return u;
+		return account;
 
 	while (strncmp(buf, "\t\t}", 3)) {
 		if (strlen(buf) > 3)
-			strcat(u->user_info, buf + 3);
+			strcat(account->user_info, buf + 3);
 
 		if (!fgets(buf, sizeof(buf), f)) {
-			return u;
+			return account;
 		}
 	}
 
-	if ((i = strlen(u->user_info))) {
-		u->user_info[i - 1] = '\0';
+	if ((i = strlen(account->user_info))) {
+		account->user_info[i - 1] = '\0';
 	}
 
 	if (!fgets(buf, sizeof(buf), f)) {
-		return u;
+		return account;
 	}
 
 	if (!strcmp(buf, "\t}")) {
-		return u;
+		return account;
 	}
 
 	p = parse_line(buf, &parse_buffer);
 
 	if (strcmp(p->option, "user_opts"))
-		return u;
+		return account;
 
-	u->options = atoi(p->value[0]);
-	u->protocol = atoi(p->value[1]);
+	account->options = atoi(p->value[0]);
+	account->protocol = atoi(p->value[1]);
 
 	if (!fgets(buf, sizeof(buf), f))
-		return u;
+		return account;
 
 	if (!strcmp(buf, "\t}"))
-		return u;
+		return account;
 
 	p = parse_line(buf, &parse_buffer);
 
 	if (strcmp(p->option, "proto_opts"))
-		return u;
+		return account;
 
 	for (i = 0; i < 7; i++)
-		g_snprintf(u->proto_opt[i], sizeof u->proto_opt[i], "%s", p->value[i]);
+		g_snprintf(account->proto_opt[i], sizeof account->proto_opt[i], "%s", p->value[i]);
 
 	if (!fgets(buf, sizeof(buf), f))
-		return u;
+		return account;
 
 	if (!strcmp(buf, "\t}"))
-		return u;
+		return account;
 
 	p = parse_line(buf, &parse_buffer);
 
 	if (strcmp(p->option, "iconfile"))
-		return u;
+		return account;
 
-	g_snprintf(u->iconfile, sizeof(u->iconfile), "%s", p->value[0]);
+	g_snprintf(account->iconfile, sizeof(account->iconfile), "%s", p->value[0]);
 
 	if (!fgets(buf, sizeof(buf), f))
-		return u;
+		return account;
 
 	if (!strcmp(buf, "\t}"))
-		return u;
+		return account;
 
 	p = parse_line(buf, &parse_buffer);
 
 	if (strcmp(p->option, "alias"))
-		return u;
+		return account;
 
-	g_snprintf(u->alias, sizeof(u->alias), "%s", p->value[0]);
+	g_snprintf(account->alias, sizeof(account->alias), "%s", p->value[0]);
 
-	return u;
+	return account;
 
 }
 
-static void gaimrc_write_user(FILE *f, struct aim_user *u)
+static void gaimrc_write_user(FILE *f, struct gaim_account *account)
 {
 	char *c;
 	int nl = 1, i;
 
-	if (u->options & OPT_USR_REM_PASS) {
-		fprintf(f, "\t\tident { %s } { %s }\n", u->username, (c = escape_text2(u->password)));
+	if (account->options & OPT_ACCT_REM_PASS) {
+		fprintf(f, "\t\tident { %s } { %s }\n", account->username, (c = escape_text2(account->password)));
 		free(c);
 	} else {
-		fprintf(f, "\t\tident { %s } {  }\n", u->username);
+		fprintf(f, "\t\tident { %s } {  }\n", account->username);
 	}
 	fprintf(f, "\t\tuser_info {");
-	c = u->user_info;
+	c = account->user_info;
 	while (*c) {
 		/* This is not as silly as it looks. */
 		if (*c == '\n') {
@@ -614,29 +614,29 @@
 		c++;
 	}
 	fprintf(f, "\n\t\t}\n");
-	fprintf(f, "\t\tuser_opts { %d } { %d }\n", u->options, u->protocol);
+	fprintf(f, "\t\tuser_opts { %d } { %d }\n", account->options, account->protocol);
 	fprintf(f, "\t\tproto_opts");
 	for (i = 0; i < 7; i++)
-		fprintf(f, " { %s }", u->proto_opt[i]);
+		fprintf(f, " { %s }", account->proto_opt[i]);
 	fprintf(f, "\n");
 #ifndef _WIN32
-	fprintf(f, "\t\ticonfile { %s }\n", u->iconfile);
+	fprintf(f, "\t\ticonfile { %s }\n", account->iconfile);
 #else
 	{
 		/* Make sure windows dir speparators arn't swallowed up when
 		   path is read back in from resource file */
-		char* tmp=wgaim_escape_dirsep(u->iconfile);
-		fprintf(f, "\t\ticonfile { %s }\n", tmp);	
+		char* tmp=wgaim_escape_dirsep(account->iconfile);
+		fprintf(f, "\t\ticonfile { %s }\n", tmp);
 		g_free(tmp);
 	}
 #endif
-	fprintf(f, "\t\talias { %s }\n", u->alias);
+	fprintf(f, "\t\talias { %s }\n", account->alias);
 }
 
 static void gaimrc_read_users(FILE *f)
 {
 	char buf[2048];
-	struct aim_user *u=NULL;
+	struct gaim_account *account = NULL;
 	struct parse parse_buffer;
 	struct parse *p=NULL;
 
@@ -652,8 +652,8 @@
 
 		if (strcmp(p->option, "user")==0 ||
 		    strcmp(p->option, "current_user")==0) {
-			if((u=gaimrc_read_user(f))!=NULL)
-				aim_users = g_slist_append(aim_users, u);
+			if((account=gaimrc_read_user(f))!=NULL)
+				gaim_accounts = g_slist_append(gaim_accounts, account);
 			else {
 				debug_printf("Error reading in users from .gaimrc\n");
 				return;
@@ -664,15 +664,15 @@
 
 static void gaimrc_write_users(FILE *f)
 {
-	GSList *usr = aim_users;
-	struct aim_user *u;
+	GSList *usr = gaim_accounts;
+	struct gaim_account *account;
 
 	fprintf(f, "users {\n");
 
 	while (usr) {
-		u = (struct aim_user *)usr->data;
+		account = (struct gaim_account *)usr->data;
 		fprintf(f, "\tuser {\n");
-		gaimrc_write_user(f, u);
+		gaimrc_write_user(f, account);
 
 		fprintf(f, "\t}\n");
 
--- a/src/gtkconv.c	Fri Jan 31 06:51:49 2003 +0000
+++ b/src/gtkconv.c	Fri Jan 31 13:03:47 2003 +0000
@@ -458,7 +458,7 @@
 
 	gc   = gaim_conversation_get_gc(conv);
 	name = gaim_conversation_get_name(conv);
-	b    = find_buddy(gc->user, name);
+	b    = find_buddy(gc->account, name);
 
 	if (b != NULL)
 		show_confirm_del(gc, (char *)name);
@@ -530,7 +530,7 @@
 	struct gaim_conversation *conv2;
 	struct gaim_gtk_conversation *gtkconv;
 	struct gaim_gtk_chat_pane *gtkchat;
-	struct aim_user *user;
+	struct gaim_account *account;
 	GtkTreeIter iter;
 	GtkTreeModel *model;
 	GtkTreeSelection *sel;
@@ -550,16 +550,16 @@
 	if (*name == '@') name++;
 	if (*name == '+') name++;
 
-	user = gaim_conversation_get_user(conv);
+	account = gaim_conversation_get_account(conv);
 
 	conv2 = gaim_find_conversation(name);
 
 	if (conv2 != NULL) {
 		gaim_window_raise(gaim_conversation_get_window(conv2));
-		gaim_conversation_set_user(conv2, user);
+		gaim_conversation_set_account(conv2, account);
 	}
 	else
-		conv2 = gaim_conversation_new(GAIM_CONV_IM, user, name);
+		conv2 = gaim_conversation_new(GAIM_CONV_IM, account, name);
 }
 
 static void
@@ -603,18 +603,18 @@
 {
 	const char *who;
 	struct gaim_conversation *conv2;
-	struct aim_user *user;
+	struct gaim_account *account;
 
 	who = g_object_get_data(G_OBJECT(w), "user_data");
 
-	user = gaim_conversation_get_user(conv);
+	account = gaim_conversation_get_account(conv);
 
 	conv2 = gaim_find_conversation(who);
 
 	if (conv2 != NULL)
 		gaim_window_show(gaim_conversation_get_window(conv2));
 	else
-		conv2 = gaim_conversation_new(GAIM_CONV_IM, user, who);
+		conv2 = gaim_conversation_new(GAIM_CONV_IM, account, who);
 }
 
 static void
@@ -666,7 +666,7 @@
 
 	gc   = gaim_conversation_get_gc(conv);
 	name = g_object_get_data(G_OBJECT(w), "user_data");
-	b    = find_buddy(gc->user, name);
+	b    = find_buddy(gc->account, name);
 
 	if (b != NULL)
 		show_confirm_del(gc, name);
@@ -683,7 +683,7 @@
 	struct gaim_gtk_conversation *gtkconv;
 	struct gaim_gtk_chat_pane *gtkchat;
 	struct gaim_connection *gc;
-	struct aim_user *user;
+	struct gaim_account *account;
 	GtkTreePath *path;
 	GtkTreeIter iter;
 	GtkTreeModel *model;
@@ -693,8 +693,8 @@
 
 	gtkconv = GAIM_GTK_CONVERSATION(conv);
 	gtkchat = gtkconv->u.chat;
-	user    = gaim_conversation_get_user(conv);
-	gc      = user->gc;
+	account = gaim_conversation_get_account(conv);
+	gc      = account->gc;
 
 	model = gtk_tree_view_get_model(GTK_TREE_VIEW(gtkchat->list));
 	
@@ -714,9 +714,9 @@
 		struct gaim_conversation *c;
 
 		if ((c = gaim_find_conversation(who)) == NULL)
-			c = gaim_conversation_new(GAIM_CONV_IM, user, who);
+			c = gaim_conversation_new(GAIM_CONV_IM, account, who);
 		else
-			gaim_conversation_set_user(c, user);
+			gaim_conversation_set_account(c, account);
 	}
 	else if (event->button == 3 && event->type == GDK_BUTTON_PRESS) {
 		static GtkWidget *menu = NULL;
@@ -770,7 +770,7 @@
 
 		/* Added by Jonas <jonas@birme.se> */
 		if (gc) {
-			if (find_buddy(gc->user, who))
+			if (find_buddy(gc->account, who))
 				button = gtk_menu_item_new_with_label(_("Remove"));
 			else
 				button = gtk_menu_item_new_with_label(_("Add"));
@@ -1245,7 +1245,7 @@
 }
 
 static void
-menu_conv_sel_send_cb(GObject *m, struct aim_user *user)
+menu_conv_sel_send_cb(GObject *m, struct gaim_account *account)
 {
 	struct gaim_window *win = g_object_get_data(m, "user_data");
 	struct gaim_conversation *conv;
@@ -1255,7 +1255,7 @@
 
 	conv = gaim_window_get_active_conversation(win);
 
-	gaim_conversation_set_user(conv, user);
+	gaim_conversation_set_account(conv, account);
 }
 
 static void
@@ -1939,7 +1939,7 @@
 static void
 update_send_as_selection(struct gaim_window *win)
 {
-	struct aim_user *user;
+	struct gaim_account *account;
 	struct gaim_conversation *conv;
 	struct gaim_gtk_window *gtkwin;
 	const char *username;
@@ -1951,16 +1951,16 @@
 	if (conv == NULL)
 		return;
 
-	user   = gaim_conversation_get_user(conv);
+	account   = gaim_conversation_get_account(conv);
 	gtkwin = GAIM_GTK_WINDOW(win);
 
-	if (user == NULL)
+	if (account == NULL)
 		return;
 
 	if (gtkwin->menu.send_as == NULL)
 		return;
 
-	username = (user->gc == NULL ? user->username : user->gc->username);
+	username = (account->gc == NULL ? account->username : account->gc->username);
 
 	gtk_widget_show(gtkwin->menu.send_as);
 
@@ -2021,12 +2021,12 @@
 			 convs = convs->next) {
 
 			struct gaim_conversation *conv;
-			struct aim_user *user;
-			
+			struct gaim_account *account;
+
 			conv = (struct gaim_conversation *)convs->data;
-			user = gaim_conversation_get_user(conv);
-
-			if (user->gc == NULL) {
+			account = gaim_conversation_get_account(conv);
+
+			if (account->gc == NULL) {
 				found_offline = TRUE;
 				break;
 			}
@@ -2064,7 +2064,7 @@
 		g_object_set_data(G_OBJECT(menuitem), "user_data", win);
 
 		g_signal_connect(G_OBJECT(menuitem), "activate",
-						 G_CALLBACK(menu_conv_sel_send_cb), gc->user);
+						 G_CALLBACK(menu_conv_sel_send_cb), gc->account);
 
 		gtk_widget_show(menuitem);
 		gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
@@ -2079,16 +2079,16 @@
 		 convs = convs->next) {
 
 		struct gaim_conversation *conv;
-		struct aim_user *user;
+		struct gaim_account *account;
 
 		conv = (struct gaim_conversation *)convs->data;
 
 		if (conv == deleted_conv)
 			continue;
 
-		user = gaim_conversation_get_user(conv);
-
-		if (user->gc == NULL) {
+		account = gaim_conversation_get_account(conv);
+
+		if (account->gc == NULL) {
 			if (first_offline && found_online) {
 				menuitem = gtk_separator_menu_item_new();
 				gtk_widget_show(menuitem);
@@ -2098,7 +2098,7 @@
 			}
 
 			menuitem = gtk_radio_menu_item_new_with_label(group,
-														  user->username);
+														  account->username);
 			group = gtk_radio_menu_item_group(GTK_RADIO_MENU_ITEM(menuitem));
 
 			gtk_widget_set_sensitive(menuitem, FALSE);
@@ -2491,7 +2491,7 @@
 	/* Now, um, just kind of all over the place. Huh? */
 
 	/* Add button */
-	if (find_buddy(gaim_conversation_get_gc(conv)->user,
+	if (find_buddy(gaim_conversation_get_gc(conv)->account,
 				   gaim_conversation_get_name(conv)) == NULL) {
 		gtkim->add = gaim_gtk_change_text(_("Add"), gtkim->add,
 										  GTK_STOCK_ADD, type);
@@ -3526,7 +3526,7 @@
 	gtkconv = GAIM_GTK_CONVERSATION(conv);
 	parent  = gtk_widget_get_parent(gtkconv->u.im->add);
 
-	if (find_buddy(gc->user, gaim_conversation_get_name(conv))) {
+	if (find_buddy(gc->account, gaim_conversation_get_name(conv))) {
 		gtkconv->u.im->add =
 			gaim_gtk_change_text(_("Remove"), gtkconv->u.im->add,
 								 GTK_STOCK_REMOVE, type);
@@ -4103,7 +4103,7 @@
 	win     = gaim_conversation_get_window(conv);
 	gtkconv = GAIM_GTK_CONVERSATION(conv);
 
-	if (type == GAIM_CONV_UPDATE_USER) {
+	if (type == GAIM_CONV_UPDATE_ACCOUNT) {
 		gaim_conversation_autoset_title(conv);
 		gaim_gtkconv_update_buddy_icon(conv);
 		gaim_gtkconv_update_buttons_by_protocol(conv);
--- a/src/list.c	Fri Jan 31 06:51:49 2003 +0000
+++ b/src/list.c	Fri Jan 31 13:03:47 2003 +0000
@@ -43,7 +43,7 @@
 
 void remove_buddy(struct buddy *rem_b)
 {
-	if(rem_b->user->gc) {
+	if(rem_b->account->gc) {
 		struct group *rem_g = find_group_by_buddy(rem_b);
 
 		ui_remove_buddy(rem_b);
@@ -56,7 +56,7 @@
 	} else {
 		char *buf = g_strdup_printf(_("%s was not removed from your buddy "
 					"list, because your account (%s) is not logged in."),
-					rem_b->name, rem_b->user->username);
+					rem_b->name, rem_b->account->username);
 		do_error_dialog(_("Buddy Not Removed"), buf, GAIM_ERROR);
 		g_free(buf);
 	}
@@ -64,11 +64,11 @@
 
 void remove_group(struct group *rem_g)
 {
-	GSList *users;
+	GSList *accounts;
 
-	for(users = aim_users; users; users = users->next) {
-		struct aim_user *user = users->data;
-		if(user->gc) {
+	for(accounts = gaim_accounts; accounts; accounts = accounts->next) {
+		struct gaim_account *account = accounts->data;
+		if(account->gc) {
 			GList *tmp = NULL;
 			GSList *buds = rem_g->members;
 
@@ -76,7 +76,7 @@
 				struct buddy *delb = (struct buddy *)buds->data;
 				buds = buds->next;
 
-				if(delb->user == user) {
+				if(delb->account == account) {
 					tmp = g_list_append(tmp, g_strdup(delb->name));
 					remove_buddy(delb);	/* this should take care of removing
 										   the group_show if necessary */
@@ -84,7 +84,7 @@
 			}
 
 			if(tmp)
-				serv_remove_buddies(user->gc, tmp, rem_g->name);
+				serv_remove_buddies(account->gc, tmp, rem_g->name);
 
 			while (tmp) {
 				g_free(tmp->data);
@@ -114,13 +114,13 @@
 	 * mostly. remove_group is only called from one place, so we'll let it handle it. */
 }
 
-struct buddy *add_buddy(struct aim_user *user, const char *group, const char *buddy, const char *show)
+struct buddy *add_buddy(struct gaim_account *account, const char *group, const char *buddy, const char *show)
 {
 	struct buddy *b;
 	struct group *g;
 	const char *good;
 
-	if ((b = find_buddy(user, buddy)) != NULL)
+	if ((b = find_buddy(account, buddy)) != NULL)
 		return b;
 
 	g = find_group(group);
@@ -133,7 +133,7 @@
 	if (!b)
 		return NULL;
 
-	b->user = user;
+	b->account = account;
 	b->present = 0;
 
 	b->settings = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
@@ -151,7 +151,7 @@
 	b->idle = 0;
 	b->caps = 0;
 
-	ui_add_buddy(user->gc, g, b);
+	ui_add_buddy(account->gc, g, b);
 
 	return b;
 }
@@ -207,7 +207,7 @@
 	return NULL;
 }
 
-struct buddy *find_buddy(struct aim_user *user, const char *who)
+struct buddy *find_buddy(struct gaim_account *account, const char *who)
 {
 	struct group *g;
 	struct buddy *b;
@@ -228,7 +228,7 @@
 			*/
 			norm = normalize;
 			whoname = g_strdup(norm(who));
-			if ((b->user == user || !user) && !strcmp(norm(b->name), whoname)) {
+			if ((b->account == account || !account) && !strcmp(norm(b->name), whoname)) {
 				g_free(whoname);
 				return b;
 			}
@@ -240,7 +240,7 @@
 	return NULL;
 }
 
-void parse_toc_buddy_list(struct aim_user *user, char *config)
+void parse_toc_buddy_list(struct gaim_account *account, char *config)
 {
 	char *c;
 	char current[256];
@@ -285,65 +285,65 @@
 				if (utf8 == NULL) {
 					sw[0] = '\0';
 				} else {
-					/* This can leave a partial sequence at the end, 
+					/* This can leave a partial sequence at the end,
 					 * but who cares? */
 					g_strlcpy(sw, utf8, sizeof(sw));
 					g_free(utf8);
 				}
-				
-				if (!find_buddy(user, nm)) {
-					add_buddy(user, current, nm, sw);
+
+				if (!find_buddy(account, nm)) {
+					add_buddy(account, current, nm, sw);
 					bud = g_list_append(bud, nm);
 				}
 			} else if (*c == 'p') {
-				gaim_privacy_permit_add(user, c + 2);
+				gaim_privacy_permit_add(account, c + 2);
 			} else if (*c == 'd') {
-				gaim_privacy_deny_add(user, c + 2);
+				gaim_privacy_deny_add(account, c + 2);
 			} else if (!strncmp("toc", c, 3)) {
-				sscanf(c + strlen(c) - 1, "%d", &user->permdeny);
-				debug_printf("permdeny: %d\n", user->permdeny);
-				if (user->permdeny == 0)
-					user->permdeny = 1;
+				sscanf(c + strlen(c) - 1, "%d", &account->permdeny);
+				debug_printf("permdeny: %d\n", account->permdeny);
+				if (account->permdeny == 0)
+					account->permdeny = 1;
 			} else if (*c == 'm') {
-				sscanf(c + 2, "%d", &user->permdeny);
-				debug_printf("permdeny: %d\n", user->permdeny);
-				if (user->permdeny == 0)
-					user->permdeny = 1;
+				sscanf(c + 2, "%d", &account->permdeny);
+				debug_printf("permdeny: %d\n", account->permdeny);
+				if (account->permdeny == 0)
+					account->permdeny = 1;
 			}
 		} while ((c = strtok(NULL, "\n")));
 
-		if(user->gc) {
+		if(account->gc) {
 			if(bud)
-				serv_add_buddies(user->gc, bud);
-			serv_set_permit_deny(user->gc);
+				serv_add_buddies(account->gc, bud);
+			serv_set_permit_deny(account->gc);
 		}
 		g_list_free(bud);
 	}
 }
 
-void toc_build_config(struct aim_user *user, char *s, int len, gboolean show)
+void toc_build_config(struct gaim_account *account, char *s, int len, gboolean show)
 {
 	GSList *grp = groups;
 	GSList *mem;
 	struct group *g;
 	struct buddy *b;
-	GSList *plist = user->permit;
-	GSList *dlist = user->deny;
+	GSList *plist = account->permit;
+	GSList *dlist = account->deny;
 
 	int pos = 0;
 
-	if (!user->permdeny)
-		user->permdeny = 1;
+	if (!account->permdeny)
+		account->permdeny = 1;
 
-	pos += g_snprintf(&s[pos], len - pos, "m %d\n", user->permdeny);
+	pos += g_snprintf(&s[pos], len - pos, "m %d\n", account->permdeny);
 	while (len > pos && grp) {
 		g = (struct group *)grp->data;
-		if(gaim_group_on_account(g, user)) {
+		if(gaim_group_on_account(g, account)) {
 			pos += g_snprintf(&s[pos], len - pos, "g %s\n", g->name);
 			mem = g->members;
 			while (len > pos && mem) {
 				b = (struct buddy *)mem->data;
-				if(b->user == user) {
+				if(b->account == account) {
 					pos += g_snprintf(&s[pos], len - pos, "b %s%s%s\n", b->name,
 							(show && b->alias[0]) ? ":" : "",
 							(show && b->alias[0]) ? b->alias : "");
@@ -535,7 +535,7 @@
 
 static gboolean gaim_blist_read(const char *filename);
 
-void do_import(struct aim_user *user, const char *filename)
+void do_import(struct gaim_account *account, const char *filename)
 {
 	GString *buf = NULL;
 	char first[64];
@@ -547,9 +547,9 @@
 	if (filename) {
 		g_snprintf(path, sizeof(path), "%s", filename);
 	} else {
-		char *g_screenname = get_screenname_filename(user->username);
+		char *g_screenname = get_screenname_filename(account->username);
 		char *file = gaim_user_dir();
-		int protocol = (user->protocol == PROTO_OSCAR) ? (isalpha(user->username[0]) ? PROTO_TOC : PROTO_ICQ): user->protocol;
+		int protocol = (account->protocol == PROTO_OSCAR) ? (isalpha(account->username[0]) ? PROTO_TOC : PROTO_ICQ): account->protocol;
 
 		if (file != (char *)NULL) {
 			sprintf(path, "%s" G_DIR_SEPARATOR_S "%s.%d.blist", file, g_screenname, protocol);
@@ -614,28 +614,28 @@
 	if (buf) {
 		buf = g_string_prepend(buf, "toc_set_config {");
 		buf = g_string_append(buf, "}\n");
-		parse_toc_buddy_list(user, buf->str);
+		parse_toc_buddy_list(account, buf->str);
 		g_string_free(buf, TRUE);
 	}
 }
 
 static gboolean is_blocked(struct buddy *b)
 {
-	struct aim_user *user = b->user;
+	struct gaim_account *account = b->account;
 
-	if (user->permdeny == PERMIT_ALL)
+	if (account->permdeny == PERMIT_ALL)
 		return FALSE;
 
-	if (user->permdeny == PERMIT_NONE) {
-		if (user->gc && g_strcasecmp(b->name, user->gc->username))
+	if (account->permdeny == PERMIT_NONE) {
+		if (account->gc && g_strcasecmp(b->name, account->gc->username))
 			return TRUE;
 		else
 			return FALSE;
 	}
 
-	if (user->permdeny == PERMIT_SOME) {
+	if (account->permdeny == PERMIT_SOME) {
 		char *x = g_strdup(normalize(b->name));
-		GSList *s = user->permit;
+		GSList *s = account->permit;
 		while (s) {
 			if (!g_strcasecmp(x, normalize(s->data)))
 				break;
@@ -647,9 +647,9 @@
 		return TRUE;
 	}
 
-	if (user->permdeny == DENY_SOME) {
+	if (account->permdeny == DENY_SOME) {
 		char *x = g_strdup(normalize(b->name));
-		GSList *s = user->deny;
+		GSList *s = account->deny;
 		while (s) {
 			if (!g_strcasecmp(x, normalize(s->data)))
 				break;
@@ -702,18 +702,18 @@
 	GSList *ret = NULL;
 	while(buds) {
 		struct buddy *b = buds->data;
-		if(!g_slist_find(ret, b->user))
-			ret = g_slist_append(ret, b->user);
+		if(!g_slist_find(ret, b->account))
+			ret = g_slist_append(ret, b->account);
 		buds = buds->next;
 	}
 	return ret;
 }
 
-gboolean gaim_group_on_account(struct group *g, struct aim_user *user) {
+gboolean gaim_group_on_account(struct group *g, struct gaim_account *account) {
 	GSList *buds = g->members;
 	while(buds) {
 		struct buddy *b = buds->data;
-		if((!user && b->user->gc) || b->user == user)
+		if((!account && b->account->gc) || b->account == account)
 			return TRUE;
 		buds = buds->next;
 	}
@@ -836,10 +836,10 @@
 		g_free(blist_parser_person_name);
 		blist_parser_person_name = NULL;
 	} else if(!strcmp(element_name, "buddy")) {
-		struct aim_user *user = find_user(blist_parser_account_name,
+		struct gaim_account *account = gaim_account_find(blist_parser_account_name,
 				blist_parser_account_protocol);
-		if(user) {
-			struct buddy *b = add_buddy(user, blist_parser_group_name,
+		if(account) {
+			struct buddy *b = add_buddy(account, blist_parser_group_name,
 					blist_parser_buddy_name, blist_parser_buddy_alias);
 			if(blist_parser_buddy_settings) {
 				g_hash_table_destroy(b->settings);
@@ -873,28 +873,28 @@
 	} else if(!strcmp(element_name, "privacy")) {
 		blist_parser_current_tag = BLIST_TAG_GAIM;
 	} else if(!strcmp(element_name, "account")) {
-		struct aim_user *user = find_user(blist_parser_account_name,
+		struct gaim_account *account = gaim_account_find(blist_parser_account_name,
 				blist_parser_account_protocol);
-		if(user) {
-			user->permdeny = blist_parser_privacy_mode;
+		if(account) {
+			account->permdeny = blist_parser_privacy_mode;
 		}
 		blist_parser_current_tag = BLIST_TAG_PRIVACY;
 		g_free(blist_parser_account_name);
 		blist_parser_account_name = NULL;
 	} else if(!strcmp(element_name, "permit")) {
-		struct aim_user *user = find_user(blist_parser_account_name,
+		struct gaim_account *account = gaim_account_find(blist_parser_account_name,
 				blist_parser_account_protocol);
-		if(user) {
-			gaim_privacy_permit_add(user, blist_parser_buddy_name);
+		if(account) {
+			gaim_privacy_permit_add(account, blist_parser_buddy_name);
 		}
 		blist_parser_current_tag = BLIST_TAG_ACCOUNT;
 		g_free(blist_parser_buddy_name);
 		blist_parser_buddy_name = NULL;
 	} else if(!strcmp(element_name, "block")) {
-		struct aim_user *user = find_user(blist_parser_account_name,
+		struct gaim_account *account = gaim_account_find(blist_parser_account_name,
 				blist_parser_account_protocol);
-		if(user) {
-			gaim_privacy_deny_add(user, blist_parser_buddy_name);
+		if(account) {
+			gaim_privacy_deny_add(account, blist_parser_buddy_name);
 		}
 		blist_parser_current_tag = BLIST_TAG_ACCOUNT;
 		g_free(blist_parser_buddy_name);
@@ -994,7 +994,7 @@
 			do_error_dialog(_("Buddy List Error"), msg, GAIM_ERROR);
 			g_free(msg);
 		}
-	} else if(g_slist_length(aim_users)) {
+	} else if(g_slist_length(gaim_accounts)) {
 		/* rob wants to inform the user that their buddy lists are
 		 * being converted */
 		msg = g_strdup_printf(_("Gaim is converting your old buddy lists "
@@ -1008,7 +1008,7 @@
 			gtk_main_iteration();
 
 		/* read in the old lists, then save to the new format */
-		for(accts = aim_users; accts; accts = accts->next) {
+		for(accts = gaim_accounts; accts; accts = accts->next) {
 			do_import(accts->data, NULL);
 		}
 		gaim_blist_save();
@@ -1028,29 +1028,29 @@
 	g_free(data_val);
 }
 
-static void gaim_blist_write(FILE *file, struct aim_user *user) {
-	GSList *grps, *buds, *users;
+static void gaim_blist_write(FILE *file, struct gaim_account *exp_acct) {
+	GSList *grps, *buds, *accounts;
 	fprintf(file, "<?xml version='1.0' encoding='UTF-8' ?>\n");
 	fprintf(file, "<gaim version=\"1\">\n");
 	fprintf(file, "\t<blist>\n");
 
 	for(grps = groups; grps; grps = grps->next) {
 		struct group *g = grps->data;
-		if(!user || gaim_group_on_account(g, user)) {
+		if(!exp_acct || gaim_group_on_account(g, exp_acct)) {
 			char *group_name = g_markup_escape_text(g->name, -1);
 			fprintf(file, "\t\t<group name=\"%s\">\n", group_name);
 			for(buds = g->members; buds; buds = buds->next) {
 				struct buddy *b = buds->data;
-				if(!user || b->user == user) {
+				if(!exp_acct || b->account == exp_acct) {
 					char *bud_name = g_markup_escape_text(b->name, -1);
 					char *bud_alias = NULL;
-					char *acct_name = g_markup_escape_text(b->user->username, -1);
+					char *acct_name = g_markup_escape_text(b->account->username, -1);
 					if(b->alias[0])
 						bud_alias= g_markup_escape_text(b->alias, -1);
 					fprintf(file, "\t\t\t<person name=\"%s\">\n",
 							bud_alias ? bud_alias : bud_name);
 					fprintf(file, "\t\t\t\t<buddy protocol=\"%d\" "
-							"account=\"%s\">\n", b->user->protocol,
+							"account=\"%s\">\n", b->account->protocol,
 							acct_name);
 					fprintf(file, "\t\t\t\t\t<name>%s</name>\n", bud_name);
 					if(bud_alias) {
@@ -1074,24 +1074,25 @@
 	fprintf(file, "\t</blist>\n");
 	fprintf(file, "\t<privacy>\n");
 
-	for(users = aim_users; users; users = users->next) {
-		struct aim_user *usr = users->data;
-		char *acct_name = g_markup_escape_text(usr->username, -1);
-		if(!user || usr == user) {
+	for(accounts = gaim_accounts; accounts; accounts = accounts->next) {
+		struct gaim_account *account = accounts->data;
+		char *acct_name = g_markup_escape_text(account->username, -1);
+		if(!exp_acct || account == exp_acct) {
 			fprintf(file, "\t\t<account protocol=\"%d\" name=\"%s\" "
-					"mode=\"%d\">\n", usr->protocol, acct_name, usr->permdeny);
-			for(buds = usr->permit; buds; buds = buds->next) {
+					"mode=\"%d\">\n", account->protocol, acct_name, account->permdeny);
+			for(buds = account->permit; buds; buds = buds->next) {
 				char *bud_name = g_markup_escape_text(buds->data, -1);
 				fprintf(file, "\t\t\t<permit>%s</permit>\n", bud_name);
 				g_free(bud_name);
 			}
-			for(buds = usr->deny; buds; buds = buds->next) {
+			for(buds = account->deny; buds; buds = buds->next) {
 				char *bud_name = g_markup_escape_text(buds->data, -1);
 				fprintf(file, "\t\t\t<block>%s</block>\n", bud_name);
 				g_free(bud_name);
 			}
 			fprintf(file, "\t\t</account>\n");
 		}
+		g_free(acct_name);
 	}
 
 	fprintf(file, "\t</privacy>\n");
@@ -1125,8 +1126,8 @@
 	g_free(filename);
 }
 
-gboolean gaim_privacy_permit_add(struct aim_user *user, const char *who) {
-	GSList *d = user->permit;
+gboolean gaim_privacy_permit_add(struct gaim_account *account, const char *who) {
+	GSList *d = account->permit;
 	char *n = g_strdup(normalize(who));
 	while(d) {
 		if(!g_strcasecmp(n, normalize(d->data)))
@@ -1135,15 +1136,15 @@
 	}
 	g_free(n);
 	if(!d) {
-		user->permit = g_slist_append(user->permit, g_strdup(who));
+		account->permit = g_slist_append(account->permit, g_strdup(who));
 		return TRUE;
 	}
 
 	return FALSE;
 }
 
-gboolean gaim_privacy_permit_remove(struct aim_user *user, const char *who) {
-	GSList *d = user->permit;
+gboolean gaim_privacy_permit_remove(struct gaim_account *account, const char *who) {
+	GSList *d = account->permit;
 	char *n = g_strdup(normalize(who));
 	while(d) {
 		if(!g_strcasecmp(n, normalize(d->data)))
@@ -1152,15 +1153,15 @@
 	}
 	g_free(n);
 	if(d) {
-		user->permit = g_slist_remove(user->permit, d->data);
+		account->permit = g_slist_remove(account->permit, d->data);
 		g_free(d->data);
 		return TRUE;
 	}
 	return FALSE;
 }
 
-gboolean gaim_privacy_deny_add(struct aim_user *user, const char *who) {
-	GSList *d = user->deny;
+gboolean gaim_privacy_deny_add(struct gaim_account *account, const char *who) {
+	GSList *d = account->deny;
 	char *n = g_strdup(normalize(who));
 	while(d) {
 		if(!g_strcasecmp(n, normalize(d->data)))
@@ -1169,15 +1170,15 @@
 	}
 	g_free(n);
 	if(!d) {
-		user->deny = g_slist_append(user->deny, g_strdup(who));
+		account->deny = g_slist_append(account->deny, g_strdup(who));
 		return TRUE;
 	}
 
 	return FALSE;
 }
 
-gboolean gaim_privacy_deny_remove(struct aim_user *user, const char *who) {
-	GSList *d = user->deny;
+gboolean gaim_privacy_deny_remove(struct gaim_account *account, const char *who) {
+	GSList *d = account->deny;
 	char *n = g_strdup(normalize(who));
 	while(d) {
 		if(!g_strcasecmp(n, normalize(d->data)))
@@ -1186,7 +1187,7 @@
 	}
 	g_free(n);
 	if(d) {
-		user->deny = g_slist_remove(user->deny, d->data);
+		account->deny = g_slist_remove(account->deny, d->data);
 		g_free(d->data);
 		return TRUE;
 	}
--- a/src/main.c	Fri Jan 31 06:51:49 2003 +0000
+++ b/src/main.c	Fri Jan 31 13:03:47 2003 +0000
@@ -164,7 +164,7 @@
 
 static void dologin(GtkWidget *widget, GtkWidget *w)
 {
-	struct aim_user *u;
+	struct gaim_account *account;
 	const char *username = gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(name)->entry));
 	const char *password = gtk_entry_get_text(GTK_ENTRY(pass));
 
@@ -177,12 +177,12 @@
 	 * them, they just have to use the account editor to sign in 
 	 * the second one */
 
-	u = find_user(username, -1);
-	if (!u)
-		u = new_user(username, DEFAULT_PROTO, OPT_USR_REM_PASS);
-	g_snprintf(u->password, sizeof u->password, "%s", password);
+	account = gaim_account_find(username, -1);
+	if (!account)
+		account = gaim_account_new(username, DEFAULT_PROTO, OPT_ACCT_REM_PASS);
+	g_snprintf(account->password, sizeof account->password, "%s", password);
 	save_prefs();
-	serv_login(u);
+	serv_login(account);
 }
 
 /* <name> is a comma-separated list of names, or NULL
@@ -194,27 +194,27 @@
 */
 static int dologin_named(char *name)
 {
-	struct aim_user *u;
+	struct gaim_account *account;
 	char **names, **n;
 	int retval = -1;
 
 	if (name !=NULL) {	/* list of names given */
 		names = g_strsplit(name, ",", 32);
 		for (n = names; *n != NULL; n++) {
-			u = find_user(*n, -1);
-			if (u) {	/* found a user */
-				if (u->options & OPT_USR_REM_PASS) {
+			account = gaim_account_find(*n, -1);
+			if (account) {	/* found a user */
+				if (account->options & OPT_ACCT_REM_PASS) {
 					retval = 0;
-					serv_login(u);
+					serv_login(account);
 				}
 			}
 		}
 		g_strfreev(names);
 	} else {		/* no name given, use default */
-		u = (struct aim_user *)aim_users->data;
-		if (u->options & OPT_USR_REM_PASS) {
+		account = (struct gaim_account *)gaim_accounts->data;
+		if (account->options & OPT_ACCT_REM_PASS) {
 			retval = 0;
-			serv_login(u);
+			serv_login(account);
 		}
 	}
 
@@ -237,12 +237,12 @@
 static void combo_changed(GtkWidget *w, GtkWidget *combo)
 {
 	const char *txt = gtk_entry_get_text(GTK_ENTRY(GTK_COMBO(combo)->entry));
-	struct aim_user *u;
+	struct gaim_account *account;
 
-	u = find_user(txt, -1);
+	account = gaim_account_find(txt, -1);
 
-	if (u && u->options & OPT_USR_REM_PASS) {
-		gtk_entry_set_text(GTK_ENTRY(pass), u->password);
+	if (account && account->options & OPT_ACCT_REM_PASS) {
+		gtk_entry_set_text(GTK_ENTRY(pass), account->password);
 	} else {
 		gtk_entry_set_text(GTK_ENTRY(pass), "");
 	}
@@ -251,17 +251,17 @@
 
 static GList *combo_user_names()
 {
-	GSList *usr = aim_users;
+	GSList *accts = gaim_accounts;
 	GList *tmp = NULL;
-	struct aim_user *u;
+	struct gaim_account *account;
 
-	if (!usr)
+	if (!accts)
 		return g_list_append(NULL, _("<New User>"));
 
-	while (usr) {
-		u = (struct aim_user *)usr->data;
-		tmp = g_list_append(tmp, u->username);
-		usr = usr->next;
+	while (accts) {
+		account = (struct gaim_account *)accts->data;
+		tmp = g_list_append(tmp, account->username);
+		accts = accts->next;
 	}
 
 	return tmp;
@@ -385,9 +385,9 @@
 #endif
 
 	/* Now grab the focus that we need */
-	if (aim_users) {
-		struct aim_user *c = (struct aim_user *)aim_users->data;
-		if (c->options & OPT_USR_REM_PASS) {
+	if (gaim_accounts) {
+		struct gaim_account *account = gaim_accounts->data;
+		if (account->options & OPT_ACCT_REM_PASS) {
 			combo_changed(NULL, name);
 			gtk_widget_grab_focus(button);
 		} else {
@@ -550,18 +550,18 @@
 
 static void set_first_user(char *name)
 {
-	struct aim_user *u;
+	struct gaim_account *account;
 
-	u = find_user(name, -1);
+	account = gaim_account_find(name, -1);
 
-	if (!u) {		/* new user */
-		u = g_new0(struct aim_user, 1);
-		g_snprintf(u->username, sizeof(u->username), "%s", name);
-		u->protocol = DEFAULT_PROTO;
-		aim_users = g_slist_prepend(aim_users, u);
+	if (!account) {		/* new user */
+		account = g_new0(struct gaim_account, 1);
+		g_snprintf(account->username, sizeof(account->username), "%s", name);
+		account->protocol = DEFAULT_PROTO;
+		gaim_accounts = g_slist_prepend(gaim_accounts, account);
 	} else {		/* user already exists */
-		aim_users = g_slist_remove(aim_users, u);
-		aim_users = g_slist_prepend(aim_users, u);
+		gaim_accounts = g_slist_remove(gaim_accounts, account);
+		gaim_accounts = g_slist_prepend(gaim_accounts, account);
 	}
 	save_prefs();
 }
--- a/src/multi.c	Fri Jan 31 06:51:49 2003 +0000
+++ b/src/multi.c	Fri Jan 31 13:03:47 2003 +0000
@@ -36,7 +36,7 @@
 static GtkWidget *treeview = NULL; /* the treeview of names in the accteditor */
 static GtkListStore *model = NULL;
 
-static GSList *mod_users = NULL;
+static GSList *mod_accounts = NULL;
 
 enum
 {
@@ -48,38 +48,74 @@
 	NUM_COLUMNS
 };
 
+struct mod_account {
+	struct gaim_account *account;
+
+	/* these are temporary */
+	int options;
+	int protocol;
+	char proto_opt[7][256];
+
+	/* stuff for modify window */
+	GtkWidget *mod;
+	GtkWidget *main;
+	GtkWidget *name;
+	GtkWidget *alias;
+	GtkWidget *pwdbox;
+	GtkWidget *pass;
+	GtkWidget *rempass;
+	GtkWidget *user_frame;
+	GtkWidget *proto_frame;
+	GtkSizeGroup *sg;
+	GList *opt_entries;
+
+	/* stuff for icon selection */
+	char iconfile[256];
+	GtkWidget *iconsel;
+	GtkWidget *iconentry;
+	GtkWidget *icondlg;
+
+	/* stuff for mail check prompt */
+	GtkWidget *checkmail;
+
+	/* stuff for register with server */
+	GtkWidget *register_user;
+};
+
+
+struct mod_account_opt {
+	struct mod_account *ma;
+	int opt;
+};
+
 static void acct_signin(GtkCellRendererToggle *cell, gchar *path_str,
 						gpointer d);
 static void acct_autologin(GtkCellRendererToggle *cell, gchar *path_str,
 						   gpointer d);
 
-static struct mod_user *find_mod_user(struct aim_user *a)
+static struct mod_account *mod_account_find(struct gaim_account *a)
 {
-	GSList *m = mod_users;
+	GSList *m = mod_accounts;
 	while (m) {
-		struct mod_user *u = m->data;
-		if (u->user == a)
-			return u;
+		struct mod_account *ma = m->data;
+		if (ma->account == a)
+			return ma;
 		m = m->next;
 	}
 	return NULL;
 }
 
-static void generate_protocol_options(struct mod_user *, GtkWidget *);
+static void generate_protocol_options(struct mod_account *, GtkWidget *);
 
-struct mod_usr_opt {
-	struct mod_user *user;
-	int opt;
-};
 
-struct gaim_connection *new_gaim_conn(struct aim_user *user)
+struct gaim_connection *new_gaim_conn(struct gaim_account *account)
 {
 	struct gaim_connection *gc = g_new0(struct gaim_connection, 1);
 	gc->edittype = EDIT_GC;
-	gc->protocol = user->protocol;
-	gc->prpl = find_prpl(user->protocol);
-	g_snprintf(gc->username, sizeof(gc->username), "%s", user->username);
-	g_snprintf(gc->password, sizeof(gc->password), "%s", user->password);
+	gc->protocol = account->protocol;
+	gc->prpl = find_prpl(account->protocol);
+	g_snprintf(gc->username, sizeof(gc->username), "%s", account->username);
+	g_snprintf(gc->password, sizeof(gc->password), "%s", account->password);
 	gc->keepalive = 0;
 	gc->inpa = 0;
 	gc->buddy_chats = NULL;
@@ -88,8 +124,8 @@
 
 	connections = g_slist_append(connections, gc);
 
-	user->gc = gc;
-	gc->user = user;
+	account->gc = gc;
+	gc->account = account;
 
 	return gc;
 }
@@ -114,7 +150,7 @@
 		while (h) {
 			n = (struct buddy *)h->data;
 			h = g_slist_next(h);
-			if(n->user == gc->user) {
+			if(n->account == gc->account) {
 				n->present = 0;
 			}
 		}
@@ -160,8 +196,8 @@
 
 void regenerate_user_list()
 {
-	GSList *u = aim_users;
-	struct aim_user *a;
+	GSList *accounts = gaim_accounts;
+	struct gaim_account *a;
 	GtkTreeIter iter;
 
 	if (!acctedit)
@@ -169,44 +205,27 @@
 
 	gtk_list_store_clear(model);
 
-	while (u) {
-		a = (struct aim_user *)u->data;
+	while (accounts) {
+		a = (struct gaim_account *)accounts->data;
 
 		gtk_list_store_append(model, &iter);
 		gtk_list_store_set(model, &iter,
 						   COLUMN_SCREENNAME, a->username,
 						   COLUMN_ONLINE, (a->gc ? TRUE : FALSE),
-						   COLUMN_AUTOLOGIN, (a->options & OPT_USR_AUTO),
+						   COLUMN_AUTOLOGIN, (a->options & OPT_ACCT_AUTO),
 						   COLUMN_PROTOCOL, proto_name(a->protocol),
 						   COLUMN_DATA, a,
 						   -1);
-		u = u->next;
+		accounts = accounts->next;
 	}
 }
 
 static gboolean get_iter_from_data(GtkTreeView *treeview,
-								   struct aim_user *a, GtkTreeIter *iter)
+								   struct gaim_account *a, GtkTreeIter *iter)
 {
 	return gtk_tree_model_iter_nth_child(gtk_tree_view_get_model(treeview),
 										 iter, NULL,
-										 g_slist_index(aim_users, a));
-#if 0
-	GtkListModel *model = gtk_tree_view_get_model(treeview);
-	struct aim_user *user;
-	int i;
-
-	rows = gtk_tree_model_iter_n_children(model, NULL);
-
-	for (i = 0; i < rows; i++)
-	{
-		gtk_tree_model_get(model, iter, COLUMN_DATA, &user, -1);
-
-		if (user == a)
-			return TRUE;
-	}
-
-	return FALSE;
-#endif
+										 g_slist_index(gaim_accounts, a));
 }
 
 static void add_columns(GtkWidget *treeview)
@@ -286,59 +305,59 @@
 	return win;
 }
 
-static void delmod(GtkWidget *w, struct mod_user *u)
+static void delmod(GtkWidget *w, struct mod_account *ma)
 {
-	mod_users = g_slist_remove(mod_users, u);
-	g_free(u);
+	mod_accounts = g_slist_remove(mod_accounts, ma);
+	g_free(ma);
 }
 
-static void mod_opt(GtkWidget *b, struct mod_usr_opt *m)
+static void mod_opt(GtkWidget *b, struct mod_account_opt *mao)
 {
-	m->user->options = m->user->options ^ m->opt;
+	mao->ma->options = mao->ma->options ^ mao->opt;
 }
 
-static void free_muo(GtkWidget *b, struct mod_usr_opt *m)
+static void free_mao(GtkWidget *b, struct mod_account_opt *mao)
 {
-	g_free(m);
+	g_free(mao);
 }
 
-static GtkWidget *acct_button(const char *text, struct mod_user *u, int option, GtkWidget *box)
+static GtkWidget *acct_button(const char *text, struct mod_account *ma, int option, GtkWidget *box)
 {
 	GtkWidget *button;
-	struct mod_usr_opt *muo = g_new0(struct mod_usr_opt, 1);
+	struct mod_account_opt *mao = g_new0(struct mod_account_opt, 1);
 	button = gtk_check_button_new_with_label(text);
-	gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(button), (u->options & option));
+	gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(button), (ma->options & option));
 	gtk_box_pack_start(GTK_BOX(box), button, FALSE, FALSE, 0);
-	muo->user = u;
-	muo->opt = option;
-	g_signal_connect(GTK_OBJECT(button), "clicked", G_CALLBACK(mod_opt), muo);
-	g_signal_connect(GTK_OBJECT(button), "destroy", G_CALLBACK(free_muo), muo);
+	mao->ma = ma;
+	mao->opt = option;
+	g_signal_connect(GTK_OBJECT(button), "clicked", G_CALLBACK(mod_opt), mao);
+	g_signal_connect(GTK_OBJECT(button), "destroy", G_CALLBACK(free_mao), mao);
 	gtk_widget_show(button);
 	return button;
 }
 
-static void ok_mod(GtkWidget *w, struct mod_user *u)
+static void ok_mod(GtkWidget *w, struct mod_account *ma)
 {
 	GList *tmp;
 	const char *txt;
-	struct aim_user *a;
+	struct gaim_account *a;
 	struct prpl *p;
 	GtkTreeIter iter;
 
-	if (!u->user) {
-		txt = gtk_entry_get_text(GTK_ENTRY(u->name));
-		u->user = new_user(txt, u->protocol, u->options);
+	if (!ma->account) {
+		txt = gtk_entry_get_text(GTK_ENTRY(ma->name));
+		ma->account = gaim_account_new(txt, ma->protocol, ma->options);
 	}
-	a = u->user;
+	a = ma->account;
 
-	a->options = u->options;
-	a->protocol = u->protocol;
-	txt = gtk_entry_get_text(GTK_ENTRY(u->name));
+	a->options = ma->options;
+	a->protocol = ma->protocol;
+	txt = gtk_entry_get_text(GTK_ENTRY(ma->name));
 	g_snprintf(a->username, sizeof(a->username), "%s", txt);
-	txt = gtk_entry_get_text(GTK_ENTRY(u->alias));
+	txt = gtk_entry_get_text(GTK_ENTRY(ma->alias));
 	g_snprintf(a->alias, sizeof(a->alias), "%s", txt);
-	txt = gtk_entry_get_text(GTK_ENTRY(u->pass));
-	if (a->options & OPT_USR_REM_PASS)
+	txt = gtk_entry_get_text(GTK_ENTRY(ma->pass));
+	if (a->options & OPT_ACCT_REM_PASS)
 		g_snprintf(a->password, sizeof(a->password), "%s", txt);
 	else
 		a->password[0] = '\0';
@@ -346,7 +365,7 @@
 	if (get_iter_from_data(GTK_TREE_VIEW(treeview), a, &iter)) {
 		gtk_list_store_set(model, &iter,
 						   COLUMN_SCREENNAME, a->username,
-						   COLUMN_AUTOLOGIN, (a->options & OPT_USR_AUTO),
+						   COLUMN_AUTOLOGIN, (a->options & OPT_ACCT_AUTO),
 						   COLUMN_PROTOCOL, proto_name(a->protocol),
 						   -1);
 	}
@@ -355,11 +374,11 @@
 	i = gtk_clist_find_row_from_data(GTK_CLIST(list), a);
 	gtk_clist_set_text(GTK_CLIST(list), i, 0, a->username);
 	gtk_clist_set_text(GTK_CLIST(list), i, 2,
-			   (a->options & OPT_USR_AUTO) ? "True" : "False");
+			   (a->options & OPT_ACCT_AUTO) ? "True" : "False");
 	gtk_clist_set_text(GTK_CLIST(list), i, 3, proto_name(a->protocol));
 #endif
 
-	tmp = u->opt_entries;
+	tmp = ma->opt_entries;
 	while (tmp) {
 		GtkEntry *entry = tmp->data;
 		int pos = (int)gtk_object_get_user_data(GTK_OBJECT(entry));
@@ -367,25 +386,25 @@
 				   gtk_entry_get_text(entry));
 		tmp = tmp->next;
 	}
-	if (u->opt_entries)
-		g_list_free(u->opt_entries);
-	u->opt_entries = NULL;
+	if (ma->opt_entries)
+		g_list_free(ma->opt_entries);
+	ma->opt_entries = NULL;
 
-	g_snprintf(a->iconfile, sizeof(a->iconfile), "%s", u->iconfile);
-	if (u->icondlg)
-		gtk_widget_destroy(u->icondlg);
-	u->icondlg = NULL;
+	g_snprintf(a->iconfile, sizeof(a->iconfile), "%s", ma->iconfile);
+	if (ma->icondlg)
+		gtk_widget_destroy(ma->icondlg);
+	ma->icondlg = NULL;
 
 	/*
 	 * See if user registration is supported/required
 	 */
-	if((p = find_prpl(u->protocol)) == NULL) {
+	if((p = find_prpl(ma->protocol)) == NULL) {
 		/* TBD: error dialog here! (This should never happen, you know...) */
-		fprintf(stderr, "dbg: couldn't find protocol for protocol number %d!\n", u->protocol);
+		fprintf(stderr, "dbg: couldn't find protocol for protocol number %d!\n", ma->protocol);
 		fflush(stderr);
 	} else {
 		if(p->register_user != NULL &&
-		   gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(u->register_user)) == TRUE) {
+		   gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(ma->register_user)) == TRUE) {
 			ref_protocol(p);
 			p->register_user(a);
 			/* we don't unref the protocol because register user has callbacks
@@ -396,61 +415,61 @@
 
 	save_prefs();
 
-	gtk_widget_destroy(u->mod);
+	gtk_widget_destroy(ma->mod);
 }
 
-static void cancel_mod(GtkWidget *w, struct mod_user *u)
+static void cancel_mod(GtkWidget *w, struct mod_account *ma)
 {
-	if (u->opt_entries)
-		g_list_free(u->opt_entries);
-	u->opt_entries = NULL;
-	if (u->icondlg)
-		gtk_widget_destroy(u->icondlg);
-	u->icondlg = NULL;
-	gtk_widget_destroy(u->mod);
+	if (ma->opt_entries)
+		g_list_free(ma->opt_entries);
+	ma->opt_entries = NULL;
+	if (ma->icondlg)
+		gtk_widget_destroy(ma->icondlg);
+	ma->icondlg = NULL;
+	gtk_widget_destroy(ma->mod);
 }
 
 static void set_prot(GtkWidget *opt, int proto)
 {
-	struct mod_user *u = gtk_object_get_user_data(GTK_OBJECT(opt));
+	struct mod_account *ma = gtk_object_get_user_data(GTK_OBJECT(opt));
 	struct prpl *p, *q;
 	q = find_prpl(proto);
-	if (u->protocol != proto) {
+	if (ma->protocol != proto) {
 		int i;
 		for (i = 0; i < 7; i++)
-			u->proto_opt[i][0] = '\0';
-		p = find_prpl(u->protocol);
+			ma->proto_opt[i][0] = '\0';
+		p = find_prpl(ma->protocol);
 
 		if (!(p->options & OPT_PROTO_NO_PASSWORD) && (q->options & OPT_PROTO_NO_PASSWORD)) {
-			gtk_widget_hide(u->pwdbox);
-			gtk_widget_hide(u->rempass);
+			gtk_widget_hide(ma->pwdbox);
+			gtk_widget_hide(ma->rempass);
 		} else if ((p->options & OPT_PROTO_NO_PASSWORD) && !(q->options & OPT_PROTO_NO_PASSWORD)) {
-			gtk_widget_show(u->pwdbox);
-			gtk_widget_show(u->rempass);
+			gtk_widget_show(ma->pwdbox);
+			gtk_widget_show(ma->rempass);
 		}
 		if (!(p->options & OPT_PROTO_MAIL_CHECK) && (q->options & OPT_PROTO_MAIL_CHECK)) {
-			gtk_widget_show(u->checkmail);
+			gtk_widget_show(ma->checkmail);
 		} else if ((p->options & OPT_PROTO_MAIL_CHECK) && !(q->options & OPT_PROTO_MAIL_CHECK)) {
-			gtk_widget_hide(u->checkmail);
+			gtk_widget_hide(ma->checkmail);
 		}
 
 		if (!(p->options & OPT_PROTO_BUDDY_ICON) && (q->options & OPT_PROTO_BUDDY_ICON)) {
-			gtk_widget_show(u->iconsel);
+			gtk_widget_show(ma->iconsel);
 		} else if ((p->options & OPT_PROTO_BUDDY_ICON) && !(q->options & OPT_PROTO_BUDDY_ICON)) {
-			gtk_widget_hide(u->iconsel);
+			gtk_widget_hide(ma->iconsel);
 		}
 
 		if ((q->options & OPT_PROTO_BUDDY_ICON) || (q->options & OPT_PROTO_MAIL_CHECK))
-			gtk_widget_show(u->user_frame);
+			gtk_widget_show(ma->user_frame);
 		else
-			gtk_widget_hide(u->user_frame);
+			gtk_widget_hide(ma->user_frame);
 
-		u->protocol = proto;
-		generate_protocol_options(u, u->main);
+		ma->protocol = proto;
+		generate_protocol_options(ma, ma->main);
 	}
 }
 
-static GtkWidget *make_protocol_menu(GtkWidget *box, struct mod_user *u)
+static GtkWidget *make_protocol_menu(GtkWidget *box, struct mod_account *ma)
 {
 	GtkWidget *optmenu;
 	GtkWidget *menu;
@@ -468,7 +487,7 @@
 
 	while (p) {
 		e = (struct prpl *)p->data;
-		if (e->protocol == u->protocol)
+		if (e->protocol == ma->protocol)
 			found = TRUE;
 		if (!found)
 			count++;
@@ -476,7 +495,7 @@
 			opt = gtk_menu_item_new_with_label(e->name);
 		else
 			opt = gtk_menu_item_new_with_label("Unknown");
-		gtk_object_set_user_data(GTK_OBJECT(opt), u);
+		gtk_object_set_user_data(GTK_OBJECT(opt), ma);
 		g_signal_connect(GTK_OBJECT(opt), "activate",
 				   G_CALLBACK(set_prot), (void *)e->protocol);
 		gtk_menu_append(GTK_MENU(menu), opt);
@@ -490,44 +509,44 @@
 	return optmenu;
 }
 
-static void des_icon_sel(GtkWidget *w, struct mod_user *u)
+static void des_icon_sel(GtkWidget *w, struct mod_account *ma)
 {
-	w = u->icondlg;
-	if (u->icondlg)
-		u->icondlg = NULL;
+	w = ma->icondlg;
+	if (ma->icondlg)
+		ma->icondlg = NULL;
 	if (w)
 		gtk_widget_destroy(w);
 }
 
-static void set_icon(GtkWidget *w, struct mod_user *u)
+static void set_icon(GtkWidget *w, struct mod_account *ma)
 {
-	GtkWidget *sel = u->icondlg;
+	GtkWidget *sel = ma->icondlg;
 	const char *file = gtk_file_selection_get_filename(GTK_FILE_SELECTION(sel));
 
 	if (file_is_dir(file, sel))
 		return;
 
-	gtk_entry_set_text(GTK_ENTRY(u->iconentry), file);
-	g_snprintf(u->iconfile, sizeof(u->iconfile), "%s", file);
-	u->icondlg = NULL;
+	gtk_entry_set_text(GTK_ENTRY(ma->iconentry), file);
+	g_snprintf(ma->iconfile, sizeof(ma->iconfile), "%s", file);
+	ma->icondlg = NULL;
 
 	gtk_widget_destroy(sel);
 }
 
-static void sel_icon_dlg(GtkWidget *w, struct mod_user *u)
+static void sel_icon_dlg(GtkWidget *w, struct mod_account *ma)
 {
 	GtkWidget *dlg;
 	char buf[256];
 
-	if (u->icondlg) {
-		gtk_widget_show(u->icondlg);
+	if (ma->icondlg) {
+		gtk_widget_show(ma->icondlg);
 		return;
 	}
 
 	dlg = gtk_file_selection_new(_("Gaim - Load Buddy Icon"));
 	gtk_file_selection_hide_fileop_buttons(GTK_FILE_SELECTION(dlg));
-	if (u->iconfile) {
-		char *tmp = g_dirname(u->iconfile);
+	if (ma->iconfile) {
+		char *tmp = g_dirname(ma->iconfile);
 		gtk_file_selection_set_filename(GTK_FILE_SELECTION(dlg), tmp);
 		g_free(tmp);
 	} else {
@@ -535,24 +554,24 @@
 		gtk_file_selection_set_filename(GTK_FILE_SELECTION(dlg), buf);
 	}
 
-	g_signal_connect(GTK_OBJECT(dlg), "destroy", G_CALLBACK(des_icon_sel), u);
+	g_signal_connect(GTK_OBJECT(dlg), "destroy", G_CALLBACK(des_icon_sel), ma);
 	g_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(dlg)->cancel_button), "clicked",
-			   G_CALLBACK(des_icon_sel), u);
+			   G_CALLBACK(des_icon_sel), ma);
 	g_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(dlg)->ok_button), "clicked",
-			   G_CALLBACK(set_icon), u);
+			   G_CALLBACK(set_icon), ma);
 
-	u->icondlg = dlg;
+	ma->icondlg = dlg;
 
 	gtk_widget_show(dlg);
 }
 
-static void reset_icon(GtkWidget *w, struct mod_user *u)
+static void reset_icon(GtkWidget *w, struct mod_account *ma)
 {
-	u->iconfile[0] = 0;
-	gtk_entry_set_text(GTK_ENTRY(u->iconentry), "");
+	ma->iconfile[0] = 0;
+	gtk_entry_set_text(GTK_ENTRY(ma->iconentry), "");
 }
 
-static GtkWidget *build_icon_selection(struct mod_user *u, GtkWidget *box)
+static GtkWidget *build_icon_selection(struct mod_account *ma, GtkWidget *box)
 {
 	GtkWidget *hbox;
 	GtkWidget *label;
@@ -560,40 +579,40 @@
 	GtkWidget *browse;
 	GtkWidget *reset;
 
-	if (u->user)
-		g_snprintf(u->iconfile, sizeof(u->iconfile), "%s", u->user->iconfile);
+	if (ma->account)
+		g_snprintf(ma->iconfile, sizeof(ma->iconfile), "%s", ma->account->iconfile);
 
 	hbox = gtk_hbox_new(FALSE, 0);
 	gtk_box_pack_start(GTK_BOX(box), hbox, FALSE, FALSE, 5);
 	gtk_widget_show(hbox);
 
 	label = gtk_label_new(_("Buddy Icon File:"));
-	gtk_size_group_add_widget(u->sg, label);
+	gtk_size_group_add_widget(ma->sg, label);
 	gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
 	gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
 	gtk_widget_show(label);
 
 	name = gtk_entry_new();
-	gtk_entry_set_text(GTK_ENTRY(name), u->iconfile);
+	gtk_entry_set_text(GTK_ENTRY(name), ma->iconfile);
 	gtk_entry_set_editable(GTK_ENTRY(name), FALSE);
 	gtk_box_pack_start(GTK_BOX(hbox), name, TRUE, TRUE, 5);
 	gtk_widget_show(name);
-	u->iconentry = name;
+	ma->iconentry = name;
 
 	browse = gtk_button_new_with_label(_("Browse"));
-	g_signal_connect(GTK_OBJECT(browse), "clicked", G_CALLBACK(sel_icon_dlg), u);
+	g_signal_connect(GTK_OBJECT(browse), "clicked", G_CALLBACK(sel_icon_dlg), ma);
 	gtk_box_pack_start(GTK_BOX(hbox), browse, FALSE, FALSE, 0);
 	gtk_widget_show(browse);
 
 	reset = gtk_button_new_with_label(_("Reset"));
-	g_signal_connect(GTK_OBJECT(reset), "clicked", G_CALLBACK(reset_icon), u);
+	g_signal_connect(GTK_OBJECT(reset), "clicked", G_CALLBACK(reset_icon), ma);
 	gtk_box_pack_start(GTK_BOX(hbox), reset, FALSE, FALSE, 0);
 	gtk_widget_show(reset);
 
 	return hbox;
 }
 
-static void generate_login_options(struct mod_user *u, GtkWidget *box)
+static void generate_login_options(struct mod_account *ma, GtkWidget *box)
 {
 	GtkWidget *frame, *frame_parent;
 	GtkWidget *vbox;
@@ -613,66 +632,66 @@
 	gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
 
 	label = gtk_label_new(_("Screenname:"));
-	gtk_size_group_add_widget(u->sg, label);
+	gtk_size_group_add_widget(ma->sg, label);
 	gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
 	gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
 
-	u->name = gtk_entry_new();
-	gtk_box_pack_start(GTK_BOX(hbox), u->name, TRUE, TRUE, 0);
+	ma->name = gtk_entry_new();
+	gtk_box_pack_start(GTK_BOX(hbox), ma->name, TRUE, TRUE, 0);
 
-	u->pwdbox = gtk_hbox_new(FALSE, 5);
-	gtk_box_pack_start(GTK_BOX(vbox), u->pwdbox, FALSE, FALSE, 0);
+	ma->pwdbox = gtk_hbox_new(FALSE, 5);
+	gtk_box_pack_start(GTK_BOX(vbox), ma->pwdbox, FALSE, FALSE, 0);
 
 	label = gtk_label_new(_("Password:"));
-	gtk_size_group_add_widget(u->sg, label);
+	gtk_size_group_add_widget(ma->sg, label);
 	gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
-	gtk_box_pack_start(GTK_BOX(u->pwdbox), label, FALSE, FALSE, 0);
+	gtk_box_pack_start(GTK_BOX(ma->pwdbox), label, FALSE, FALSE, 0);
 
-	u->pass = gtk_entry_new();
-	gtk_box_pack_start(GTK_BOX(u->pwdbox), u->pass, TRUE, TRUE, 0);
-	gtk_entry_set_visibility(GTK_ENTRY(u->pass), FALSE);
+	ma->pass = gtk_entry_new();
+	gtk_box_pack_start(GTK_BOX(ma->pwdbox), ma->pass, TRUE, TRUE, 0);
+	gtk_entry_set_visibility(GTK_ENTRY(ma->pass), FALSE);
 
 	hbox = gtk_hbox_new(FALSE, 5);
 	gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
 
 	label = gtk_label_new(_("Alias:"));
-	gtk_size_group_add_widget(u->sg, label);
+	gtk_size_group_add_widget(ma->sg, label);
 	gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
 	gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
 
-	u->alias = gtk_entry_new();
-	gtk_box_pack_start(GTK_BOX(hbox), u->alias, TRUE, TRUE, 0);
+	ma->alias = gtk_entry_new();
+	gtk_box_pack_start(GTK_BOX(hbox), ma->alias, TRUE, TRUE, 0);
 
 	hbox = gtk_hbox_new(FALSE, 5);
 	gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
 	gtk_widget_show(hbox);
 
 	label = gtk_label_new(_("Protocol:"));
-	gtk_size_group_add_widget(u->sg, label);
+	gtk_size_group_add_widget(ma->sg, label);
 	gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
 	gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
 
-	make_protocol_menu(hbox, u);
+	make_protocol_menu(hbox, ma);
 
-	u->rempass = acct_button(_("Remember Password"), u, OPT_USR_REM_PASS, vbox);
-	acct_button(_("Auto-Login"), u, OPT_USR_AUTO, vbox);
+	ma->rempass = acct_button(_("Remember Password"), ma, OPT_ACCT_REM_PASS, vbox);
+	acct_button(_("Auto-Login"), ma, OPT_ACCT_AUTO, vbox);
 
 	gtk_widget_show_all(frame_parent);
 
-	if (u->user) {
-		gtk_entry_set_text(GTK_ENTRY(u->name), u->user->username);
-		gtk_entry_set_text(GTK_ENTRY(u->alias), u->user->alias);		
-		gtk_entry_set_text(GTK_ENTRY(u->pass), u->user->password);
+	if (ma->account) {
+		gtk_entry_set_text(GTK_ENTRY(ma->name), ma->account->username);
+		gtk_entry_set_text(GTK_ENTRY(ma->alias), ma->account->alias);
+		gtk_entry_set_text(GTK_ENTRY(ma->pass), ma->account->password);
 	}
 
-	p = find_prpl(u->protocol);
+	p = find_prpl(ma->protocol);
 	if (p && (p->options & OPT_PROTO_NO_PASSWORD)) {
-		gtk_widget_hide(u->pwdbox);
-		gtk_widget_hide(u->rempass);
+		gtk_widget_hide(ma->pwdbox);
+		gtk_widget_hide(ma->rempass);
 	}
 }
 
-static void generate_user_options(struct mod_user *u, GtkWidget *box)
+static void generate_user_options(struct mod_account *ma, GtkWidget *box)
 {
 	/* This function will add the appropriate (depending on the current
 	 * protocol) widgets to frame and return TRUE if there anything
@@ -686,38 +705,38 @@
 	GtkWidget *vbox;
 	GtkWidget *frame;
 
-	struct prpl *p = find_prpl(u->protocol);
+	struct prpl *p = find_prpl(ma->protocol);
 
 	frame = make_frame(box, _("User Options"));
-	u->user_frame = gtk_widget_get_parent(gtk_widget_get_parent(frame));
-	gtk_widget_show_all(u->user_frame);
+	ma->user_frame = gtk_widget_get_parent(gtk_widget_get_parent(frame));
+	gtk_widget_show_all(ma->user_frame);
 
 	vbox = gtk_vbox_new(FALSE, 5);
 	gtk_container_set_border_width(GTK_CONTAINER(vbox), 5);
 	gtk_container_add(GTK_CONTAINER(frame), vbox);
 	gtk_widget_show(vbox);
 
-	u->checkmail = acct_button(_("New Mail Notifications"), u, OPT_USR_MAIL_CHECK, vbox);
-	u->iconsel = build_icon_selection(u, vbox);
+	ma->checkmail = acct_button(_("New Mail Notifications"), ma, OPT_ACCT_MAIL_CHECK, vbox);
+	ma->iconsel = build_icon_selection(ma, vbox);
 
 	if (!p) {
-		gtk_widget_hide(u->user_frame);
+		gtk_widget_hide(ma->user_frame);
 		return;
 	}
 
 	if (!(p->options & OPT_PROTO_MAIL_CHECK))
-		gtk_widget_hide(u->checkmail);
+		gtk_widget_hide(ma->checkmail);
 	if (!(p->options & OPT_PROTO_BUDDY_ICON))
-		gtk_widget_hide(u->iconsel);
+		gtk_widget_hide(ma->iconsel);
 
 	if ((p->options & OPT_PROTO_BUDDY_ICON) || (p->options & OPT_PROTO_MAIL_CHECK))
 		return;
-	gtk_widget_hide(u->user_frame);
+	gtk_widget_hide(ma->user_frame);
 }
 
-static void generate_protocol_options(struct mod_user *u, GtkWidget *box)
+static void generate_protocol_options(struct mod_account *ma, GtkWidget *box)
 {
-	struct prpl *p = find_prpl(u->protocol);
+	struct prpl *p = find_prpl(ma->protocol);
 
 	GList *op, *tmp;
 
@@ -729,13 +748,13 @@
 
 	char buf[256];
 
-	if (u->proto_frame)
-		gtk_widget_destroy(u->proto_frame);
-	u->proto_frame = NULL;
+	if (ma->proto_frame)
+		gtk_widget_destroy(ma->proto_frame);
+	ma->proto_frame = NULL;
 
-	if (u->opt_entries) {
-		g_list_free(u->opt_entries);
-		u->opt_entries = NULL;
+	if (ma->opt_entries) {
+		g_list_free(ma->opt_entries);
+		ma->opt_entries = NULL;
 	}
 
 	if (!p)
@@ -753,8 +772,8 @@
 	frame = make_frame(box, buf);
 
 	/* BLEH */
-	u->proto_frame = gtk_widget_get_parent(gtk_widget_get_parent(frame));
-	gtk_widget_show_all(u->proto_frame);
+	ma->proto_frame = gtk_widget_get_parent(gtk_widget_get_parent(frame));
+	gtk_widget_show_all(ma->proto_frame);
 
 	vbox = gtk_vbox_new(FALSE, 5);
 	gtk_container_set_border_width(GTK_CONTAINER(vbox), 5);
@@ -769,7 +788,7 @@
 		gtk_widget_show(hbox);
 
 		label = gtk_label_new(puo->label);
-		gtk_size_group_add_widget(u->sg, label);
+		gtk_size_group_add_widget(ma->sg, label);
 		gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
 		gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
 		gtk_widget_show(label);
@@ -777,35 +796,35 @@
 		entry = gtk_entry_new();
 		gtk_box_pack_end(GTK_BOX(hbox), entry, FALSE, FALSE, 0);
 		gtk_object_set_user_data(GTK_OBJECT(entry), (void *)puo->pos);
-		if (u->proto_opt[puo->pos][0]) {
-			debug_printf("setting text %s\n", u->proto_opt[puo->pos]);
-			gtk_entry_set_text(GTK_ENTRY(entry), u->proto_opt[puo->pos]);
+		if (ma->proto_opt[puo->pos][0]) {
+			debug_printf("setting text %s\n", ma->proto_opt[puo->pos]);
+			gtk_entry_set_text(GTK_ENTRY(entry), ma->proto_opt[puo->pos]);
 		} else {
 			gtk_entry_set_text(GTK_ENTRY(entry), puo->def);
 		}
 		gtk_widget_show(entry);
 
-		u->opt_entries = g_list_append(u->opt_entries, entry);
-		
+		ma->opt_entries = g_list_append(ma->opt_entries, entry);
+
 		op = op->next;
 	}
 
 	if(p->register_user != NULL) {
-		u->register_user = gtk_check_button_new_with_label(_("Register with server"));
-		gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(u->register_user), FALSE);
-		gtk_box_pack_start(GTK_BOX(vbox), u->register_user, FALSE, FALSE, 0);
-		gtk_widget_show(u->register_user);
+		ma->register_user = gtk_check_button_new_with_label(_("Register with server"));
+		gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(ma->register_user), FALSE);
+		gtk_box_pack_start(GTK_BOX(vbox), ma->register_user, FALSE, FALSE, 0);
+		gtk_widget_show(ma->register_user);
 	}
 
 }
 
-static void show_acct_mod(struct aim_user *a)
+static void show_acct_mod(struct gaim_account *a)
 {
 	/* This is the fucking modify account dialog. I've fucking seperated it into
 	 * three fucking frames:
 	 * a fucking Login Options frame, a fucking User Options frame and a fucking
-	 * Protcol Options frame. This fucking removes the two fucking tabs, which were
-	 * quite fucking uneccessary. Fuck. */
+	 * Protcol Options frame. This fucking removes the two fucking tabs, which 
+	 * were quite fucking uneccessary. Fuck. */
 				/* -- SeanEgan */
 				/* YEAH!! -- ChipX86 */
 	GtkWidget *hbox, *vbox;
@@ -813,62 +832,62 @@
 	GtkWidget *sep;
 	GtkSizeGroup *button_sg;
 
-	struct mod_user *u = find_mod_user(a);
+	struct mod_account *ma = mod_account_find(a);
 
-	if (!u) {
-		u = g_new0(struct mod_user, 1);
-		u->user = a;
-		mod_users = g_slist_append(mod_users, u);
+	if (!ma) {
+		ma = g_new0(struct mod_account, 1);
+		ma->account = a;
+		mod_accounts = g_slist_append(mod_accounts, ma);
 
 		if (a) {
 			int i;
-			u->options = a->options;
+			ma->options = a->options;
 			if (find_prpl(a->protocol))
-				u->protocol = a->protocol;
+				ma->protocol = a->protocol;
 			else if (protocols)
-				u->protocol = ((struct prpl *)protocols->data)->protocol;
+				ma->protocol = ((struct prpl *)protocols->data)->protocol;
 			else
-				u->protocol = -1;
-			g_snprintf(u->iconfile, sizeof(u->iconfile), "%s", a->iconfile);
+				ma->protocol = -1;
+			g_snprintf(ma->iconfile, sizeof(ma->iconfile), "%s", a->iconfile);
 			for (i = 0; i < 7; i++)
-				g_snprintf(u->proto_opt[i], sizeof(u->proto_opt[i]), "%s",
+				g_snprintf(ma->proto_opt[i], sizeof(ma->proto_opt[i]), "%s",
 						a->proto_opt[i]);
 		} else {
-			u->options = OPT_USR_REM_PASS;
+			ma->options = OPT_ACCT_REM_PASS;
 			if (find_prpl(DEFAULT_PROTO))
-				u->protocol = DEFAULT_PROTO;
+				ma->protocol = DEFAULT_PROTO;
 			else if (protocols)
-				u->protocol = ((struct prpl *)protocols->data)->protocol;
+				ma->protocol = ((struct prpl *)protocols->data)->protocol;
 			else
-				u->protocol = -1;
+				ma->protocol = -1;
 		}
 	} else {
-		gtk_widget_show(u->mod);
+		gtk_widget_show(ma->mod);
 		return;
 	}
 
-	u->mod = gtk_window_new(GTK_WINDOW_TOPLEVEL);
-	gtk_window_set_role(GTK_WINDOW(u->mod), "account");
-	gtk_widget_realize(u->mod);
-	gtk_window_set_title(GTK_WINDOW(u->mod), _("Gaim - Modify Account"));
-	gtk_window_set_policy(GTK_WINDOW(u->mod), FALSE, FALSE, TRUE);	/* nothing odd here :) */
-	g_signal_connect(GTK_OBJECT(u->mod), "destroy", G_CALLBACK(delmod), u);
+	ma->mod = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+	gtk_window_set_role(GTK_WINDOW(ma->mod), "account");
+	gtk_widget_realize(ma->mod);
+	gtk_window_set_title(GTK_WINDOW(ma->mod), _("Gaim - Modify Account"));
+	gtk_window_set_policy(GTK_WINDOW(ma->mod), FALSE, FALSE, TRUE);	/* nothing odd here :) */
+	g_signal_connect(GTK_OBJECT(ma->mod), "destroy", G_CALLBACK(delmod), ma);
 
 	vbox = gtk_vbox_new(FALSE, 6);
 	gtk_container_border_width(GTK_CONTAINER(vbox), 6);
-	gtk_container_add(GTK_CONTAINER(u->mod), vbox);
+	gtk_container_add(GTK_CONTAINER(ma->mod), vbox);
 	gtk_widget_show(vbox);
 
-	u->main = gtk_vbox_new(FALSE, 12);
-	gtk_container_border_width(GTK_CONTAINER(u->main), 6);
-	gtk_box_pack_start(GTK_BOX(vbox), u->main, FALSE, FALSE, 0);
-	gtk_widget_show(u->main);
+	ma->main = gtk_vbox_new(FALSE, 12);
+	gtk_container_border_width(GTK_CONTAINER(ma->main), 6);
+	gtk_box_pack_start(GTK_BOX(vbox), ma->main, FALSE, FALSE, 0);
+	gtk_widget_show(ma->main);
 
-	u->sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
+	ma->sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
 
-	generate_login_options(u, u->main);
-	generate_user_options(u, u->main);
-	generate_protocol_options(u, u->main);
+	generate_login_options(ma, ma->main);
+	generate_user_options(ma, ma->main);
+	generate_protocol_options(ma, ma->main);
 
 	hbox = gtk_hbox_new(FALSE, 6);
 	gtk_container_set_border_width (GTK_CONTAINER (hbox), 6);
@@ -879,19 +898,19 @@
 	button = gtk_button_new_from_stock(GTK_STOCK_OK);
 	gtk_size_group_add_widget(button_sg, button);
 	gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 0);
-	g_signal_connect(GTK_OBJECT(button), "clicked", G_CALLBACK(ok_mod), u);
+	g_signal_connect(GTK_OBJECT(button), "clicked", G_CALLBACK(ok_mod), ma);
 
 	button = gtk_button_new_from_stock(GTK_STOCK_CANCEL);
 	gtk_size_group_add_widget(button_sg, button);
 	gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 0);
-	g_signal_connect(GTK_OBJECT(button), "clicked", G_CALLBACK(cancel_mod), u);
+	g_signal_connect(GTK_OBJECT(button), "clicked", G_CALLBACK(cancel_mod), ma);
 
 	sep = gtk_hseparator_new();
 	gtk_box_pack_end (GTK_BOX (vbox), sep, FALSE, FALSE, 0);
 	gtk_widget_show(sep);
 
 	gtk_widget_show_all(hbox);
-	gtk_widget_show(u->mod);
+	gtk_widget_show(ma->mod);
 }
 
 static void add_acct(GtkWidget *w, gpointer d)
@@ -902,12 +921,12 @@
 static void mod_acct_func(GtkTreeModel *model, GtkTreePath *path,
 						  GtkTreeIter *iter, gpointer data)
 {
-	struct aim_user *u;
+	struct gaim_account *a;
 
-	gtk_tree_model_get(model, iter, COLUMN_DATA, &u, -1);
+	gtk_tree_model_get(model, iter, COLUMN_DATA, &a, -1);
 
-	if (u != NULL)
-		show_acct_mod(u);
+	if (a != NULL)
+		show_acct_mod(a);
 }
 
 static void mod_acct(GtkWidget *w, gpointer d)
@@ -917,33 +936,21 @@
 	selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview));
 
 	gtk_tree_selection_selected_foreach(selection, mod_acct_func, NULL);
-
-#if 0
-	while (l) {
-		row = (int)l->data;
-		if (row != -1) {
-			u = g_slist_nth_data(aim_users, row);
-			if (u)
-				show_acct_mod(u);
-		}
-		l = l->next;
-	}
-#endif
 }
 
 struct pass_prompt {
-	struct aim_user *u;
+	struct gaim_account *account;
 	GtkWidget *win;
 	GtkWidget *entry;
 };
 static GSList *passes = NULL;
 
-static struct pass_prompt *find_pass_prompt(struct aim_user *u)
+static struct pass_prompt *find_pass_prompt(struct gaim_account *account)
 {
 	GSList *p = passes;
 	while (p) {
 		struct pass_prompt *r = p->data;
-		if (r->u == u)
+		if (r->account == account)
 			return r;
 		p = p->next;
 	}
@@ -954,25 +961,25 @@
 {
 	if (resp == GTK_RESPONSE_YES) {	
 		const char *txt = gtk_entry_get_text(GTK_ENTRY(p->entry));
-		g_snprintf(p->u->password, sizeof(p->u->password), "%s", txt);
-		serv_login(p->u);
+		g_snprintf(p->account->password, sizeof(p->account->password), "%s", txt);
+		serv_login(p->account);
 	}
 	passes = g_slist_remove(passes, p);
 	gtk_widget_destroy(p->win);
 	g_free(p);
 }
 
-static void do_pass_dlg(struct aim_user *u)
+static void do_pass_dlg(struct gaim_account *account)
 {
 	/* we can safely assume that u is not NULL */
-	struct pass_prompt *p = find_pass_prompt(u);
+	struct pass_prompt *p = find_pass_prompt(account);
 	GtkWidget *label;
 	GtkWidget *hbox, *vbox;
 	char *labeltext=NULL;
- 	char *filename = g_build_filename(DATADIR, "pixmaps", "gaim", "dialogs", "gaim_auth.png", NULL);
+	char *filename = g_build_filename(DATADIR, "pixmaps", "gaim", "dialogs", "gaim_auth.png", NULL);
 	GtkWidget *img = gtk_image_new_from_file(filename);
 	g_free(filename);
-	
+
 
 	if (p) {
 		gtk_widget_show(p->win);
@@ -980,10 +987,10 @@
 	}
 
 	p = g_new0(struct pass_prompt, 1);
-	p->u = u;
+	p->account = account;
 	passes = g_slist_append(passes, p);
 
-	p->win = gtk_dialog_new_with_buttons("", NULL, 0, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, 
+	p->win = gtk_dialog_new_with_buttons("", NULL, 0, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
 						_("_Login"), GTK_RESPONSE_YES, NULL);
 
 	gtk_dialog_set_default_response (GTK_DIALOG(p->win), GTK_RESPONSE_YES);
@@ -1002,14 +1009,15 @@
 	vbox = gtk_vbox_new(FALSE, 0);
 	gtk_container_add(GTK_CONTAINER(hbox), vbox);	
 
-	labeltext = g_strdup_printf(_("Please enter your password for %s.\n\n"), u->username);
+	labeltext = g_strdup_printf(_("Please enter your password for %s.\n\n"),
+			account->username);
 	label = gtk_label_new(labeltext);
 	g_free(labeltext);
 
 	gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
 	gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
 	gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
-	
+
 	hbox = gtk_hbox_new(FALSE, 5);
 	gtk_container_add(GTK_CONTAINER(vbox), hbox);
 	label = gtk_label_new_with_mnemonic(_("_Password"));
@@ -1031,26 +1039,26 @@
 	GtkTreeModel *model = (GtkTreeModel *)d;
 	GtkTreeIter iter;
 
-	struct aim_user *u = NULL;
+	struct gaim_account *account = NULL;
 	struct prpl *p = NULL;
 
 	gtk_tree_model_get_iter_from_string(model, &iter, path_str);
-	gtk_tree_model_get(model, &iter, COLUMN_DATA, &u, -1);
+	gtk_tree_model_get(model, &iter, COLUMN_DATA, &account, -1);
 
-	p = find_prpl(u->protocol);
-	if (!u->gc && p && p->login) {
-		struct prpl *p = find_prpl(u->protocol);
+	p = find_prpl(account->protocol);
+	if (!account->gc && p && p->login) {
+		struct prpl *p = find_prpl(account->protocol);
 		if (p && !(p->options & OPT_PROTO_NO_PASSWORD) &&
-			!(p->options & OPT_PROTO_PASSWORD_OPTIONAL) && !u->password[0]) {
-			do_pass_dlg(u);
+			!(p->options & OPT_PROTO_PASSWORD_OPTIONAL) && !account->password[0]) {
+			do_pass_dlg(account);
 		} else {
-			serv_login(u);
+			serv_login(account);
 		}
-	} else if (u->gc) {
-		u->gc->wants_to_die = TRUE;
-		signoff(u->gc);
+	} else if (account->gc) {
+		account->gc->wants_to_die = TRUE;
+		signoff(account->gc);
 	} else {
-		if (u->protocol == PROTO_TOC)
+		if (account->protocol == PROTO_TOC)
 			do_error_dialog(_("TOC not found."), 
 					_("You have attempted to login an IM account using the "
 					 "TOC protocol.  Because this protocol is inferior to "
@@ -1071,30 +1079,30 @@
 	GtkTreeModel *model = (GtkTreeModel *)d;
 	GtkTreeIter iter;
 
-	struct aim_user *u = NULL;
+	struct gaim_account *account = NULL;
 
 	gtk_tree_model_get_iter_from_string(model, &iter, path_str);
-	gtk_tree_model_get(model, &iter, COLUMN_DATA, &u, -1);
+	gtk_tree_model_get(model, &iter, COLUMN_DATA, &account, -1);
 
-	u->options ^= OPT_USR_AUTO;
+	account->options ^= OPT_ACCT_AUTO;
 
 	gtk_list_store_set(GTK_LIST_STORE(model), &iter,
-					   COLUMN_AUTOLOGIN, (u->options & OPT_USR_AUTO), -1);
+					   COLUMN_AUTOLOGIN, (account->options & OPT_ACCT_AUTO), -1);
 
 	save_prefs();
 }
 
-static void do_del_acct(struct aim_user *u)
+static void do_del_acct(struct gaim_account *account)
 {
 	GtkTreeIter iter;
 	GSList *grps = groups, *buds;
 
-	if (u->gc) {
-		u->gc->wants_to_die = TRUE;
-		signoff(u->gc);
+	if (account->gc) {
+		account->gc->wants_to_die = TRUE;
+		signoff(account->gc);
 	}
 
-	if (get_iter_from_data(GTK_TREE_VIEW(treeview), u, &iter)) {
+	if (get_iter_from_data(GTK_TREE_VIEW(treeview), account, &iter)) {
 		gtk_list_store_remove(GTK_LIST_STORE(model), &iter);
 	}
 
@@ -1107,7 +1115,7 @@
 		while(buds) {
 			struct buddy *b = buds->data;
 			buds = buds->next;
-			if(b->user == u) {
+			if(b->account == account) {
 				/* sigh, someday we'll get a central gaim_buddy_free() */
 				g->members = g_slist_remove(g->members, b);
 				g_hash_table_destroy(b->settings);
@@ -1121,7 +1129,7 @@
 		}
 	}
 
-	aim_users = g_slist_remove(aim_users, u);
+	gaim_accounts = g_slist_remove(gaim_accounts, account);
 
 	gaim_blist_save();
 
@@ -1131,16 +1139,16 @@
 static void del_acct_func(GtkTreeModel *model, GtkTreePath *path,
 						  GtkTreeIter *iter, gpointer data)
 {
-	struct aim_user *u;
+	struct gaim_account *account;
 
-	gtk_tree_model_get(model, iter, COLUMN_DATA, &u, -1);
+	gtk_tree_model_get(model, iter, COLUMN_DATA, &account, -1);
 
-	if (u != NULL) {
+	if (account != NULL) {
 		char buf[8192];
 
 		g_snprintf(buf, sizeof(buf),
-				   _("Are you sure you want to delete %s?"), u->username);
-		do_ask_dialog(buf, NULL, u, _("Delete"), do_del_acct, _("Cancel"), NULL, NULL, FALSE);
+				   _("Are you sure you want to delete %s?"), account->username);
+		do_ask_dialog(buf, NULL, account, _("Delete"), do_del_acct, _("Cancel"), NULL, NULL, FALSE);
 	}
 }
 
@@ -1153,24 +1161,6 @@
 	gtk_tree_selection_selected_foreach(selection, del_acct_func, NULL);
 }
 
-#if 0
-static void sel_auto(gpointer w, gpointer d)
-{
-	GSList *l = aim_users;
-	struct aim_user *u;
-	int i = 0;		/* faster than doing g_list_index each time */
-	while (l) {
-		u = l->data;
-		l = l->next;
-		if (u->options & OPT_USR_AUTO)
-			gtk_clist_select_row(GTK_CLIST(list), i, -1);
-		else
-			gtk_clist_unselect_row(GTK_CLIST(list), i, -1);
-		i++;
-	}
-}
-#endif
-
 void account_editor(GtkWidget *w, GtkWidget *W)
 {
 	/* please kill me */
@@ -1360,7 +1350,7 @@
 	redo_buddy_list();
 	gaim_setup(gc);
 
-	gc->user->connecting = FALSE;
+	gc->account->connecting = FALSE;
 	connecting_count--;
 	debug_printf("connecting_count: %d\n", connecting_count);
 
@@ -1386,7 +1376,7 @@
 		struct group *g = grps->data;
 		for(buds = g->members; buds; buds = buds->next) {
 			struct buddy *b = buds->data;
-			if(b->user->gc == gc) {
+			if(b->account == gc->account) {
 				add_buds = g_list_append(add_buds, b->name);
 			}
 		}
@@ -1403,7 +1393,7 @@
 	if (!acctedit)
 		return;
 
-	if (get_iter_from_data(GTK_TREE_VIEW(treeview), gc->user, &iter)) {
+	if (get_iter_from_data(GTK_TREE_VIEW(treeview), gc->account, &iter)) {
 		gtk_list_store_set(model, &iter,
 						   COLUMN_ONLINE, TRUE,
 						   COLUMN_PROTOCOL, gc->prpl->name,
@@ -1414,8 +1404,8 @@
 	for (l = gaim_get_conversations(); l != NULL; l = l->next) {
 		struct gaim_conversation *conv = (struct gaim_conversation *)l->data;
 
-		if (gaim_conversation_get_user(conv) == gc->user) {
-			gaim_conversation_update(conv, GAIM_CONV_UPDATE_USER);
+		if (gaim_conversation_get_account(conv) == gc->account) {
+			gaim_conversation_update(conv, GAIM_CONV_UPDATE_ACCOUNT);
 		}
 	}
 }
@@ -1432,8 +1422,8 @@
 		g_free(meter);
 	}
 	debug_printf("Disconnecting. user = %p, gc = %p (%p)\n",
-				 gc->user, gc->user->gc, gc);
-	gc->user->gc = NULL;	/* wasn't that awkward? */
+				 gc->account, gc->account->gc, gc);
+	gc->account->gc = NULL;	/* wasn't that awkward? */
 
 	/* take these buddies out of the edit tree */
 	build_edit_tree();
@@ -1441,7 +1431,7 @@
 	if (!acctedit)
 		return;
 
-	if (get_iter_from_data(GTK_TREE_VIEW(treeview), gc->user, &iter)) {
+	if (get_iter_from_data(GTK_TREE_VIEW(treeview), gc->account, &iter)) {
 		gtk_list_store_set(model, &iter, COLUMN_ONLINE, FALSE, -1);
 	}
 
@@ -1449,23 +1439,23 @@
 	for (l = gaim_get_conversations(); l != NULL; l = l->next) {
 		struct gaim_conversation *conv = (struct gaim_conversation *)l->data;
 
-		if (gaim_conversation_get_user(conv) == gc->user) {
-			gaim_conversation_update(conv, GAIM_CONV_UPDATE_USER);
+		if (gaim_conversation_get_account(conv) == gc->account) {
+			gaim_conversation_update(conv, GAIM_CONV_UPDATE_ACCOUNT);
 		}
 	}
 }
 
 void auto_login()
 {
-	GSList *u = aim_users;
-	struct aim_user *a = NULL;
+	GSList *accts = gaim_accounts;
+	struct gaim_account *a = NULL;
 
-	while (u) {
-		a = (struct aim_user *)u->data;
-		if ((a->options & OPT_USR_AUTO) && (a->options & OPT_USR_REM_PASS)) {
+	while (accts) {
+		a = (struct gaim_account *)accts->data;
+		if ((a->options & OPT_ACCT_AUTO) && (a->options & OPT_ACCT_REM_PASS)) {
 			serv_login(a);
 		}
-		u = u->next;
+		accts = accts->next;
 	}
 }
 
@@ -1497,31 +1487,31 @@
 	GtkWidget *nest_vbox;
 	GString *name_to_print;
 	struct signon_meter *meter;
-	
+
 	name_to_print = g_string_new(gc->username);
-	
+
 	meter = g_new0(struct signon_meter, 1);
-	
+
 	(*rows)++;
 	gtk_table_resize (table, *rows, 4);
-	
+
 	graphic = create_meter_pixmap( widget , gc);
-	
+
 	nest_vbox = gtk_vbox_new (FALSE, 0);
-	
+
 	g_string_prepend(name_to_print, _("Signon: "));
 	label = gtk_label_new (name_to_print->str);
 	g_string_free(name_to_print, TRUE);
 	gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
-		
+
 	meter->status = gtk_statusbar_new();
 	gtk_widget_set_usize(meter->status, 250, 0);
-	
+
 	meter->progress = gtk_progress_bar_new ();
-	
+
 	meter->button = gtk_button_new_with_label (_("Cancel"));
 	g_signal_connect (GTK_OBJECT (meter->button), "clicked", G_CALLBACK (cancel_signon), meter);
-		
+
 	gtk_table_attach (GTK_TABLE (table), graphic, 0, 1, *rows, *rows+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0);
 	gtk_table_attach (GTK_TABLE (table), nest_vbox, 1, 2, *rows, *rows+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0);
 		gtk_box_pack_start (GTK_BOX (nest_vbox), GTK_WIDGET (label), FALSE, FALSE, 0);
@@ -1530,9 +1520,9 @@
 	gtk_table_attach (GTK_TABLE (table), meter->button, 3, 4, *rows, *rows+1, (GtkAttachOptions) (GTK_FILL), (GtkAttachOptions) (0), 0, 0);
 
 	gtk_widget_show_all (GTK_WIDGET (meter_win->window));
-	
+
 	meter_win->active_count++;
-	
+
 	return meter;
 }
 
@@ -1602,17 +1592,17 @@
 }
 
 struct kick_dlg {
-	struct aim_user *user;
+	struct gaim_account *account;
 	GtkWidget *dlg;
 };
 static GSList *kicks = NULL;
 
-static struct kick_dlg *find_kick_dlg(struct aim_user *u)
+static struct kick_dlg *find_kick_dlg(struct gaim_account *account)
 {
 	GSList *k = kicks;
 	while (k) {
 		struct kick_dlg *d = k->data;
-		if (d->user == u)
+		if (d->account == account)
 			return d;
 		k = k->next;
 	}
@@ -1634,13 +1624,13 @@
 				       char *prologue)
 {
 	char buf[2048];
-	struct kick_dlg *k = find_kick_dlg(gc->user);
+	struct kick_dlg *k = find_kick_dlg(gc->account);
 	struct signon_meter *meter = find_signon_meter(gc);
 	sprintf(buf, _("%s\n%s: %s"), full_date(), prologue, details);
 	if (k)
 		gtk_widget_destroy(k->dlg);
 	k = g_new0(struct kick_dlg, 1);
-	k->user = gc->user;
+	k->account = gc->account;
 	k->dlg = do_error_dialog(title, buf, GAIM_ERROR);
 	kicks = g_slist_append(kicks, k);
 	g_signal_connect(GTK_OBJECT(k->dlg), "destroy", G_CALLBACK(set_kick_null), k);
@@ -1712,8 +1702,8 @@
 	/* set this in case the plugin died before really connecting.
 	   do it after calling the plugins so they can determine if
 	   this user was ever on-line or not */
-	if (gc->user->connecting) {
-		gc->user->connecting = FALSE;
+	if (gc->account->connecting) {
+		gc->account->connecting = FALSE;
 		connecting_count--;
 	}
 	debug_printf("connecting_count: %d\n", connecting_count);
@@ -1746,29 +1736,29 @@
 	show_login();
 }
 
-struct aim_user *new_user(const char *name, int proto, int opts)
+struct gaim_account *gaim_account_new(const char *name, int proto, int opts)
 {
-	struct aim_user *u = g_new0(struct aim_user, 1);
-	g_snprintf(u->username, sizeof(u->username), "%s", name);
-	g_snprintf(u->user_info, sizeof(u->user_info), "%s", DEFAULT_INFO);
-	u->protocol = proto;
-	u->options = opts;
-	u->permit = NULL;
-	u->deny = NULL;
-	aim_users = g_slist_append(aim_users, u);
+	struct gaim_account *account = g_new0(struct gaim_account, 1);
+	g_snprintf(account->username, sizeof(account->username), "%s", name);
+	g_snprintf(account->user_info, sizeof(account->user_info), "%s", DEFAULT_INFO);
+	account->protocol = proto;
+	account->options = opts;
+	account->permit = NULL;
+	account->deny = NULL;
+	gaim_accounts = g_slist_append(gaim_accounts, account);
 
 	if (treeview) {
 		GtkTreeIter iter;
 
 		gtk_list_store_append(model, &iter);
 		gtk_list_store_set(model, &iter,
-						   COLUMN_SCREENNAME, u->username,
-						   COLUMN_ONLINE, (u->gc ? TRUE : FALSE),
-						   COLUMN_AUTOLOGIN, (u->options & OPT_USR_AUTO),
-						   COLUMN_PROTOCOL, proto_name(u->protocol),
-						   COLUMN_DATA, u,
+						   COLUMN_SCREENNAME, account->username,
+						   COLUMN_ONLINE, (account->gc ? TRUE : FALSE),
+						   COLUMN_AUTOLOGIN, (account->options & OPT_ACCT_AUTO),
+						   COLUMN_PROTOCOL, proto_name(account->protocol),
+						   COLUMN_DATA, account,
 						   -1);
 	}
 
-	return u;
+	return account;
 }
--- a/src/multi.h	Fri Jan 31 06:51:49 2003 +0000
+++ b/src/multi.h	Fri Jan 31 13:03:47 2003 +0000
@@ -46,7 +46,7 @@
 	/* each connection then can have its own protocol-specific data */
 	void *proto_data;
 
-	struct aim_user *user;
+	struct gaim_account *account;
 
 	char username[64];
 	char displayname[128];
@@ -106,8 +106,8 @@
 /* number of accounts that are currently in the process of connecting */
 extern int connecting_count;
 
-struct aim_user *new_user(const char *, int, int);
-struct gaim_connection *new_gaim_conn(struct aim_user *);
+struct gaim_account *gaim_account_new(const char *, int, int);
+struct gaim_connection *new_gaim_conn(struct gaim_account *);
 void destroy_gaim_conn(struct gaim_connection *);
 
 void regenerate_user_list();
--- a/src/perl.c	Fri Jan 31 06:51:49 2003 +0000
+++ b/src/perl.c	Fri Jan 31 13:03:47 2003 +0000
@@ -574,27 +574,27 @@
 		{
 			struct gaim_connection *gc = (struct gaim_connection *)SvIV(ST(1));
 			if (g_slist_find(connections, gc))
-				XST_mIV(i++, g_slist_index(aim_users, gc->user));
+				XST_mIV(i++, g_slist_index(gaim_accounts, gc->account));
 			else
 				XST_mIV(i++, -1);
 		}
 		break;
 	case 5:
 		{
-			GSList *a = aim_users;
+			GSList *a = gaim_accounts;
 			while (a) {
-				struct aim_user *u = a->data;
-				XST_mPV(i++, u->username);
+				struct gaim_account *account = a->data;
+				XST_mPV(i++, account->username);
 				a = a->next;
 			}
 		}
 		break;
 	case 6:
 		{
-			GSList *a = aim_users;
+			GSList *a = gaim_accounts;
 			while (a) {
-				struct aim_user *u = a->data;
-				XST_mIV(i++, u->protocol);
+				struct gaim_account *account = a->data;
+				XST_mIV(i++, account->protocol);
 				a = a->next;
 			}
 		}
@@ -648,7 +648,7 @@
 		mem = g->members;
 		while (mem) {
 			buddy = (struct buddy *)mem->data;
-			if(buddy->user->gc == gc)
+			if(buddy->account == gc->account)
 				XST_mPV(i++, buddy->name);
 			mem = mem->next;
 		}
@@ -675,7 +675,7 @@
 		mem = g->members;
 		while (mem) {
 			b = (struct buddy *)mem->data;
-			if (b->user->gc == gc && b->present) XST_mPV(i++, b->name);
+			if (b->account == gc->account && b->present) XST_mPV(i++, b->name);
 			mem = mem->next;
 		}
 		list = g_slist_next(list);
@@ -694,8 +694,8 @@
 	if (!command) XSRETURN(0);
 	if        (!strncasecmp(command, "signon", 6)) {
 		int index = SvIV(ST(1));
-		if (g_slist_nth_data(aim_users, index))
-		serv_login(g_slist_nth_data(aim_users, index));
+		if (g_slist_nth_data(gaim_accounts, index))
+		serv_login(g_slist_nth_data(gaim_accounts, index));
 	} else if (!strncasecmp(command, "signoff", 7)) {
 		struct gaim_connection *gc = (struct gaim_connection *)SvIV(ST(1));
 		if (g_slist_find(connections, gc)) signoff(gc);
@@ -744,7 +744,7 @@
 
 	gc = (struct gaim_connection *)SvIV(ST(0));
 	if (g_slist_find(connections, gc))
-		buddy = find_buddy(gc->user, SvPV(ST(1), junk));
+		buddy = find_buddy(gc->account, SvPV(ST(1), junk));
 
 	if (!buddy)
 		XSRETURN(0);
@@ -835,9 +835,9 @@
 	c = gaim_find_conversation(nick);
 
 	if (!c)
-		c = gaim_conversation_new(GAIM_CONV_IM, gc->user, nick);
+		c = gaim_conversation_new(GAIM_CONV_IM, gc->account, nick);
 	else
-		gaim_conversation_set_user(c, gc->user);
+		gaim_conversation_set_account(c, gc->account);
 
 	gaim_conversation_write(c, NULL, what, -1,
 							(WFLAG_SEND | (isauto ? WFLAG_AUTO : 0)),
--- a/src/protocols/gg/gg.c	Fri Jan 31 06:51:49 2003 +0000
+++ b/src/protocols/gg/gg.c	Fri Jan 31 13:03:47 2003 +0000
@@ -1,6 +1,6 @@
 /*
  * gaim - Gadu-Gadu Protocol Plugin
- * $Id: gg.c 4727 2003-01-28 21:42:44Z seanegan $
+ * $Id: gg.c 4766 2003-01-31 13:03:47Z faceprint $
  *
  * Copyright (C) 2001 Arkadiusz Mi¶kiewicz <misiek@pld.ORG.PL>
  * 
@@ -130,7 +130,7 @@
 
 static gboolean allowed_uin(struct gaim_connection *gc, char *uin)
 {
-	switch (gc->user->permdeny) {
+	switch (gc->account->permdeny) {
 	case 1:
 		/* permit all, deny none */
 		return TRUE;
@@ -141,13 +141,13 @@
 		break;
 	case 3:
 		/* permit some. */
-		if (g_slist_find_custom(gc->user->permit, uin, args_compare))
+		if (g_slist_find_custom(gc->account->permit, uin, args_compare))
 			return TRUE;
 		return FALSE;
 		break;
 	case 4:
 		/* deny some. */
-		if (g_slist_find_custom(gc->user->deny, uin, args_compare))
+		if (g_slist_find_custom(gc->account->deny, uin, args_compare))
 			return FALSE;
 		return TRUE;
 		break;
@@ -278,7 +278,7 @@
 {
 	GList *m = NULL;
 	struct proto_buddy_menu *pbm;
-	struct buddy *b = find_buddy(gc->user, who);
+	struct buddy *b = find_buddy(gc->account, who);
 	static char buf[AGG_BUF_LEN];
 
 	if (!b) {
@@ -532,9 +532,9 @@
 	}
 }
 
-static void agg_login(struct aim_user *user)
+static void agg_login(struct gaim_account *account)
 {
-	struct gaim_connection *gc = new_gaim_conn(user);
+	struct gaim_connection *gc = new_gaim_conn(account);
 	struct agg_data *gd = gc->proto_data = g_new0(struct agg_data, 1);
 	char buf[80];
 
@@ -542,13 +542,13 @@
 
 	gd->sess = g_new0(struct gg_session, 1);
 
-	if (user->proto_opt[USEROPT_NICK][0])
+	if (account->proto_opt[USEROPT_NICK][0])
 		g_snprintf(gc->displayname, sizeof(gc->displayname), "%s",
-			   user->proto_opt[USEROPT_NICK]);
+			   account->proto_opt[USEROPT_NICK]);
 
 	set_login_progress(gc, 1, _("Looking up GG server"));
 
-	if (invalid_uin(user->username)) {
+	if (invalid_uin(account->username)) {
 		hide_login_progress(gc, _("Invalid Gadu-Gadu UIN specified"));
 		signoff(gc);
 		return;
@@ -567,8 +567,8 @@
 	   gg_login() sucks for me, so I'm using proxy_connect()
 	 */
 
-	gd->sess->uin = (uin_t) strtol(user->username, (char **)NULL, 10);
-	gd->sess->password = g_strdup(user->password);
+	gd->sess->uin = (uin_t) strtol(account->username, (char **)NULL, 10);
+	gd->sess->password = g_strdup(account->password);
 	gd->sess->state = GG_STATE_CONNECTING;
 	gd->sess->check = GG_CHECK_WRITE;
 	gd->sess->async = 1;
@@ -793,7 +793,7 @@
 		}
 
 		debug_printf("import_buddies_server_results: uin: %s\n", name);
-		if (!find_buddy(gc->user, name)) {
+		if (!find_buddy(gc->account, name)) {
 			/* Default group if none specified on server */
 			gchar *group = g_strdup("Gadu-Gadu");
 			if (strlen(data_tbl[5])) {
@@ -805,7 +805,7 @@
 				g_strfreev(group_tbl);
 			}
 			/* Add Buddy to our userlist */
-			add_buddy(gc->user, group, name, strlen(show) ? show : name);
+			add_buddy(gc->account, group, name, strlen(show) ? show : name);
 			gaim_blist_save();
 			g_free(group);
 		}
@@ -1017,7 +1017,7 @@
 		while (m) {
 			struct buddy *b = m->data;
 
-			if(b->user->gc == gc) {
+			if(b->account->gc == gc) {
 				gchar *newdata;
 				/* GG Number */
 				gchar *name = gg_urlencode(b->name);
--- a/src/protocols/icq/gaim_icq.c	Fri Jan 31 06:51:49 2003 +0000
+++ b/src/protocols/icq/gaim_icq.c	Fri Jan 31 13:03:47 2003 +0000
@@ -274,7 +274,7 @@
 		icq_SendAuthMsg(iq->link, iq->uin);
 
 		g_snprintf(uin, sizeof(uin), "%ld", iq->uin);
-		if (find_buddy(iq->gc->user, uin))
+		if (find_buddy(iq->gc->account, uin))
 			return;
 
 		iqnew = g_memdup(iq, sizeof(struct icq_auth));
@@ -304,8 +304,8 @@
 	do_ask_dialog(msg, NULL, iq, _("Authorize"), icq_acc_auth, _("Deny"), icq_den_auth, my_protocol->plug ? my_protocol->plug->handle : NULL, FALSE);
 }
 
-static void icq_login(struct aim_user *user) {
-	struct gaim_connection *gc = new_gaim_conn(user);
+static void icq_login(struct gaim_account *account) {
+	struct gaim_connection *gc = new_gaim_conn(account);
 	struct icq_data *id = gc->proto_data = g_new0(struct icq_data, 1);
 	icq_Link *link;
 	char ps[9];
@@ -314,11 +314,11 @@
 
 	icq_LogLevel = ICQ_LOG_MESSAGE;
 
-	g_snprintf(ps, sizeof(ps), "%s", user->password);
-	link = id->link = icq_ICQLINKNew(atol(user->username), ps,
-			  user->proto_opt[USEROPT_NICK][0] ? user->proto_opt[USEROPT_NICK] : "gaim user",
+	g_snprintf(ps, sizeof(ps), "%s", account->password);
+	link = id->link = icq_ICQLINKNew(atol(account->username), ps,
+			  account->proto_opt[USEROPT_NICK][0] ? account->proto_opt[USEROPT_NICK] : "gaim user",
 			  TRUE);
-	g_snprintf(gc->displayname, sizeof(gc->displayname), "%s", user->proto_opt[USEROPT_NICK]);
+	g_snprintf(gc->displayname, sizeof(gc->displayname), "%s", account->proto_opt[USEROPT_NICK]);
 
 	link->icq_Logged = icq_online;
 	link->icq_Disconnected = icq_logged_off;
--- a/src/protocols/irc/irc.c	Fri Jan 31 06:51:49 2003 +0000
+++ b/src/protocols/irc/irc.c	Fri Jan 31 13:03:47 2003 +0000
@@ -179,7 +179,7 @@
 	int inleft = strlen(string), outleft = maxlen;
 	GIConv conv;
 	
-	conv = g_iconv_open(gc->user->proto_opt[USEROPT_CHARSET], "UTF-8");
+	conv = g_iconv_open(gc->account->proto_opt[USEROPT_CHARSET], "UTF-8");
 	if (g_iconv(conv, &inptr, &inleft, &outptr, &outleft) == -1) {
 		debug_printf("IRC charset conversion error\n");
 		debug_printf("Sending as UTF-8 (this is a hack!)\n");
@@ -200,7 +200,7 @@
 	GError *err = NULL;
 	
 	utf8 = g_convert(string, strlen(string), "UTF-8",
-			 gc->user->proto_opt[USEROPT_CHARSET], NULL, NULL, &err);
+			 gc->account->proto_opt[USEROPT_CHARSET], NULL, NULL, &err);
 	if (err) {
 		debug_printf("IRC recv conversion error: %s\n", err->message);
 		utf8 = g_strdup(_("(There was an error converting this message.  Check the 'Encoding' option in the Account Editor)"));
@@ -505,7 +505,7 @@
 	else	{
 		g_snprintf (buf, sizeof buf, _("DCC Chat with %s closed"),
 			    chat->nick);
-		convo = gaim_conversation_new(GAIM_CONV_IM, chat->gc->user,
+		convo = gaim_conversation_new(GAIM_CONV_IM, chat->gc->account,
 									  chat->nick);
 		gaim_conversation_write(convo, NULL, buf, -1, WFLAG_SYSTEM,
 								time(NULL));
@@ -568,7 +568,7 @@
 	struct gaim_conversation *convo;
 	char buf[IRC_BUF_LEN];
 
-	convo = gaim_conversation_new(GAIM_CONV_IM, chat->gc->user, chat->nick);
+	convo = gaim_conversation_new(GAIM_CONV_IM, chat->gc->account, chat->nick);
 
 	chat->fd = source;
 	g_snprintf (buf, sizeof buf,
@@ -609,7 +609,7 @@
 		GSList *m = ((struct group *)gr->data)->members;
 		while (m) {
 			struct buddy *b = m->data;
-			if(b->user->gc == gc) {
+			if(b->account->gc == gc) {
 				char *tmp = g_strdup(b->name);
 				char *x, *l;
 				g_strdown(tmp);
@@ -649,7 +649,7 @@
 		GSList *m = g->members;
 		while (m) {
 			struct buddy *b = m->data;
-			if(b->user->gc == gc) {
+			if(b->account->gc == gc) {
 				if (n + strlen(b->name) + 2 > sizeof(buf)) {
 					g_snprintf(buf + n, sizeof(buf) - n, "\r\n");
 					irc_write(id->fd, buf, n);
@@ -1262,7 +1262,7 @@
 		do_error_dialog(out, _("IRC CTCP info"), GAIM_INFO);
 	}
 	if (!g_strncasecmp(msg, "USERINFO", 8)) {
-		g_snprintf(buf, sizeof(buf), "\001USERINFO Alias: %s\001", gc->user->alias);
+		g_snprintf(buf, sizeof(buf), "\001USERINFO Alias: %s\001", gc->account->alias);
 		irc_send_notice (gc, nick, buf);
 		g_snprintf(out, sizeof(out), ">> CTCP USERINFO requested from %s", nick);
 		do_error_dialog(out, _("IRC CTCP info"), GAIM_INFO);
@@ -1393,7 +1393,7 @@
 			if (!c)
 				return FALSE;
 			gc->buddy_chats = g_slist_remove(gc->buddy_chats, c);
-			gaim_conversation_set_user(c, NULL);
+			gaim_conversation_set_account(c, NULL);
 			g_snprintf(outbuf, sizeof(outbuf), _("You have been kicked from %s: %s"),
 				   word[3], *word_eol[5] == ':' ? word_eol[5] + 1 : word_eol[5]);
 			do_error_dialog(outbuf, _("IRC Error"), GAIM_ERROR);
@@ -1673,12 +1673,12 @@
 	idata->fd = source;
 	
 	/* Try a quick conversion to see if the specified encoding is OK */
-	test = g_convert("test", strlen("test"), gc->user->proto_opt[USEROPT_CHARSET],
+	test = g_convert("test", strlen("test"), gc->account->proto_opt[USEROPT_CHARSET],
 			 "UTF-8", NULL, NULL, &err);
 	if (err) {
 		debug_printf("Couldn't initialize %s for IRC charset conversion, using ISO-8859-1\n",
-			     gc->user->proto_opt[USEROPT_CHARSET]);
-		strcpy(gc->user->proto_opt[USEROPT_CHARSET], "ISO-8859-1");
+			     gc->account->proto_opt[USEROPT_CHARSET]);
+		strcpy(gc->account->proto_opt[USEROPT_CHARSET], "ISO-8859-1");
 	}
 	
 	g_free(test);
@@ -1688,8 +1688,8 @@
 	if (!*hostname)
 		g_snprintf(hostname, sizeof(hostname), "localhost");
 
-	if (*gc->user->password) {
-		g_snprintf(buf, sizeof(buf), "PASS %s\r\n", gc->user->password);
+	if (*gc->account->password) {
+		g_snprintf(buf, sizeof(buf), "PASS %s\r\n", gc->account->password);
 
 		if (irc_write(idata->fd, buf, strlen(buf)) < 0) {
 			hide_login_progress(gc, "Write error");
@@ -1700,8 +1700,8 @@
 
 	g_snprintf(buf, sizeof(buf), "USER %s %s %s :%s\r\n",
 		   g_get_user_name(), hostname, 
-		   gc->user->proto_opt[USEROPT_SERV], 
-		   gc->user->alias && strlen(gc->user->alias) ? gc->user->alias : "gaim");
+		   gc->account->proto_opt[USEROPT_SERV], 
+		   gc->account->alias && strlen(gc->account->alias) ? gc->account->alias : "gaim");
 	if (irc_write(idata->fd, buf, strlen(buf)) < 0) {
 		hide_login_progress(gc, "Write error");
 		signoff(gc);
@@ -1719,12 +1719,12 @@
 }
 
 static void 
-irc_login(struct aim_user *user)
+irc_login(struct gaim_account *account)
 {
 	char buf[IRC_BUF_LEN];
 	int rc;
 
-	struct gaim_connection *gc = new_gaim_conn(user);
+	struct gaim_connection *gc = new_gaim_conn(account);
 	struct irc_data *idata = gc->proto_data = g_new0(struct irc_data, 1);
 
 	g_snprintf(gc->displayname, sizeof(gc->displayname), "%s", gc->username);
@@ -1738,10 +1738,11 @@
 	idata->str = g_string_new("");
 	idata->fd = -1;
 
-	rc = proxy_connect(user->proto_opt[USEROPT_SERV],
-				  user->proto_opt[USEROPT_PORT][0] ? atoi(user->proto_opt[USEROPT_PORT]) :
-								     6667, irc_login_callback, gc);
-	if (!user->gc || (rc != 0)) {
+	rc = proxy_connect(account->proto_opt[USEROPT_SERV],
+				  account->proto_opt[USEROPT_PORT][0] ?
+				  atoi(account->proto_opt[USEROPT_PORT]) : 6667,
+				  irc_login_callback, gc);
+	if (!account->gc || (rc != 0)) {
 		hide_login_progress(gc, "Unable to create socket");
 		signoff(gc);
 		return;
@@ -2081,7 +2082,7 @@
 		irc_write(id->fd, buf, strlen(buf));
 		if (c) {
 			gc->buddy_chats = g_slist_remove(gc->buddy_chats, c);
-			gaim_conversation_set_user(c, NULL);
+			gaim_conversation_set_account(c, NULL);
 			g_snprintf(buf, sizeof(buf), _("You have left %s"), chan);
 			do_error_dialog(buf, _("IRC Part"), GAIM_INFO);
 		}
@@ -2378,7 +2379,7 @@
 	chat->fd = accept (chat->fd, (struct sockaddr *) (&addr), &addrlen);
 	if (!chat->fd) {
 		dcc_chat_cancel (chat);
-		convo = gaim_conversation_new(GAIM_CONV_IM, chat->gc->user,
+		convo = gaim_conversation_new(GAIM_CONV_IM, chat->gc->account,
 									  chat->nick);
 		g_snprintf (buf, sizeof buf, _("DCC Chat with %s closed"),
 			    chat->nick);
@@ -2388,7 +2389,7 @@
 	}
 	chat->inpa =
 		gaim_input_add (chat->fd, GAIM_INPUT_READ, dcc_chat_in, chat);
-	convo = gaim_conversation_new(GAIM_CONV_IM, chat->gc->user, chat->nick);
+	convo = gaim_conversation_new(GAIM_CONV_IM, chat->gc->account, chat->nick);
 	g_snprintf (buf, sizeof buf, _("DCC Chat with %s established"),
 				chat->nick);
 	gaim_conversation_write(convo, NULL, buf, -1, WFLAG_SYSTEM, time(NULL));
@@ -2599,7 +2600,7 @@
 	char buf[IRC_BUF_LEN], *intl;
 	struct irc_data *id = gc->proto_data;
 	/* 512 - 12 (for PRIVMSG" "" :""\r\n") - namelen - nicklen - 68 */
-	int nicklen = (gc->user->alias && strlen(gc->user->alias)) ? strlen(gc->user->alias) : 4;
+	int nicklen = (gc->account->alias && strlen(gc->account->alias)) ? strlen(gc->account->alias) : 4;
 	int max = 444 - strlen(who) - strlen(g_get_user_name()) - nicklen;
 	
 	int len;
--- a/src/protocols/jabber/jabber.c	Fri Jan 31 06:51:49 2003 +0000
+++ b/src/protocols/jabber/jabber.c	Fri Jan 31 13:03:47 2003 +0000
@@ -801,16 +801,16 @@
 
 static void gjab_start(gjconn gjc)
 {
-	struct aim_user *user;
+	struct gaim_account *account;
 	int port, rc;
 	char *server;
 
 	if (!gjc || gjc->state != JCONN_STATE_OFF)
 		return;
 
-	user = GJ_GC(gjc)->user;
-	port = user->proto_opt[USEROPT_PORT][0] ? atoi(user->proto_opt[USEROPT_PORT]) : DEFAULT_PORT;
-	server = user->proto_opt[USEROPT_CONN_SERVER][0] ? user->proto_opt[USEROPT_CONN_SERVER] : gjc->user->server;
+	account = GJ_GC(gjc)->account;
+	port = account->proto_opt[USEROPT_PORT][0] ? atoi(account->proto_opt[USEROPT_PORT]) : DEFAULT_PORT;
+	server = account->proto_opt[USEROPT_CONN_SERVER][0] ? account->proto_opt[USEROPT_CONN_SERVER] : gjc->user->server;
 
 
 	gjc->parser = XML_ParserCreate(NULL);
@@ -819,7 +819,7 @@
 	XML_SetCharacterDataHandler(gjc->parser, charData);
 
 	rc = proxy_connect(server, port, gjab_connected, GJ_GC(gjc));
-	if (!user->gc || (rc != 0)) {
+	if (!account->gc || (rc != 0)) {
 		STATE_EVT(JCONN_STATE_OFF)
 		return;
 	}
@@ -964,7 +964,7 @@
 {
 	struct buddy *b;
 
-	if ((b = find_buddy(gc->user, buddyname)) != NULL) {
+	if ((b = find_buddy(gc->account, buddyname)) != NULL) {
 		debug_printf("removing buddy [1]: %s\n", buddyname);
 		remove_buddy(b);
 		gaim_blist_save();
@@ -1519,7 +1519,7 @@
 			jc->b = cnv = serv_got_joined_chat(GJ_GC(gjc), i++, gjid->user);
 			jc->id = gaim_chat_get_id(GAIM_CHAT(jc->b));
 			jc->state = JCS_ACTIVE;
-		} else if ((b = find_buddy(GJ_GC(gjc)->user, buddy)) == NULL) {
+		} else if ((b = find_buddy(GJ_GC(gjc)->account, buddy)) == NULL) {
 			g_free(buddy);
 			gaim_jid_free(gjid);
 			return;
@@ -1624,7 +1624,7 @@
 		 * If we don't already have the buddy on *our* buddylist,
 		 * ask if we want him or her added.
 		 */
-		if(find_buddy(jap->gc->user, jap->user) == NULL) {
+		if(find_buddy(jap->gc->account, jap->user) == NULL) {
 			show_got_added(jap->gc, NULL, jap->user, NULL, NULL);
 		}
 	}
@@ -1771,10 +1771,11 @@
 	 * Add or remove a buddy?  Change buddy's alias or group?
 	 */
 	if (BUD_SUB_TO_PEND(sub, ask) || BUD_SUBD_TO(sub, ask)) {
-		if ((b = find_buddy(GJ_GC(gjc)->user, buddyname)) == NULL) {
+		if ((b = find_buddy(GJ_GC(gjc)->account, buddyname)) == NULL) {
 			debug_printf("adding buddy [4]: %s\n", buddyname);
-			b = add_buddy(GJ_GC(gjc)->user, groupname ? groupname : _("Buddies"), buddyname,
-				name ? name : buddyname);
+			b = add_buddy(GJ_GC(gjc)->account,
+					groupname ? groupname : _("Buddies"), buddyname,
+					name ? name : buddyname);
 			gaim_blist_save();
 		} else {
 			struct group *c_grp = find_group_by_buddy(b);
@@ -1792,7 +1793,7 @@
 				 * seems rude, but it seems to be the only way...
 				 */
 				remove_buddy(b);
-				b = add_buddy(GJ_GC(gjc)->user, groupname, buddyname,
+				b = add_buddy(GJ_GC(gjc)->account, groupname, buddyname,
 					name ? name : buddyname);
 				gaim_blist_save();
 				if(present) {
@@ -2319,18 +2320,18 @@
 	return;
 }
 
-static void jabber_login(struct aim_user *user)
+static void jabber_login(struct gaim_account *account)
 {
-	struct gaim_connection *gc = new_gaim_conn(user);
+	struct gaim_connection *gc = new_gaim_conn(account);
 	struct jabber_data *jd = gc->proto_data = g_new0(struct jabber_data, 1);
-	char *loginname = create_valid_jid(user->username, DEFAULT_SERVER, "Gaim");
+	char *loginname = create_valid_jid(account->username, DEFAULT_SERVER, "Gaim");
 
 	jd->buddies = g_hash_table_new(g_str_hash, g_str_equal);
 	jd->chats = NULL;	/* we have no chats yet */
 
 	set_login_progress(gc, 1, _("Connecting"));
 
-	if (!(jd->gjc = gjab_new(loginname, user->password, gc))) {
+	if (!(jd->gjc = gjab_new(loginname, account->password, gc))) {
 		g_free(loginname);
 		debug_printf("jabber: unable to connect (jab_new failed)\n");
 		hide_login_progress(gc, _("Unable to connect"));
@@ -2534,7 +2535,7 @@
 		y = xmlnode_insert_tag(xmlnode_get_tag(x, "query"), "item");
 		xmlnode_put_attrib(y, "jid", realwho);
 
-		buddy = find_buddy(gc->user, realwho);
+		buddy = find_buddy(gc->account, realwho);
 
 		/*
 		 * See if there's an explict (new?) alias for the buddy or we can pull
@@ -2937,7 +2938,7 @@
 		jc->gjid = gjid;
 		jc->gc = gc;
 		((struct jabber_data *)gc->proto_data)->chats = g_slist_append(jcs, jc);
-		add_buddy(gc->user, _("Chats"), realwho, realwho);
+		add_buddy(gc->account, _("Chats"), realwho, realwho);
 	}
 
 	jc->state = JCS_PENDING;
@@ -3242,7 +3243,7 @@
 static GList *jabber_buddy_menu(struct gaim_connection *gc, char *who) {
 	GList *m = NULL;
 	struct proto_buddy_menu *pbm;
-	struct buddy *b = find_buddy(gc->user, who);
+	struct buddy *b = find_buddy(gc->account, who);
 
 	if(b->uc == UC_ERROR)
 	{
@@ -3876,8 +3877,8 @@
 	MultiEntryDlg *b = multi_entry_dialog_new();
 	char *cdata;
 	xmlnode x_vc_data = NULL;
-	struct aim_user *tmp = gc->user;
-	b->user = tmp;
+	struct gaim_account *tmp = gc->account;
+	b->account = tmp;
 
 
 	/*
@@ -4127,11 +4128,11 @@
 /*
  * Like jabber_login(), only different
  */
-void jabber_register_user(struct aim_user *au)
+void jabber_register_user(struct gaim_account *account)
 {
-	struct gaim_connection *gc = new_gaim_conn(au);
+	struct gaim_connection *gc = new_gaim_conn(account);
 	struct jabber_data *jd = gc->proto_data = g_new0(struct jabber_data, 1);
-	char *loginname = create_valid_jid(au->username, DEFAULT_SERVER, "Gaim");
+	char *loginname = create_valid_jid(account->username, DEFAULT_SERVER, "Gaim");
 
 	/*
 	 * These do nothing during registration
@@ -4139,7 +4140,7 @@
 	jd->buddies = NULL;
 	jd->chats = NULL;
 
-	if ((jd->gjc = gjab_new(loginname, au->password, gc)) == NULL) {
+	if ((jd->gjc = gjab_new(loginname, account->password, gc)) == NULL) {
 		g_free(loginname);
 		debug_printf("jabber: unable to connect (jab_new failed)\n");
 		hide_login_progress(gc, _("Unable to connect"));
--- a/src/protocols/msn/msn.c	Fri Jan 31 06:51:49 2003 +0000
+++ b/src/protocols/msn/msn.c	Fri Jan 31 13:03:47 2003 +0000
@@ -487,7 +487,7 @@
 			struct gaim_conversation *cnv;
 			struct buddy *b;
 
-			if ((b = find_buddy(gc->user, user)) != NULL)
+			if ((b = find_buddy(gc->account, user)) != NULL)
 				username = get_buddy_alias(b);
 			else
 				username = user;
@@ -1102,7 +1102,7 @@
 			signoff(map->gc);
 			return;
 		}
-		gaim_privacy_permit_add(map->gc->user, map->user);
+		gaim_privacy_permit_add(map->gc->account, map->user);
 		build_allow_list(); /* er. right. we'll need to have a thing for this in CUI too */
 		show_got_added(map->gc, NULL, map->user, map->friend, NULL);
 	}
@@ -1124,7 +1124,7 @@
 			signoff(map->gc);
 			return;
 		}
-		gaim_privacy_deny_add(map->gc->user, map->user);
+		gaim_privacy_deny_add(map->gc->account, map->user);
 		build_block_list();
 	}
 
@@ -1141,7 +1141,7 @@
 	if (!g_strncasecmp(buf, "ADD", 3)) {
 		char *list, *user, *friend, *tmp = buf;
 		struct msn_add_permit *ap;
-		GSList *perm = gc->user->permit;
+		GSList *perm = gc->account->permit;
 		char msg[MSN_BUF_LEN];
 
 		GET_NEXT(tmp);
@@ -1186,14 +1186,14 @@
 			 * from users who are not in BL will be delivered
 			 *
 			 * In other words, deny some */
-			gc->user->permdeny = DENY_SOME;
+			gc->account->permdeny = DENY_SOME;
 		} else {
 			/* If the current
 			 * setting is BL, only messages from people who are in the AL will be
 			 * delivered.
 			 *
 			 * In other words, permit some */
-			gc->user->permdeny = PERMIT_SOME;
+			gc->account->permdeny = PERMIT_SOME;
 		}
 	} else if (!g_strncasecmp(buf, "BPR", 3)) {
 	} else if (!g_strncasecmp(buf, "CHG", 3)) {
@@ -1266,8 +1266,8 @@
 	} else if (!g_strncasecmp(buf, "LST", 3)) {
 		char *which, *who, *friend, *tmp = buf;
 		struct msn_add_permit *ap; /* for any as yet undealt with buddies who've added you to their buddy list when you were off-line.  How dare they! */
-		GSList *perm = gc->user->permit; /* current permit list */
-		GSList *denyl = gc->user->deny;
+		GSList *perm = gc->account->permit; /* current permit list */
+		GSList *denyl = gc->account->deny;
 		char msg[MSN_BUF_LEN];
 		int new = 1;
 		int pos, tot;
@@ -1293,14 +1293,14 @@
 			b->friend = g_strdup(friend);
 			md->fl = g_slist_append(md->fl, b);
 		} else if (!g_strcasecmp(which, "AL") && pos) {
-			if (g_slist_find_custom(gc->user->deny, who,
+			if (g_slist_find_custom(gc->account->deny, who,
 							(GCompareFunc)strcmp)) {
 				debug_printf("moving from deny to permit: %s", who);
-				gaim_privacy_deny_remove(gc->user, who);
+				gaim_privacy_deny_remove(gc->account, who);
 			}
-			gaim_privacy_permit_add(gc->user, who);
+			gaim_privacy_permit_add(gc->account, who);
 		} else if (!g_strcasecmp(which, "BL") && pos) {
-			gaim_privacy_deny_add(gc->user, who);
+			gaim_privacy_deny_add(gc->account, who);
 		} else if (!g_strcasecmp(which, "RL")) {
 		    if (pos) {
 			while(perm) {
@@ -1338,15 +1338,15 @@
 			account_online(gc);
 			serv_finish_login(gc);
 
-			md->permit = g_slist_copy(gc->user->permit);
-			md->deny = g_slist_copy(gc->user->deny);
+			md->permit = g_slist_copy(gc->account->permit);
+			md->deny = g_slist_copy(gc->account->deny);
 
 			while (md->fl) {
 				struct msn_buddy *mb = md->fl->data;
-				struct buddy *b = find_buddy(gc->user, mb->user);
+				struct buddy *b = find_buddy(gc->account, mb->user);
 				md->fl = g_slist_remove(md->fl, mb);
 				if(!b)
-					b = add_buddy(gc->user, _("Buddies"), mb->user, NULL);
+					b = add_buddy(gc->account, _("Buddies"), mb->user, NULL);
 				serv_got_alias(gc, mb->user, mb->friend);
 				g_free(mb->user);
 				g_free(mb->friend);
@@ -1993,18 +1993,20 @@
 	set_login_progress(gc, 2,_("Synching with server"));
 }
 
-static void msn_login(struct aim_user *user)
+static void msn_login(struct gaim_account *account)
 {
-	struct gaim_connection *gc = new_gaim_conn(user);
+	struct gaim_connection *gc = new_gaim_conn(account);
 	gc->proto_data = g_new0(struct msn_data, 1);
 
 	set_login_progress(gc, 1, _("Connecting"));
 
 	g_snprintf(gc->username, sizeof(gc->username), "%s", msn_normalize(gc->username));
 
-	if (proxy_connect(user->proto_opt[USEROPT_MSNSERVER][0] ? user->proto_opt[USEROPT_MSNSERVER] : MSN_SERVER, 
-			       user->proto_opt[USEROPT_MSNPORT][0] ? atoi(user->proto_opt[USEROPT_MSNPORT]) : MSN_PORT,
-			       msn_login_connect, gc) != 0) {
+	if (proxy_connect(account->proto_opt[USEROPT_MSNSERVER][0] ?
+				account->proto_opt[USEROPT_MSNSERVER] : MSN_SERVER,
+				account->proto_opt[USEROPT_MSNPORT][0] ?
+				atoi(account->proto_opt[USEROPT_MSNPORT]) : MSN_PORT,
+				msn_login_connect, gc) != 0) {
 		hide_login_progress(gc, _("Unable to connect"));
 		signoff(gc);
 	}
@@ -2473,7 +2475,7 @@
 {
 	GList *m = NULL;
 	struct proto_buddy_menu *pbm;
-	struct buddy *b = find_buddy(gc->user, who);
+	struct buddy *b = find_buddy(gc->account, who);
 	static char buf[MSN_BUF_LEN];
 
 	pbm = g_new0(struct proto_buddy_menu, 1);
@@ -2619,7 +2621,7 @@
 	char buf[MSN_BUF_LEN];
 	GSList *s, *t = NULL;
 
-	if (gc->user->permdeny == PERMIT_ALL || gc->user->permdeny == DENY_SOME)
+	if (gc->account->permdeny == PERMIT_ALL || gc->account->permdeny == DENY_SOME)
 		g_snprintf(buf, sizeof(buf), "BLP %u AL\r\n", ++md->trId);
 	else
 		g_snprintf(buf, sizeof(buf), "BLP %u BL\r\n", ++md->trId);
@@ -2633,11 +2635,11 @@
 	/* this is safe because we'll always come here after we've gotten the list off the server,
 	 * and data is never removed. So if the lengths are equal we don't know about anyone locally
 	 * and so there's no sense in going through them all. */
-	if (g_slist_length(gc->user->permit) == g_slist_length(md->permit)) {
+	if (g_slist_length(gc->account->permit) == g_slist_length(md->permit)) {
 		g_slist_free(md->permit);
 		md->permit = NULL;
 	}
-	if (g_slist_length(gc->user->deny) == g_slist_length(md->deny)) {
+	if (g_slist_length(gc->account->deny) == g_slist_length(md->deny)) {
 		g_slist_free(md->deny);
 		md->deny = NULL;
 	}
@@ -2645,7 +2647,7 @@
 		return;
 
 	if (md->permit) {
-		s = g_slist_nth(gc->user->permit, g_slist_length(md->permit));
+		s = g_slist_nth(gc->account->permit, g_slist_length(md->permit));
 		while (s) {
 			char *who = s->data;
 			s = s->next;
@@ -2665,7 +2667,7 @@
 			}
 		}
 		while (t) {
-			gaim_privacy_permit_remove(gc->user, t->data);
+			gaim_privacy_permit_remove(gc->account, t->data);
 			t = t->next;
 		}
 		if (t)
@@ -2676,7 +2678,7 @@
 	}
 	
 	if (md->deny) {
-		s = g_slist_nth(gc->user->deny, g_slist_length(md->deny));
+		s = g_slist_nth(gc->account->deny, g_slist_length(md->deny));
 		while (s) {
 			char *who = s->data;
 			s = s->next;
@@ -2696,7 +2698,7 @@
 			}
 		}
 		while (t) {
-			gaim_privacy_deny_remove(gc->user, t->data);
+			gaim_privacy_deny_remove(gc->account, t->data);
 			t = t->next;
 		}
 		if (t)
@@ -2717,13 +2719,13 @@
 			     "Perhaps you meant %s@hotmail.com.  No changes were made to your "
 			     "allow list."), who);
 		do_error_dialog(_("Invalid MSN screenname"), buf, GAIM_ERROR);
-		gaim_privacy_permit_remove(gc->user, who);
+		gaim_privacy_permit_remove(gc->account, who);
 		return;
 	}
 
-	if (g_slist_find_custom(gc->user->deny, who, (GCompareFunc)strcmp)) {
+	if (g_slist_find_custom(gc->account->deny, who, (GCompareFunc)strcmp)) {
 		debug_printf("MSN: Moving %s from BL to AL\n", who);
-		gaim_privacy_deny_remove(gc->user, who);
+		gaim_privacy_deny_remove(gc->account, who);
 		g_snprintf(buf, sizeof(buf), "REM %u BL %s\r\n", ++md->trId, who);
 			if (msn_write(md->fd, buf, strlen(buf)) < 0) {
 				hide_login_progress(gc, _("Write error"));
@@ -2751,7 +2753,7 @@
 		return;
 	}
 
-	gaim_privacy_deny_add(gc->user, who);
+	gaim_privacy_deny_add(gc->account, who);
 	g_snprintf(buf, sizeof(buf), "ADD %u BL %s %s\r\n", ++md->trId, who, who);
 	if (msn_write(md->fd, buf, strlen(buf)) < 0) {
 		hide_login_progress(gc, _("Write error"));
@@ -2771,13 +2773,13 @@
 			     "Perhaps you meant %s@hotmail.com.  No changes were made to your "
 			     "block list."), who);
 		do_error_dialog(_("Invalid MSN screenname"), buf, GAIM_ERROR);
-		gaim_privacy_deny_remove(gc->user, who);
+		gaim_privacy_deny_remove(gc->account, who);
 		return;
 	}
 
-	if (g_slist_find_custom(gc->user->permit, who, (GCompareFunc)strcmp)) {
+	if (g_slist_find_custom(gc->account->permit, who, (GCompareFunc)strcmp)) {
 		debug_printf("MSN: Moving %s from AL to BL\n", who);
-		gaim_privacy_permit_remove(gc->user, who);
+		gaim_privacy_permit_remove(gc->account, who);
 		g_snprintf(buf, sizeof(buf), "REM %u AL %s\r\n", ++md->trId, who);
 		if (msn_write(md->fd, buf, strlen(buf)) < 0) {
 			hide_login_progress(gc, _("Write error"));
@@ -2807,7 +2809,7 @@
 		return;
 	}
 
-	gaim_privacy_permit_add(gc->user, who);
+	gaim_privacy_permit_add(gc->account, who);
 	g_snprintf(buf, sizeof(buf), "ADD %u AL %s %s\r\n", ++md->trId, who, who);
 	if (msn_write(md->fd, buf, strlen(buf)) < 0) {
 		hide_login_progress(gc, _("Write error"));
--- a/src/protocols/napster/napster.c	Fri Jan 31 06:51:49 2003 +0000
+++ b/src/protocols/napster/napster.c	Fri Jan 31 13:03:47 2003 +0000
@@ -437,14 +437,16 @@
 }
 
 
-static void nap_login(struct aim_user *user)
+static void nap_login(struct gaim_account *account)
 {
-	struct gaim_connection *gc = new_gaim_conn(user);
+	struct gaim_connection *gc = new_gaim_conn(account);
 	gc->proto_data = g_new0(struct nap_data, 1);
 
-	if (proxy_connect(user->proto_opt[USEROPT_NAPSERVER][0] ? user->proto_opt[USEROPT_NAPSERVER] : NAP_SERVER,
-			       user->proto_opt[USEROPT_NAPPORT][0] ? atoi(user->proto_opt[USEROPT_NAPPORT]) : NAP_PORT,
-			       nap_login_connect, gc) != 0) {
+	if (proxy_connect(account->proto_opt[USEROPT_NAPSERVER][0] ?
+				account->proto_opt[USEROPT_NAPSERVER] : NAP_SERVER,
+				account->proto_opt[USEROPT_NAPPORT][0] ?
+				atoi(account->proto_opt[USEROPT_NAPPORT]) : NAP_PORT,
+				nap_login_connect, gc) != 0) {
 		hide_login_progress(gc, "Unable to connect");
 		signoff(gc);
 	}
--- a/src/protocols/oscar/oscar.c	Fri Jan 31 06:51:49 2003 +0000
+++ b/src/protocols/oscar/oscar.c	Fri Jan 31 13:03:47 2003 +0000
@@ -637,14 +637,14 @@
 	debug_printf("Password sent, waiting for response\n");
 }
 
-static void oscar_login(struct aim_user *user) {
+static void oscar_login(struct gaim_account *account) {
 	aim_session_t *sess;
 	aim_conn_t *conn;
 	char buf[256];
-	struct gaim_connection *gc = new_gaim_conn(user);
+	struct gaim_connection *gc = new_gaim_conn(account);
 	struct oscar_data *odata = gc->proto_data = g_new0(struct oscar_data, 1);
 
-	if (isdigit(*user->username)) {
+	if (isdigit(*account->username)) {
 		odata->icq = TRUE;
 		gc->password[8] = 0;
 	} else {
@@ -679,11 +679,11 @@
 	aim_conn_addhandler(sess, conn, 0x0017, 0x0003, gaim_parse_auth_resp, 0);
 
 	conn->status |= AIM_CONN_STATUS_INPROGRESS;
-	if (proxy_connect(user->proto_opt[USEROPT_AUTH][0] ?
-					user->proto_opt[USEROPT_AUTH] : FAIM_LOGIN_SERVER,
-				 user->proto_opt[USEROPT_AUTHPORT][0] ?
-					atoi(user->proto_opt[USEROPT_AUTHPORT]) : FAIM_LOGIN_PORT,
-				 oscar_login_connect, gc) < 0) {
+	if (proxy_connect(account->proto_opt[USEROPT_AUTH][0] ?
+				account->proto_opt[USEROPT_AUTH] : FAIM_LOGIN_SERVER,
+				account->proto_opt[USEROPT_AUTHPORT][0] ?
+				atoi(account->proto_opt[USEROPT_AUTHPORT]) : FAIM_LOGIN_PORT,
+				oscar_login_connect, gc) < 0) {
 		hide_login_progress(gc, _("Couldn't connect to host"));
 		signoff(gc);
 		return;
@@ -803,14 +803,14 @@
 	struct aim_authresp_info *info;
 	int i, rc;
 	char *host; int port;
-	struct aim_user *user;
+	struct gaim_account *account;
 	aim_conn_t *bosconn;
 
 	struct gaim_connection *gc = sess->aux_data;
         struct oscar_data *od = gc->proto_data;
-	user = gc->user;
-	port = user->proto_opt[USEROPT_AUTHPORT][0] ?
-		atoi(user->proto_opt[USEROPT_AUTHPORT]) : FAIM_LOGIN_PORT,
+	account = gc->account;
+	port = account->proto_opt[USEROPT_AUTHPORT][0] ?
+		atoi(account->proto_opt[USEROPT_AUTHPORT]) : FAIM_LOGIN_PORT,
 
 	va_start(ap, fr);
 	info = va_arg(ap, struct aim_authresp_info *);
@@ -1281,14 +1281,14 @@
 	va_list ap;
 	struct aim_redirect_data *redir;
 	struct gaim_connection *gc = sess->aux_data;
-	struct aim_user *user = gc->user;
+	struct gaim_account *account = gc->account;
 	aim_conn_t *tstconn;
 	int i;
 	char *host;
 	int port;
 
-	port = user->proto_opt[USEROPT_AUTHPORT][0] ?
-		atoi(user->proto_opt[USEROPT_AUTHPORT]) : FAIM_LOGIN_PORT,
+	port = account->proto_opt[USEROPT_AUTHPORT][0] ?
+		atoi(account->proto_opt[USEROPT_AUTHPORT]) : FAIM_LOGIN_PORT,
 
 	va_start(ap, fr);
 	redir = va_arg(ap, struct aim_redirect_data *);
@@ -1509,8 +1509,8 @@
 
 	dim->conn->fd = source;
 	aim_conn_completeconnect(od->sess, dim->conn);
-	if (!(cnv = gaim_find_conversation(dim->name))) 
-		cnv = gaim_conversation_new(GAIM_CONV_IM, dim->gc->user, dim->name);
+	if (!(cnv = gaim_find_conversation(dim->name)))
+		cnv = gaim_conversation_new(GAIM_CONV_IM, dim->gc->account, dim->name);
 
 	/* This is the best way to see if we're connected or not */
 	if (getpeername(source, &name, &name_len) == 0) {
@@ -1813,13 +1813,13 @@
 		ir->timestamp = args->iconstamp;
 	}
 
-	if (gc->user->iconfile[0] && (args->icbmflags & AIM_IMFLAGS_BUDDYREQ)) {
+	if (gc->account->iconfile[0] && (args->icbmflags & AIM_IMFLAGS_BUDDYREQ)) {
 		FILE *file;
 		struct stat st;
 
-		if (!stat(gc->user->iconfile, &st)) {
+		if (!stat(gc->account->iconfile, &st)) {
 			char *buf = g_malloc(st.st_size);
-			file = fopen(gc->user->iconfile, "rb");
+			file = fopen(gc->account->iconfile, "rb");
 			if (file) {
 				int len = fread(buf, 1, st.st_size, file);
 				debug_printf("Sending buddy icon to %s (%d bytes, %lu reported)\n",
@@ -2070,7 +2070,7 @@
 
 	if (g_slist_find(connections, gc)) {
 		struct oscar_data *od = gc->proto_data;
-		struct buddy *buddy = find_buddy(gc->user, data->name);
+		struct buddy *buddy = find_buddy(gc->account, data->name);
 		struct group *group = find_group_by_buddy(buddy);
 		if (buddy && group) {
 			debug_printf("ssi: adding buddy %s to group %s\n", buddy->name, group->name);
@@ -2101,7 +2101,7 @@
 	struct buddy *buddy;
 	gchar *dialog_msg, *nombre;
 
-	buddy = find_buddy(gc->user, name);
+	buddy = find_buddy(gc->account, name);
 	if (buddy && (get_buddy_alias_only(buddy)))
 		nombre = g_strdup_printf("%s (%s)", name, get_buddy_alias_only(buddy));
 	else
@@ -2127,7 +2127,7 @@
 		struct buddy *buddy;
 		gchar message;
 		message = 0;
-		buddy = find_buddy(gc->user, data->name);
+		buddy = find_buddy(gc->account, data->name);
 		aim_send_im_ch4(od->sess, data->name, AIM_ICQMSG_AUTHGRANTED, &message);
 		show_got_added(gc, NULL, data->name, (buddy ? get_buddy_alias_only(buddy) : NULL), NULL);
 #else
@@ -3274,13 +3274,13 @@
 	if (odata->icq)
 		aim_bos_setprofile(sess, fr->conn, NULL, NULL, 0, NULL, NULL, 0, caps_icq);
 	else {
-		flags = check_encoding (gc->user->user_info);
+		flags = check_encoding (gc->account->user_info);
 
 		if (flags == 0) {
-			aim_bos_setprofile(sess, fr->conn, "us-ascii", gc->user->user_info, 
-					   strlen(gc->user->user_info), NULL, NULL, 0, caps_aim);
+			aim_bos_setprofile(sess, fr->conn, "us-ascii", gc->account->user_info, 
+					   strlen(gc->account->user_info), NULL, NULL, 0, caps_aim);
 		} else {
-			unicode = g_convert (gc->user->user_info, strlen(gc->user->user_info),
+			unicode = g_convert (gc->account->user_info, strlen(gc->account->user_info),
 					     "UCS-2BE", "UTF-8", NULL, &unicode_len, NULL);
 			aim_bos_setprofile(sess, fr->conn, "unicode-2-0", unicode, unicode_len,
 					   NULL, NULL, 0, caps_aim);
@@ -3416,7 +3416,7 @@
 	 * parse-icq-status-message function knows if it is putting it's message in 
 	 * an info window because the name will _not_ be in od->evilhack.  For getting 
 	 * only the away message the contact's UIN is put in od->evilhack. */
-	if ((budlight = find_buddy(gc->user, who))) {
+	if ((budlight = find_buddy(gc->account, who))) {
 		if ((budlight->uc >> 16) & (AIM_ICQ_STATE_AWAY || AIM_ICQ_STATE_DND || AIM_ICQ_STATE_OUT || AIM_ICQ_STATE_BUSY || AIM_ICQ_STATE_CHAT)) {
 			if (budlight->caps & AIM_CAPS_ICQSERVERRELAY)
 				g_show_info_text(gc, who, 0, buf, NULL);
@@ -3713,8 +3713,8 @@
 			debug_printf("sending buddy icon request with message\n");
 		}
 
-		if (gc->user->iconfile[0] && !stat(gc->user->iconfile, &st)) {
-			FILE *file = fopen(gc->user->iconfile, "r");
+		if (gc->account->iconfile[0] && !stat(gc->account->iconfile, &st)) {
+			FILE *file = fopen(gc->account->iconfile, "r");
 			if (file) {
 				char *buf = g_malloc(st.st_size);
 				fread(buf, 1, st.st_size, file);
@@ -3783,7 +3783,7 @@
 static void oscar_get_away(struct gaim_connection *g, char *who) {
 	struct oscar_data *odata = (struct oscar_data *)g->proto_data;
 	if (odata->icq) {
-		struct buddy *budlight = find_buddy(g->user, who);
+		struct buddy *budlight = find_buddy(g->account, who);
 		if (budlight)
 			if ((budlight->uc & 0xffff0000) >> 16)
 				if (budlight->caps & AIM_CAPS_ICQSERVERRELAY)
@@ -3916,14 +3916,14 @@
 	}
 
 	if (strcmp(state, _("Invisible"))) {
-		if (aim_ssi_getpermdeny(od->sess->ssi.local) != gc->user->permdeny)
-			aim_ssi_setpermdeny(od->sess, od->conn, gc->user->permdeny,
+		if (aim_ssi_getpermdeny(od->sess->ssi.local) != gc->account->permdeny)
+			aim_ssi_setpermdeny(od->sess, od->conn, gc->account->permdeny,
 					0xffffffff);
-		gc->user->permdeny = 4;
+		gc->account->permdeny = 4;
 	} else {
 		if (aim_ssi_getpermdeny(od->sess->ssi.local) != 0x03)
 			aim_ssi_setpermdeny(od->sess, od->conn, 0x03, 0xffffffff);
-		gc->user->permdeny = 3;
+		gc->account->permdeny = 3;
 	}
 
 	if (!strcmp(state, _("Online")))
@@ -3988,7 +3988,7 @@
 	aim_add_buddy(od->sess, od->conn, name);
 #else
 	if ((od->sess->ssi.received_data) && !(aim_ssi_itemlist_exists(od->sess->ssi.local, name))) {
-		struct buddy *buddy = find_buddy(gc->user, name);
+		struct buddy *buddy = find_buddy(gc->account, name);
 		struct group *group = find_group_by_buddy(buddy);
 		if (buddy && group) {
 			debug_printf("ssi: adding buddy %s to group %s\n", name, group->name);
@@ -4015,7 +4015,7 @@
 #else
 	if (od->sess->ssi.received_data) {
 		while (buddies) {
-			struct buddy *buddy = find_buddy(gc->user, (const char *)buddies->data);
+			struct buddy *buddy = find_buddy(gc->account, (const char *)buddies->data);
 			struct group *group = find_group_by_buddy(buddy);
 			if (buddy && group) {
 				debug_printf("ssi: adding buddy %s to group %s\n", (const char *)buddies->data, group->name);
@@ -4150,7 +4150,7 @@
 					char *gname_utf8 = gaim_try_conv_to_utf8(gname);
 					char *alias = aim_ssi_getalias(sess->ssi.local, gname, curitem->name);
 					char *alias_utf8 = gaim_try_conv_to_utf8(alias);
-					struct buddy *buddy = find_buddy(gc->user, curitem->name);
+					struct buddy *buddy = find_buddy(gc->account, curitem->name);
 					/* Should gname be freed here? -- elb */
 					free(alias);
 					if (buddy) {
@@ -4159,7 +4159,7 @@
 							strcpy(buddy->alias, alias_utf8);
 					} else {
 						debug_printf("ssi: adding buddy %s to group %s to local list\n", curitem->name, gname);
-						add_buddy(gc->user, (gname_utf8 ? gname_utf8 : "orphans"), curitem->name, alias_utf8);
+						add_buddy(gc->account, (gname_utf8 ? gname_utf8 : "orphans"), curitem->name, alias_utf8);
 						tmp++;
 					}
 					free(gname_utf8);
@@ -4175,10 +4175,10 @@
 				if (curitem->name) {
 					/* if (!find_permdeny_by_name(gc->permit, curitem->name)) { AAA */
 					GSList *list;
-					for (list=gc->user->permit; (list && aim_sncmp(curitem->name, list->data)); list=list->next);
+					for (list=gc->account->permit; (list && aim_sncmp(curitem->name, list->data)); list=list->next);
 					if (!list) {
 						debug_printf("ssi: adding permit buddy %s to local list\n", curitem->name);
-						gaim_privacy_permit_add(gc->user, curitem->name);
+						gaim_privacy_permit_add(gc->account, curitem->name);
 						build_allow_list();
 						tmp++;
 					}
@@ -4188,10 +4188,10 @@
 			case 0x0003: { /* Deny buddy */
 				if (curitem->name) {
 					GSList *list;
-					for (list=gc->user->deny; (list && aim_sncmp(curitem->name, list->data)); list=list->next);
+					for (list=gc->account->deny; (list && aim_sncmp(curitem->name, list->data)); list=list->next);
 					if (!list) {
 						debug_printf("ssi: adding deny buddy %s to local list\n", curitem->name);
-						gaim_privacy_deny_add(gc->user, curitem->name);
+						gaim_privacy_deny_add(gc->account, curitem->name);
 						build_block_list();
 						tmp++;
 					}
@@ -4201,10 +4201,10 @@
 			case 0x0004: { /* Permit/deny setting */
 				if (curitem->data) {
 					fu8_t permdeny;
-					if ((permdeny = aim_ssi_getpermdeny(sess->ssi.local)) && (permdeny != gc->user->permdeny)) {
-						debug_printf("ssi: changing permdeny from %d to %hhu\n", gc->user->permdeny, permdeny);
-						gc->user->permdeny = permdeny;
-						if (od->icq && gc->user->permdeny == 0x03) {
+					if ((permdeny = aim_ssi_getpermdeny(sess->ssi.local)) && (permdeny != gc->account->permdeny)) {
+						debug_printf("ssi: changing permdeny from %d to %hhu\n", gc->account->permdeny, permdeny);
+						gc->account->permdeny = permdeny;
+						if (od->icq && gc->account->permdeny == 0x03) {
 							serv_set_away(gc, "Invisible", "");
 						}
 						tmp++;
@@ -4232,7 +4232,7 @@
 			struct group *group = cur->data;
 			for (curb=group->members; curb; curb=curb->next) {
 				struct buddy *buddy = curb->data;
-				if(buddy->user == gc->user) {
+				if(buddy->account == gc->account) {
 					if (aim_ssi_itemlist_exists(sess->ssi.local, buddy->name)) {
 						/* Store local alias on server */
 						char *alias = aim_ssi_getalias(sess->ssi.local, group->name, buddy->name);
@@ -4248,8 +4248,8 @@
 		}
 
 		/* Permit list */
-		if (gc->user->permit) {
-			for (cur=gc->user->permit; cur; cur=cur->next)
+		if (gc->account->permit) {
+			for (cur=gc->account->permit; cur; cur=cur->next)
 				if (!aim_ssi_itemlist_finditem(sess->ssi.local, NULL, cur->data, AIM_SSI_TYPE_PERMIT)) {
 					debug_printf("ssi: adding permit %s from local list to server list\n", (char *)cur->data);
 					aim_ssi_addpermit(sess, od->conn, cur->data);
@@ -4257,8 +4257,8 @@
 		}
 
 		/* Deny list */
-		if (gc->user->deny) {
-			for (cur=gc->user->deny; cur; cur=cur->next)
+		if (gc->account->deny) {
+			for (cur=gc->account->deny; cur; cur=cur->next)
 				if (!aim_ssi_itemlist_finditem(sess->ssi.local, NULL, cur->data, AIM_SSI_TYPE_DENY)) {
 					debug_printf("ssi: adding deny %s from local list to server list\n", (char *)cur->data);
 					aim_ssi_adddeny(sess, od->conn, cur->data);
@@ -4276,7 +4276,7 @@
 			GSList *buds = gr->members;
 			while(buds) {
 				struct buddy *b = buds->data;
-				if(b->user == gc->user)
+				if(b->account == gc->account)
 					tmp++;
 				buds = buds->next;
 			}
@@ -4349,7 +4349,7 @@
 
 	debug_printf("ssi: %s has given you permission to add him to your buddy list\n", sn);
 
-	buddy = find_buddy(gc->user, sn);
+	buddy = find_buddy(gc->account, sn);
 	if (buddy && (get_buddy_alias_only(buddy)))
 		nombre = g_strdup_printf("%s (%s)", sn, get_buddy_alias_only(buddy));
 	else
@@ -4383,7 +4383,7 @@
 
 	debug_printf("ssi: received authorization request from %s\n", sn);
 
-	buddy = find_buddy(gc->user, sn);
+	buddy = find_buddy(gc->account, sn);
 	if (buddy && (get_buddy_alias_only(buddy)))
 		nombre = g_strdup_printf("%s (%s)", sn, get_buddy_alias_only(buddy));
 	else
@@ -4418,7 +4418,7 @@
 
 	debug_printf("ssi: received authorization reply from %s.  Reply is 0x%04hhx\n", sn, reply);
 
-	buddy = find_buddy(gc->user, sn);
+	buddy = find_buddy(gc->account, sn);
 	if (buddy && (get_buddy_alias_only(buddy)))
 		nombre = g_strdup_printf("%s (%s)", sn, get_buddy_alias_only(buddy));
 	else
@@ -4449,7 +4449,7 @@
 	sn = va_arg(ap, char *);
 	va_end(ap);
 
-	buddy = find_buddy(gc->user, sn);
+	buddy = find_buddy(gc->account, sn);
 	debug_printf("ssi: %s added you to their buddy list\n", sn);
 	show_got_added(gc, NULL, sn, (buddy ? get_buddy_alias_only(buddy) : NULL), NULL);
 
@@ -4758,7 +4758,7 @@
 	dim = find_direct_im(od, sn);
 
 	if (!(cnv = gaim_find_conversation(sn)))
-		cnv = gaim_conversation_new(GAIM_CONV_IM, dim->gc->user, sn);
+		cnv = gaim_conversation_new(GAIM_CONV_IM, dim->gc->account, sn);
 	gaim_input_remove(dim->watcher);
 	dim->conn = newconn;
 	dim->watcher = gaim_input_add(dim->conn->fd, GAIM_INPUT_READ,
@@ -4915,7 +4915,7 @@
 	struct oscar_data *od = gc->proto_data;
 	od->evilhack = g_slist_append(od->evilhack, g_strdup(normalize(who)));
 	if (od->icq) {
-		struct buddy *budlight = find_buddy(gc->user, who);
+		struct buddy *budlight = find_buddy(gc->account, who);
 		if (budlight)
 			if ((budlight->uc >> 16) & (AIM_ICQ_STATE_AWAY || AIM_ICQ_STATE_DND || AIM_ICQ_STATE_OUT || AIM_ICQ_STATE_BUSY || AIM_ICQ_STATE_CHAT))
 				if (budlight->caps & AIM_CAPS_ICQSERVERRELAY)
@@ -4947,7 +4947,7 @@
 	char buf[MAXMSGLEN];
 	int at;
 
-	switch(gc->user->permdeny) {
+	switch(gc->account->permdeny) {
 	case 1:
 		aim_bos_changevisibility(od->sess, od->conn, AIM_VISIBILITYCHANGE_DENYADD, gc->username);
 		break;
@@ -4979,7 +4979,7 @@
 			list = ((struct group *)g->data)->members;
 			while (list) {
 				struct buddy *b = list->data;
-				if(b->user == gc->user)
+				if(b->account == gc->account)
 					at += g_snprintf(buf + at, sizeof(buf) - at, "%s&", b->name);
 				list = list->next;
 			}
@@ -4993,13 +4993,13 @@
 	signoff_blocked(gc);
 #else
 	if (od->sess->ssi.received_data)
-		aim_ssi_setpermdeny(od->sess, od->conn, gc->user->permdeny, 0xffffffff);
+		aim_ssi_setpermdeny(od->sess, od->conn, gc->account->permdeny, 0xffffffff);
 #endif
 }
 
 static void oscar_add_permit(struct gaim_connection *gc, const char *who) {
 #ifdef NOSSI
-	if (gc->user->permdeny == 3)
+	if (gc->account->permdeny == 3)
 		oscar_set_permit_deny(gc);
 #else
 	struct oscar_data *od = (struct oscar_data *)gc->proto_data;
@@ -5011,7 +5011,7 @@
 
 static void oscar_add_deny(struct gaim_connection *gc, const char *who) {
 #ifdef NOSSI
-	if (gc->user->permdeny == 4)
+	if (gc->account->permdeny == 4)
 		oscar_set_permit_deny(gc);
 #else
 	struct oscar_data *od = (struct oscar_data *)gc->proto_data;
@@ -5023,7 +5023,7 @@
 
 static void oscar_rem_permit(struct gaim_connection *gc, const char *who) {
 #ifdef NOSSI
-	if (gc->user->permdeny == 3)
+	if (gc->account->permdeny == 3)
 		oscar_set_permit_deny(gc);
 #else
 	struct oscar_data *od = (struct oscar_data *)gc->proto_data;
@@ -5035,7 +5035,7 @@
 
 static void oscar_rem_deny(struct gaim_connection *gc, const char *who) {
 #ifdef NOSSI
-	if (gc->user->permdeny == 4)
+	if (gc->account->permdeny == 4)
 		oscar_set_permit_deny(gc);
 #else
 	struct oscar_data *od = (struct oscar_data *)gc->proto_data;
@@ -5082,7 +5082,7 @@
 		pbm->gc = gc;
 		m = g_list_append(m, pbm);
 	} else {
-		struct buddy *b = find_buddy(gc->user, who);
+		struct buddy *b = find_buddy(gc->account, who);
 
 		if (!b || (b->uc & UC_UNAVAILABLE)) {
 			pbm = g_new0(struct proto_buddy_menu, 1);
@@ -5223,7 +5223,7 @@
 		struct group *group = curg->data;
 		for (curb=group->members; curb; curb=g_slist_next(curb)) {
 			struct buddy *buddy = curb->data;
-			if (buddy->user == gc->user && aim_ssi_waitingforauth(od->sess->ssi.local, group->name, buddy->name)) {
+			if (buddy->account == gc->account && aim_ssi_waitingforauth(od->sess->ssi.local, group->name, buddy->name)) {
 				if (get_buddy_alias_only(buddy))
 					nombre = g_strdup_printf(" %s (%s)", buddy->name, get_buddy_alias_only(buddy));
 				else
--- a/src/protocols/toc/toc.c	Fri Jan 31 06:51:49 2003 +0000
+++ b/src/protocols/toc/toc.c	Fri Jan 31 13:03:47 2003 +0000
@@ -182,27 +182,28 @@
 /* ok. this function used to take username/password, and return 0 on success.
  * now, it takes username/password, and returns NULL on error or a new gaim_connection
  * on success. */
-static void toc_login(struct aim_user *user)
+static void toc_login(struct gaim_account *account)
 {
 	struct gaim_connection *gc;
 	struct toc_data *tdt;
 	char buf[80];
 
-	gc = new_gaim_conn(user);
+	gc = new_gaim_conn(account);
 	gc->proto_data = tdt = g_new0(struct toc_data, 1);
 	gc->flags |= OPT_CONN_HTML;
 	gc->flags |= OPT_CONN_AUTO_RESP;
 
 	g_snprintf(buf, sizeof buf, "Looking up %s",
-		   user->proto_opt[USEROPT_AUTH][0] ? user->proto_opt[USEROPT_AUTH] : TOC_HOST);
+		   account->proto_opt[USEROPT_AUTH][0] ? account->proto_opt[USEROPT_AUTH] : TOC_HOST);
 	set_login_progress(gc, 1, buf);
 
 	debug_printf("* Client connects to TOC\n");
- 	if (proxy_connect(user->proto_opt[USEROPT_AUTH][0] ? user->proto_opt[USEROPT_AUTH] : TOC_HOST,
-			  user->proto_opt[USEROPT_AUTHPORT][0] ?
-				  atoi(user->proto_opt[USEROPT_AUTHPORT]) : TOC_PORT,
-			  toc_login_callback, gc) != 0 || !user->gc) {
-		g_snprintf(buf, sizeof(buf), "Connect to %s failed", user->proto_opt[USEROPT_AUTH]);
+	if (proxy_connect(account->proto_opt[USEROPT_AUTH][0] ?
+				account->proto_opt[USEROPT_AUTH] : TOC_HOST,
+				account->proto_opt[USEROPT_AUTHPORT][0] ?
+				atoi(account->proto_opt[USEROPT_AUTHPORT]) : TOC_PORT,
+				toc_login_callback, gc) != 0 || !account->gc) {
+		g_snprintf(buf, sizeof(buf), "Connect to %s failed", account->proto_opt[USEROPT_AUTH]);
 		hide_login_progress(gc, buf);
 		signoff(gc);
 		return;
@@ -635,7 +636,7 @@
 		}
 	} else if (!strcasecmp(c, "CONFIG")) {
 		c = strtok(NULL, ":");
-		parse_toc_buddy_list(gc->user, c);
+		parse_toc_buddy_list(gc->account, c);
 	} else if (!strcasecmp(c, "NICK")) {
 		/* ignore NICK so that things get imported/exported properly
 		c = strtok(NULL, ":");
@@ -795,7 +796,7 @@
 
 		if (b->window) {
 			char error_buf[BUF_LONG];
-			gaim_conversation_set_user(b, NULL);
+			gaim_conversation_set_account(b, NULL);
 			g_snprintf(error_buf, sizeof error_buf, _("You have been disconnected"
 								  " from chat room %s."), b->name);
 			do_error_dialog(error_buf, NULL, GAIM_ERROR);
@@ -808,10 +809,10 @@
 		url = strtok(NULL, ":");
 
 		g_snprintf(tmp, sizeof(tmp), "http://%s:%d/%s",
-				gc->user->proto_opt[USEROPT_AUTH][0] ?
-					gc->user->proto_opt[USEROPT_AUTH] : TOC_HOST,
-				gc->user->proto_opt[USEROPT_AUTHPORT][0] ?
-					atoi(gc->user->proto_opt[USEROPT_AUTHPORT]) : TOC_PORT,
+				gc->account->proto_opt[USEROPT_AUTH][0] ?
+					gc->account->proto_opt[USEROPT_AUTH] : TOC_HOST,
+				gc->account->proto_opt[USEROPT_AUTHPORT][0] ?
+					atoi(gc->account->proto_opt[USEROPT_AUTHPORT]) : TOC_PORT,
 				url);
 		grab_url(tmp, FALSE, toc_got_info, NULL);
 	} else if (!strcasecmp(c, "DIR_STATUS")) {
@@ -987,7 +988,7 @@
 static void toc_set_config(struct gaim_connection *gc)
 {
 	char *buf = g_malloc(MSG_LEN), snd[BUF_LEN * 2];
-	toc_build_config(gc->user, buf, MSG_LEN - strlen("toc_set_config \\{\\}"), FALSE);
+	toc_build_config(gc->account, buf, MSG_LEN - strlen("toc_set_config \\{\\}"), FALSE);
 	g_snprintf(snd, MSG_LEN, "toc_set_config {%s}", buf);
 	sflap_send(gc, snd, -1, TYPE_DATA);
 	g_free(buf);
@@ -1195,7 +1196,7 @@
 	if (!b)
 		return;		/* can this happen? */
 
-	if (gaim_conversation_get_user(b) == NULL) {
+	if (gaim_conversation_get_account(b) == NULL) {
 		/* TOC already kicked us out of this room */
 		serv_got_chat_left(g, id);
 	}
@@ -1269,7 +1270,7 @@
 static void toc_add_permit(struct gaim_connection *gc, const char *who)
 {
 	char buf2[BUF_LEN * 2];
-	if (gc->user->permdeny != 3)
+	if (gc->account->permdeny != 3)
 		return;
 	g_snprintf(buf2, sizeof(buf2), "toc_add_permit %s", normalize(who));
 	sflap_send(gc, buf2, -1, TYPE_DATA);
@@ -1280,7 +1281,7 @@
 static void toc_add_deny(struct gaim_connection *gc, const char *who)
 {
 	char buf2[BUF_LEN * 2];
-	if (gc->user->permdeny != 4)
+	if (gc->account->permdeny != 4)
 		return;
 	g_snprintf(buf2, sizeof(buf2), "toc_add_deny %s", normalize(who));
 	sflap_send(gc, buf2, -1, TYPE_DATA);
@@ -1294,7 +1295,7 @@
 	GSList *list;
 	int at;
 
-	switch (gc->user->permdeny) {
+	switch (gc->account->permdeny) {
 	case 1:
 		/* permit all, deny none. to get here reliably we need to have been in permit
 		 * mode, and send an empty toc_add_deny message, which will switch us to deny none */
@@ -1318,7 +1319,7 @@
 		sflap_send(gc, buf2, -1, TYPE_DATA);
 
 		at = g_snprintf(buf2, sizeof(buf2), "toc_add_permit ");
-		list = gc->user->permit;
+		list = gc->account->permit;
 		while (list) {
 			at += g_snprintf(buf2 + at, sizeof(buf2) - at, "%s ", normalize(list->data));
 			if (at > MSG_LEN + 32) {	/* from out my ass comes greatness */
@@ -1336,7 +1337,7 @@
 		sflap_send(gc, buf2, -1, TYPE_DATA);
 
 		at = g_snprintf(buf2, sizeof(buf2), "toc_add_deny ");
-		list = gc->user->deny;
+		list = gc->account->deny;
 		while (list) {
 			at += g_snprintf(buf2 + at, sizeof(buf2) - at, "%s ", normalize(list->data));
 			if (at > MSG_LEN + 32) {	/* from out my ass comes greatness */
@@ -1356,14 +1357,14 @@
 
 static void toc_rem_permit(struct gaim_connection *gc, const char *who)
 {
-	if (gc->user->permdeny != 3)
+	if (gc->account->permdeny != 3)
 		return;
 	toc_set_permit_deny(gc);
 }
 
 static void toc_rem_deny(struct gaim_connection *gc, const char *who)
 {
-	if (gc->user->permdeny != 4)
+	if (gc->account->permdeny != 4)
 		return;
 	toc_set_permit_deny(gc);
 }
@@ -1666,7 +1667,7 @@
 {
 	struct file_transfer *ft;
 	const char *dirname = gtk_file_selection_get_filename(GTK_FILE_SELECTION(old_ft->window));
-	struct aim_user *user;
+	struct gaim_account *account;
 	char buf[BUF_LEN * 2];
 
 	if (file_is_dir(dirname, old_ft->window))
@@ -1682,7 +1683,7 @@
 	ft->files = old_ft->files;
 	ft->port = old_ft->port;
 	ft->gc = old_ft->gc;
-	user = ft->gc->user;
+	account = ft->gc->account;
 	gtk_widget_destroy(old_ft->window);
 
 	g_snprintf(buf, sizeof(buf), "toc_rvous_accept %s %s %s", ft->user, ft->cookie, FILE_SEND_UID);
@@ -1855,7 +1856,7 @@
 {
 	struct file_transfer *ft;
 	const char *dirname = gtk_file_selection_get_filename(GTK_FILE_SELECTION(old_ft->window));
-	struct aim_user *user;
+	struct gaim_account *account;
 	char *buf, buf2[BUF_LEN * 2];
 
 	if (file_is_dir(dirname, old_ft->window))
@@ -1884,7 +1885,7 @@
 	ft->ip = g_strdup(old_ft->ip);
 	ft->port = old_ft->port;
 	ft->gc = old_ft->gc;
-	user = ft->gc->user;
+	account = ft->gc->account;
 	gtk_widget_destroy(old_ft->window);
 
 	g_snprintf(buf2, sizeof(buf2), "toc_rvous_accept %s %s %s", ft->user, ft->cookie, FILE_GET_UID);
--- a/src/protocols/yahoo/yahoo.c	Fri Jan 31 06:51:49 2003 +0000
+++ b/src/protocols/yahoo/yahoo.c	Fri Jan 31 13:03:47 2003 +0000
@@ -475,8 +475,8 @@
 			}
 			buddies = g_strsplit(split[1], ",", -1);
 			for (bud = buddies; bud && *bud; bud++)
-				if (!find_buddy(gc->user, *bud)) {
-					add_buddy(gc->user, split[0], *bud, *bud);
+				if (!find_buddy(gc->account, *bud)) {
+					add_buddy(gc->account, split[0], *bud, *bud);
 					export = TRUE;
 				}
 			g_strfreev(buddies);
@@ -519,7 +519,7 @@
 		else
 			serv_got_typing_stopped(gc, from);
 	} else if (!g_strncasecmp(msg, "GAME", strlen("GAME"))) {
-		struct buddy *bud = find_buddy(gc->user, from);
+		struct buddy *bud = find_buddy(gc->account, from);
 		void *free1=NULL, *free2=NULL;
 		if (!bud)
 			debug_printf("%s is playing a game, and doesn't want you to know.\n", from);
@@ -954,8 +954,8 @@
 	gc->inpa = gaim_input_add(yd->fd, GAIM_INPUT_READ, yahoo_pending, gc);
 }
 
-static void yahoo_login(struct aim_user *user) {
-	struct gaim_connection *gc = new_gaim_conn(user);
+static void yahoo_login(struct gaim_account *account) {
+	struct gaim_connection *gc = new_gaim_conn(account);
 	struct yahoo_data *yd = gc->proto_data = g_new0(struct yahoo_data, 1);
 
 	set_login_progress(gc, 1, "Connecting");
@@ -965,19 +965,19 @@
 	yd->games = g_hash_table_new(g_str_hash, g_str_equal);
 
 
-	if (!g_strncasecmp(user->proto_opt[USEROPT_PAGERHOST], "cs.yahoo.com", strlen("cs.yahoo.com"))) {
+	if (!g_strncasecmp(account->proto_opt[USEROPT_PAGERHOST], "cs.yahoo.com", strlen("cs.yahoo.com"))) {
 		/* Figured out the new auth method -- cs.yahoo.com likes to disconnect on buddy remove and add now */
 		debug_printf("Setting new Yahoo! server.\n");
-		g_snprintf(user->proto_opt[USEROPT_PAGERHOST], strlen("scs.yahoo.com") + 1, "scs.yahoo.com");
+		g_snprintf(account->proto_opt[USEROPT_PAGERHOST], strlen("scs.yahoo.com") + 1, "scs.yahoo.com");
 		save_prefs();
 	}
-	
-    
-       	if (proxy_connect(user->proto_opt[USEROPT_PAGERHOST][0] ?
-				user->proto_opt[USEROPT_PAGERHOST] : YAHOO_PAGER_HOST,
-			   user->proto_opt[USEROPT_PAGERPORT][0] ?
-				atoi(user->proto_opt[USEROPT_PAGERPORT]) : YAHOO_PAGER_PORT,
-			   yahoo_got_connected, gc) != 0) {
+
+
+	if (proxy_connect(account->proto_opt[USEROPT_PAGERHOST][0] ?
+				account->proto_opt[USEROPT_PAGERHOST] : YAHOO_PAGER_HOST,
+				account->proto_opt[USEROPT_PAGERPORT][0] ?
+				atoi(account->proto_opt[USEROPT_PAGERPORT]) : YAHOO_PAGER_PORT,
+				yahoo_got_connected, gc) != 0) {
 		hide_login_progress(gc, "Connection problem");
 		signoff(gc);
 		return;
@@ -1069,7 +1069,7 @@
 	GList *m = NULL;
 	struct proto_buddy_menu *pbm;
 	struct yahoo_data *yd = (struct yahoo_data *)gc->proto_data;
-	struct buddy *b = find_buddy(gc->user, who); /* this should never be null. if it is,
+	struct buddy *b = find_buddy(gc->account, who); /* this should never be null. if it is,
 						  segfault and get the bug report. */
 	static char buf[1024];
 	static char buf2[1024];
@@ -1311,7 +1311,7 @@
 	if (!yd->logged_in)
 		return;
 
-	g = find_group_by_buddy(find_buddy(gc->user, who));
+	g = find_group_by_buddy(find_buddy(gc->account, who));
 	if (g)
 		group = g->name;
 	else
--- a/src/protocols/zephyr/zephyr.c	Fri Jan 31 06:51:49 2003 +0000
+++ b/src/protocols/zephyr/zephyr.c	Fri Jan 31 13:03:47 2003 +0000
@@ -320,10 +320,10 @@
 
 			if (ZParseLocations(&notice, NULL, &nlocs, &user) != ZERR_NONE)
 				return;
-			if ((b = find_buddy(zgc->user, user)) == NULL) {
+			if ((b = find_buddy(zgc->account, user)) == NULL) {
 				char *e = strchr(user, '@');
 				if (e) *e = '\0';
-				b = find_buddy(zgc->user, user);
+				b = find_buddy(zgc->account, user);
 			}
 			if (!b) {
 				free(user);
@@ -451,7 +451,7 @@
 		m = g->members;
 		while (m) {
 			struct buddy *b = m->data;
-			if(b->user->gc == zgc) {
+			if(b->account->gc == zgc) {
 				char *chk;
 				chk = zephyr_normalize(b->name);
 				/* doesn't matter if this fails or not; we'll just move on to the next one */
@@ -573,14 +573,14 @@
 		while (fgets(buff, BUFSIZ, fd)) {
 			strip_comments(buff);
 			if (buff[0])
-				add_buddy(zgc->user, "Anyone", buff, buff);
+				add_buddy(zgc->account, "Anyone", buff, buff);
 		}
 		fclose(fd);
 	}
 	g_free(filename);
 }
 
-static void zephyr_login(struct aim_user *user)
+static void zephyr_login(struct gaim_account *account)
 {
 	ZSubscription_t sub;
 
@@ -590,7 +590,7 @@
 		return;
 	}
 
-	zgc = new_gaim_conn(user);
+	zgc = new_gaim_conn(account);
 
 	z_call_s(ZInitialize(), "Couldn't initialize zephyr");
 	z_call_s(ZOpenPort(NULL), "Couldn't open port");
@@ -673,7 +673,7 @@
 		m = g->members;
 		while (m) {
 			b = m->data;
-			if(b->user->gc == zgc) {
+			if(b->account->gc == zgc) {
 				if ((ptr = strchr(b->name, '@')) != NULL) {
 					ptr2 = ptr + 1;
 					/* We should only strip the realm name if the principal
--- a/src/prpl.c	Fri Jan 31 06:51:49 2003 +0000
+++ b/src/prpl.c	Fri Jan 31 13:03:47 2003 +0000
@@ -467,7 +467,7 @@
 	struct mail_notify *mn;
 	char buf[2048];
 
-	if (!(gc->user->options & OPT_USR_MAIL_CHECK))
+	if (!(gc->account->options & OPT_ACCT_MAIL_CHECK))
 		return;
 
 	if (!(mn = find_mail_notify(gc))) {
@@ -651,7 +651,7 @@
 {
 	char buf[BUF_LONG];
 	struct got_add *ga = g_new0(struct got_add, 1);
-	struct buddy *b = find_buddy(gc->user, who);
+	struct buddy *b = find_buddy(gc->account, who);
 
 	ga->gc = gc;
 	ga->who = g_strdup(who);
--- a/src/prpl.h	Fri Jan 31 06:51:49 2003 +0000
+++ b/src/prpl.h	Fri Jan 31 13:03:47 2003 +0000
@@ -113,7 +113,7 @@
 	 * (i.e. the prpl says you can set your dir info, the ui shows a dialog and needs to call
 	 * set_dir in order to set it) */
 
-	void (* login)		(struct aim_user *);
+	void (* login)		(struct gaim_account *);
 	void (* close)		(struct gaim_connection *);
 	int  (* send_im)	(struct gaim_connection *, char *who, char *message, int len, int away);
 	void (* set_info)	(struct gaim_connection *, char *info);
@@ -158,7 +158,7 @@
 	void (* keepalive)	(struct gaim_connection *);
 
 	/* new user registration */
-	void (* register_user)	(struct aim_user *);
+	void (* register_user)	(struct gaim_account *);
 
 	/* get "chat buddy" info and away message */
 	void (* get_cb_info)	(struct gaim_connection *, int, char *who);
--- a/src/server.c	Fri Jan 31 06:51:49 2003 +0000
+++ b/src/server.c	Fri Jan 31 13:03:47 2003 +0000
@@ -39,29 +39,29 @@
 #include "pixmaps/cancel.xpm"
 #include "pixmaps/tb_search.xpm"
 
-void serv_login(struct aim_user *user)
+void serv_login(struct gaim_account *account)
 {
-	struct prpl *p = find_prpl(user->protocol);
+	struct prpl *p = find_prpl(account->protocol);
 
-	if (user->gc != NULL || p == NULL)
+	if (account->gc != NULL || p == NULL)
 		return;
 
 	if(!ref_protocol(p))
 		return;
 
 	if (p->login) {
-		if (!strlen(user->password) && !(p->options & OPT_PROTO_NO_PASSWORD) &&
+		if (!strlen(account->password) && !(p->options & OPT_PROTO_NO_PASSWORD) &&
 			!(p->options & OPT_PROTO_PASSWORD_OPTIONAL)) {
 			do_error_dialog(_("Please enter your password"), NULL, GAIM_ERROR);
 			return;
 		}
 
-		debug_printf(PACKAGE " " VERSION " logging in %s using %s\n", user->username, p->name);
-		user->connecting = TRUE;
+		debug_printf(PACKAGE " " VERSION " logging in %s using %s\n", account->username, p->name);
+		account->connecting = TRUE;
 		connecting_count++;
 		debug_printf("connecting_count: %d\n", connecting_count);
-		plugin_event(event_connecting, user);
-		p->login(user);
+		plugin_event(event_connecting, account);
+		p->login(account);
 	}
 }
 
@@ -128,10 +128,10 @@
 
 void serv_finish_login(struct gaim_connection *gc)
 {
-	if (strlen(gc->user->user_info)) {
+	if (strlen(gc->account->user_info)) {
 		/* g_malloc(strlen(gc->user->user_info) * 4);
 		   strncpy_withhtml(buf, gc->user->user_info, strlen(gc->user->user_info) * 4); */
-		serv_set_info(gc, gc->user->user_info);
+		serv_set_info(gc, gc->account->user_info);
 		/* g_free(buf); */
 	}
 
@@ -345,13 +345,13 @@
  */
 void serv_alias_buddy(struct buddy *b)
 {
-	if(b && b->user->gc && b->user->gc->prpl && b->user->gc->prpl->alias_buddy) {
-		b->user->gc->prpl->alias_buddy(b->user->gc, b->name, b->alias);
+	if(b && b->account->gc && b->account->gc->prpl && b->account->gc->prpl->alias_buddy) {
+		b->account->gc->prpl->alias_buddy(b->account->gc, b->name, b->alias);
 	}
 }
 
 void serv_got_alias(struct gaim_connection *gc, char *who, char *alias) {
-	struct buddy *b = find_buddy(gc->user, who);
+	struct buddy *b = find_buddy(gc->account, who);
 	if(!b)
 		return;
 
@@ -371,9 +371,9 @@
  */
 void serv_move_buddy(struct buddy *b, struct group *og, struct group *ng)
 {
-	if(b && b->user->gc && og && ng) {
-		if(b->user->gc->prpl && b->user->gc->prpl->group_buddy) {
-			b->user->gc->prpl->group_buddy(b->user->gc, b->name, og->name, ng->name);
+	if(b && b->account->gc && og && ng) {
+		if(b->account->gc->prpl && b->account->gc->prpl->group_buddy) {
+			b->account->gc->prpl->group_buddy(b->account->gc, b->name, og->name, ng->name);
 		}
 	}
 }
@@ -389,7 +389,7 @@
 
 		for (original=old_group->members; original; original=g_slist_next(original)) {
 			struct buddy *b = original->data;
-			if(b->user == g->user)
+			if(b->account == g->account)
 				tobemoved = g_list_append(tobemoved, b->name);
 		}
 
@@ -582,7 +582,7 @@
 	 * We should update the conversation window buttons and menu,
 	 * if it exists.
 	 */
-	cnv = gaim_find_conversation_with_user(name, gc->user);
+	cnv = gaim_find_conversation_with_account(name, gc->account);
 
 	/*
 	 * Plugin stuff. we pass a char ** but we don't want to pass what's
@@ -656,7 +656,7 @@
 	if (gc->away) {
 		time_t t;
 		char *tmpmsg;
-		struct buddy *b = find_buddy(gc->user, name);
+		struct buddy *b = find_buddy(gc->account, name);
 		char *alias = b ? get_buddy_alias(b) : name;
 		int row;
 		struct queued_away_response *qar;
@@ -733,7 +733,7 @@
 			 * while away), and then write it to the convo window.
 			 */
 			if (cnv == NULL)
-				cnv = gaim_conversation_new(GAIM_CONV_IM, gc->user, name);
+				cnv = gaim_conversation_new(GAIM_CONV_IM, gc->account, name);
 
 			gaim_im_write(GAIM_IM(cnv), NULL, message, len,
 						  away | WFLAG_RECV, mtime);
@@ -825,7 +825,7 @@
 			unread_message_queue = g_slist_append(unread_message_queue, qm);
 		} else {
 			if (cnv == NULL)
-				cnv = gaim_conversation_new(GAIM_CONV_IM, gc->user, name);
+				cnv = gaim_conversation_new(GAIM_CONV_IM, gc->account, name);
 
 			/* CONV XXX gaim_conversation_set_name(cnv, name); */
 
@@ -845,7 +845,7 @@
 void serv_got_update(struct gaim_connection *gc, char *name, int loggedin,
 					 int evil, time_t signon, time_t idle, int type, guint caps)
 {
-	struct buddy *b = find_buddy(gc->user, name);
+	struct buddy *b = find_buddy(gc->account, name);
 
 	if (signon && (gc->prpl->options & OPT_PROTO_CORRECT_TIME)) {
 		char *tmp = g_strdup(normalize(name));
@@ -953,7 +953,7 @@
 
 	im = GAIM_IM(cnv);
 
-	gaim_conversation_set_user(cnv, gc->user);
+	gaim_conversation_set_account(cnv, gc->account);
 	gaim_im_set_typing_state(im, state);
 	gaim_im_update_typing(im);
 
@@ -1036,7 +1036,7 @@
 	struct gaim_conversation *b;
 	struct gaim_chat *chat;
 
-	b = gaim_conversation_new(GAIM_CONV_CHAT, gc->user, name);
+	b = gaim_conversation_new(GAIM_CONV_CHAT, gc->account, name);
 	chat = GAIM_CHAT(b);
 
 	gc->buddy_chats = g_slist_append(gc->buddy_chats, b);
--- a/src/sound.c	Fri Jan 31 06:51:49 2003 +0000
+++ b/src/sound.c	Fri Jan 31 13:03:47 2003 +0000
@@ -137,25 +137,6 @@
 	return check_dev("/dev/audio");
 }
 
-#ifdef ESD_SOUND
-
-int esd_fd;
-
-static int can_play_esd()
-{
-	esd_format_t format = ESD_BITS16 | ESD_STREAM | ESD_PLAY | ESD_MONO;
-
-	esd_fd = esd_play_stream(format, 8012, NULL, "gaim");
-
-	if (esd_fd < 0) {
-		return 0;
-	}
-
-	return 1;
-}
-
-#endif /* ESD_SOUND */
-
 #ifdef ARTSC_SOUND
 
 /*
--- a/src/ui.h	Fri Jan 31 06:51:49 2003 +0000
+++ b/src/ui.h	Fri Jan 31 13:03:47 2003 +0000
@@ -238,40 +238,6 @@
 	int len;
 };
 
-struct mod_user {
-	struct aim_user *user;
-
-	/* these are temporary */
-	int options;
-	int protocol;
-	char proto_opt[7][256];
-
-	/* stuff for modify window */
-	GtkWidget *mod;
-	GtkWidget *main;
-	GtkWidget *name;
-	GtkWidget *alias;
-	GtkWidget *pwdbox;
-	GtkWidget *pass;
-	GtkWidget *rempass;
-	GtkWidget *user_frame;
-	GtkWidget *proto_frame;
-	GtkSizeGroup *sg;
-	GList *opt_entries;
-
-	/* stuff for icon selection */
-	char iconfile[256];
-	GtkWidget *iconsel;
-	GtkWidget *iconentry;
-	GtkWidget *icondlg;
-
-	/* stuff for mail check prompt */
-	GtkWidget *checkmail;
-
-	/* stuff for register with server */
-	GtkWidget *register_user;
-};
-
 struct smiley_theme {
 	char *path;
 	char *name;
--- a/src/util.c	Fri Jan 31 06:51:49 2003 +0000
+++ b/src/util.c	Fri Jan 31 13:03:47 2003 +0000
@@ -508,27 +508,27 @@
 #endif
 }
 
-struct aim_user *find_user(const char *name, int protocol)
+struct gaim_account *gaim_account_find(const char *name, int protocol)
 {
 	char *who = g_strdup(normalize(name));
-	GSList *usr = aim_users;
-	struct aim_user *u;
+	GSList *accts = gaim_accounts;
+	struct gaim_account *account;
 
-	while (usr) {
-		u = (struct aim_user *)usr->data;
-		if (!strcmp(normalize(u->username), who)) {
+	while (accts) {
+		account = (struct gaim_account *)accts->data;
+		if (!strcmp(normalize(account->username), who)) {
 			if (protocol != -1) {
-				if (u->protocol == protocol) {
+				if (account->protocol == protocol) {
 					g_free(who);
-					return u;
+					return account;
 				}
 			} else {
 				g_free(who);
-				return u;
+				return account;
 			}
 
 		}
-		usr = usr->next;
+		accts = accts->next;
 	}
 	g_free(who);
 	return NULL;
@@ -999,8 +999,8 @@
 			what = g_strdup(str->str);
 			g_string_free(str, TRUE);
 		}
-		
-		c = gaim_conversation_new(GAIM_CONV_IM, gc->user, who);
+
+		c = gaim_conversation_new(GAIM_CONV_IM, gc->account, who);
 		g_free(who);
 
 		if (what) {
@@ -1013,7 +1013,7 @@
 		char *who, *group;
 		uri = uri + strlen("aim:addbuddy?");
 		/* spaces are encoded as +'s */
-		
+
 		if (!(who = strstr(uri, "screenname="))) {
 			return _("No screenname given.");
 		}