diff libpurple/prefs.c @ 17977:f71bd7e56389

propagate from branch 'im.pidgin.pidgin' (head b438ea0760758dc547f95d62892455f50ee4c4f1) to branch 'im.pidgin.soc.2007.remotelogging' (head 7e683fd40634aa3eb22dcf25cbd25c8959d76662)
author Michael Shkutkov <mshkutkov@soc.pidgin.im>
date Sat, 09 Jun 2007 12:01:29 +0000
parents 8d94cf688009
children f2d8658b3a86
line wrap: on
line diff
--- a/libpurple/prefs.c	Sun Apr 22 11:11:49 2007 +0000
+++ b/libpurple/prefs.c	Sat Jun 09 12:01:29 2007 +0000
@@ -92,7 +92,16 @@
 	if (name[1] == '\0')
 		return &prefs;
 	else
-		return g_hash_table_lookup(prefs_hash, name);
+	{
+		/* When we're initializing, the debug system is
+		 * initialized before the prefs system, but debug
+		 * calls will end up calling prefs functions, so we
+		 * need to deal cleanly here. */
+		if (prefs_hash)
+			return g_hash_table_lookup(prefs_hash, name);
+		else
+			return NULL;
+	}
 }
 
 
@@ -429,14 +438,14 @@
 	/* I introduced a bug in 2.0.0beta2.  This fixes the broken
 	 * scores on upgrade.  This can be removed sometime shortly
 	 * after 2.0.0 final is released. -- rlaager */
-	if (purple_prefs_get_int("/core/status/scores/offline") == -500 &&
-	    purple_prefs_get_int("/core/status/scores/available") == 100 &&
-	    purple_prefs_get_int("/core/status/scores/invisible") == -50 &&
-	    purple_prefs_get_int("/core/status/scores/away") == -100 &&
-	    purple_prefs_get_int("/core/status/scores/extended_away") == -200 &&
-	    purple_prefs_get_int("/core/status/scores/idle") == -400)
+	if (purple_prefs_get_int("/purple/status/scores/offline") == -500 &&
+	    purple_prefs_get_int("/purple/status/scores/available") == 100 &&
+	    purple_prefs_get_int("/purple/status/scores/invisible") == -50 &&
+	    purple_prefs_get_int("/purple/status/scores/away") == -100 &&
+	    purple_prefs_get_int("/purple/status/scores/extended_away") == -200 &&
+	    purple_prefs_get_int("/purple/status/scores/idle") == -400)
 	{
-		purple_prefs_set_int("/core/status/scores/idle", -10);
+		purple_prefs_set_int("/purple/status/scores/idle", -10);
 	}
 
 	return TRUE;
@@ -928,7 +937,7 @@
 
 		if(pref->type != PURPLE_PREF_PATH_LIST) {
 			purple_debug_error("prefs",
-					"purple_prefs_set_path_list: %s not a string list pref\n",
+					"purple_prefs_set_path_list: %s not a path list pref\n",
 					name);
 			return;
 		}
@@ -1093,13 +1102,14 @@
 static void
 purple_prefs_rename_node(struct purple_pref *oldpref, struct purple_pref *newpref)
 {
-	struct purple_pref *child;
+	struct purple_pref *child, *next;
 	char *oldname, *newname;
 
 	/* if we're a parent, rename the kids first */
-	for(child = oldpref->first_child; child != NULL; child = child->sibling)
+	for(child = oldpref->first_child; child != NULL; child = next)
 	{
 		struct purple_pref *newchild;
+		next = child->sibling;
 		for(newchild = newpref->first_child; newchild != NULL; newchild = newchild->sibling)
 		{
 			if(!strcmp(child->name, newchild->name))
@@ -1111,7 +1121,7 @@
 		if(newchild == NULL) {
 			/* no rename happened, we weren't able to find the new pref */
 			char *tmpname = pref_full_name(child);
-			purple_debug_error("prefs", "Unable to find rename pref for %s", tmpname);
+			purple_debug_error("prefs", "Unable to find rename pref for %s\n", tmpname);
 			g_free(tmpname);
 		}
 	}
@@ -1318,39 +1328,42 @@
 void
 purple_prefs_update_old()
 {
+	purple_prefs_rename("/core", "/purple");
+
 	/* Remove some no-longer-used prefs */
-	purple_prefs_remove("/core/away/auto_response/enabled");
-	purple_prefs_remove("/core/away/auto_response/idle_only");
-	purple_prefs_remove("/core/away/auto_response/in_active_conv");
-	purple_prefs_remove("/core/away/auto_response/sec_before_resend");
-	purple_prefs_remove("/core/away/auto_response");
-	purple_prefs_remove("/core/away/default_message");
-	purple_prefs_remove("/core/buddies/use_server_alias");
-	purple_prefs_remove("/core/conversations/away_back_on_send");
-	purple_prefs_remove("/core/conversations/send_urls_as_links");
-	purple_prefs_remove("/core/conversations/im/show_login");
-	purple_prefs_remove("/core/conversations/chat/show_join");
-	purple_prefs_remove("/core/conversations/chat/show_leave");
-	purple_prefs_remove("/core/conversations/combine_chat_im");
-	purple_prefs_remove("/core/conversations/use_alias_for_title");
-	purple_prefs_remove("/core/logging/log_signon_signoff");
-	purple_prefs_remove("/core/logging/log_idle_state");
-	purple_prefs_remove("/core/logging/log_away_state");
-	purple_prefs_remove("/core/logging/log_own_states");
-	purple_prefs_remove("/core/status/scores/hidden");
+	purple_prefs_remove("/purple/away/auto_response/enabled");
+	purple_prefs_remove("/purple/away/auto_response/idle_only");
+	purple_prefs_remove("/purple/away/auto_response/in_active_conv");
+	purple_prefs_remove("/purple/away/auto_response/sec_before_resend");
+	purple_prefs_remove("/purple/away/auto_response");
+	purple_prefs_remove("/purple/away/default_message");
+	purple_prefs_remove("/purple/buddies/use_server_alias");
+	purple_prefs_remove("/purple/conversations/away_back_on_send");
+	purple_prefs_remove("/purple/conversations/send_urls_as_links");
+	purple_prefs_remove("/purple/conversations/im/show_login");
+	purple_prefs_remove("/purple/conversations/chat/show_join");
+	purple_prefs_remove("/purple/conversations/chat/show_leave");
+	purple_prefs_remove("/purple/conversations/combine_chat_im");
+	purple_prefs_remove("/purple/conversations/use_alias_for_title");
+	purple_prefs_remove("/purple/logging/log_signon_signoff");
+	purple_prefs_remove("/purple/logging/log_idle_state");
+	purple_prefs_remove("/purple/logging/log_away_state");
+	purple_prefs_remove("/purple/logging/log_own_states");
+	purple_prefs_remove("/purple/status/scores/hidden");
 	purple_prefs_remove("/plugins/core/autorecon/hide_connected_error");
 	purple_prefs_remove("/plugins/core/autorecon/hide_connecting_error");
 	purple_prefs_remove("/plugins/core/autorecon/hide_reconnecting_dialog");
 	purple_prefs_remove("/plugins/core/autorecon/restore_state");
 	purple_prefs_remove("/plugins/core/autorecon");
+	purple_prefs_remove("/purple/debug/timestamps");
 
 	/* Convert old sounds while_away pref to new 3-way pref. */
-	if (purple_prefs_exists("/core/sound/while_away") &&
-	    purple_prefs_get_bool("/core/sound/while_away"))
+	if (purple_prefs_exists("/purple/sound/while_away") &&
+	    purple_prefs_get_bool("/purple/sound/while_away"))
 	{
-		purple_prefs_set_int("/core/sound/while_status", 3);
+		purple_prefs_set_int("/purple/sound/while_status", 3);
 	}
-	purple_prefs_remove("/core/sound/while_away");
+	purple_prefs_remove("/purple/sound/while_away");
 }
 
 void *
@@ -1370,52 +1383,52 @@
 
 	purple_prefs_connect_callback(handle, "/", prefs_save_cb, NULL);
 
-	purple_prefs_add_none("/core");
+	purple_prefs_add_none("/purple");
 	purple_prefs_add_none("/plugins");
 	purple_prefs_add_none("/plugins/core");
 	purple_prefs_add_none("/plugins/lopl");
 	purple_prefs_add_none("/plugins/prpl");
 
 	/* Away */
-	purple_prefs_add_none("/core/away");
-	purple_prefs_add_string("/core/away/idle_reporting", "system");
-	purple_prefs_add_bool("/core/away/away_when_idle", TRUE);
-	purple_prefs_add_int("/core/away/mins_before_away", 5);
+	purple_prefs_add_none("/purple/away");
+	purple_prefs_add_string("/purple/away/idle_reporting", "system");
+	purple_prefs_add_bool("/purple/away/away_when_idle", TRUE);
+	purple_prefs_add_int("/purple/away/mins_before_away", 5);
 
 	/* Away -> Auto-Reply */
-	if (!purple_prefs_exists("/core/away/auto_response/enabled") ||
-	    !purple_prefs_exists("/core/away/auto_response/idle_only"))
+	if (!purple_prefs_exists("/purple/away/auto_response/enabled") ||
+	    !purple_prefs_exists("/purple/away/auto_response/idle_only"))
 	{
-		purple_prefs_add_string("/core/away/auto_reply", "awayidle");
+		purple_prefs_add_string("/purple/away/auto_reply", "awayidle");
 	}
 	else
 	{
-		if (!purple_prefs_get_bool("/core/away/auto_response/enabled"))
+		if (!purple_prefs_get_bool("/purple/away/auto_response/enabled"))
 		{
-			purple_prefs_add_string("/core/away/auto_reply", "never");
+			purple_prefs_add_string("/purple/away/auto_reply", "never");
 		}
 		else
 		{
-			if (purple_prefs_get_bool("/core/away/auto_response/idle_only"))
+			if (purple_prefs_get_bool("/purple/away/auto_response/idle_only"))
 			{
-				purple_prefs_add_string("/core/away/auto_reply", "awayidle");
+				purple_prefs_add_string("/purple/away/auto_reply", "awayidle");
 			}
 			else
 			{
-				purple_prefs_add_string("/core/away/auto_reply", "away");
+				purple_prefs_add_string("/purple/away/auto_reply", "away");
 			}
 		}
 	}
 
 	/* Buddies */
-	purple_prefs_add_none("/core/buddies");
+	purple_prefs_add_none("/purple/buddies");
 
 	/* Contact Priority Settings */
-	purple_prefs_add_none("/core/contact");
-	purple_prefs_add_bool("/core/contact/last_match", FALSE);
-	purple_prefs_remove("/core/contact/offline_score");
-	purple_prefs_remove("/core/contact/away_score");
-	purple_prefs_remove("/core/contact/idle_score");
+	purple_prefs_add_none("/purple/contact");
+	purple_prefs_add_bool("/purple/contact/last_match", FALSE);
+	purple_prefs_remove("/purple/contact/offline_score");
+	purple_prefs_remove("/purple/contact/away_score");
+	purple_prefs_remove("/purple/contact/idle_score");
 }
 
 void